Maio/2009 Java EE: soluções para o mundo corporativo Thiago Faria de Andrade [email_address] www.openk.com.br
Palestrante
Palestrante Thiago Faria de Andrade Programador há 13 anos Bacharel em Sistemas de Informação – FPU Diretor de treinamentos da OpenK Tecnologia Arquiteto, desenvolvedor e instrutor Java 7 anos de experiência com Java Certificado como programador pela Sun (SCJP)
Agenda
Agenda O que é Java EE? Arquitetura de referência Persistência de dados Regras de negócio Serviços web Interface com usuário Relatórios Gráficos Rotinas Envio de e-mail Autenticação e autorização Servidor de aplicação
O que é Java EE?
O que é Java EE? Plataforma de programação Java para aplicações multi-camadas Suporta componentes que são implantados em servidores de aplicações Padrão de desenvolvimento corporativo em Java Possui uma série de especificações, como JSP, Servlets, JSTL, JSF, JPA, JTA, EJB, etc.
Arquitetura de referência
Arquitetura de referência Modelo de solução para sistemas corporativos Não é a única solução e nem a melhor Auxilia pessoas com menos experiência na definição de uma boa arquitetura Flexível para mudanças de tecnologias usadas nas diversas camadas Funciona para implementar a maioria dos sistemas corporativos com baixa complexidade Modelos semelhantes amplamente utilizados em todo o mundo A OpenK utiliza variações desse modelo em diversos clientes e produtos
Arquitetura de referência Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Persistência de dados
Persistência de dados Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Persistência de dados Armazenamento não-volátil de dados Normalmente realizada em bancos de dados Uso da JPA para produtividade e transparência de banco de dados Hibernate como implementação da JPA Uso do padrão DAO para abstração da camada de acesso a dados Mapeamento do banco de dados através de anotações da JPA Cada entidade deve possuir um DAO com métodos para consultas, inserção, atualização e exclusão (somente o necessário) Quando usamos EJB, cada DAO pode ser um Stateless Session Bean
Persistência de dados Código-fonte
Regras de negócio
Regras de negócio Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Regras de negócio Inteligência do sistema (backend) Realiza cálculos, consistências, etc Deve ser independente de banco de dados (foco no negócio) Não deve ter acesso a componentes da tela (é um erro passar como parâmetro objetos que estão fortemente acoplados a camada de visualização) Uso de DI (injeção de dependência) para acessar objetos de acesso a dados Quando usamos EJB, pode ser um Stateless Session Bean
Regras de negócio Código-fonte
Serviços web
Serviços web Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Serviços web Webservices são usados para fornecer serviços remotos para outros sistemas da empresa e para o público externo (clientes, parceiros, fornecedores, etc) Os webservices devem realizar regras de negócio! Cuidado para não criar vários serviços apenas para expor dados e deixar a lógica sobre responsabilidade do consumidor do serviço Os serviços devem ter granularidade mais grossa São configurados com apenas algumas anotações
Serviços web Código-fonte
Interface com usuário
Interface com usuário Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Interface com usuário Implementação da interface visual (painéis, botões, campos, etc) Resposta aos estímulos dos usuários e chamadas às regras de negócio Não deve possuir regras de negócio, mas apenas regras de apresentação JSF é a especificação padrão para desenvolvimento de UI, principalmente para web Existem outros bons frameworks para a camada de apresentação, porém apenas JSF é uma especificação Um sistema “perfeito” em sua arquitetura, mas pobre de visual, não gera credibilidade alguma para os usuários Existem diversas bibliotecas de componentes ricos em JSF (Richfaces, Icefaces, etc)
Interface com usuário Código-fonte
Relatórios
Relatórios Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Relatórios Documentos para impressão e análise, com informações valiosas extraídas normalmente do banco de dados O ideal é que não possua queries SQL no código-fonte dos relatórios (facilita a manutenção e independência de banco de dados) JasperReports é um excelente framework para geração de relatórios em Java É possível criar relatórios com tabelas cruzadas, gráficos, códigos de barras e etc Existe suporte para diversas saídas, como PDF, HTML, XLS, etc O código-fonte do relatório é um arquivo XML (JRXML) iReport é uma ferramenta visual para edição do JRXML
Relatórios Código-fonte
Gráficos
Gráficos Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Gráficos Gráficos são excelentes indicadores para descobrir se alguma coisa está indo bem ou mal, e por isso os usuários adoram (principalmente executivos) JFreeChart é uma biblioteca para geração de gráficos de diversos tipos Para web, a saída dos gráficos pode ser JPG, GIF ou PNG Pode-se criar um Servlet que executa um método de negócio (que retorna informações valiosas), e esse Servlet gera o gráfico (através do JFreeChart) e envia o fluxo de dados para a saída Diversas bibliotecas JSF possuem componentes para geração de gráficos, mas nem sempre esses componentes serão suficientes para o que você precisa
Gráficos Código-fonte
Rotinas
Rotinas Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Rotinas Rotinas são tarefas planejadas para serem executadas em um período pré-definido Existem diversas maneiras de programar rotinas em ambientes Java EE (anotações, XML, código-fonte, etc) Uma forma interessante é com a utilização do Quartz Framework A programação do agendamento de execução pode ser feita através de expressões  cron , o que garante bastante flexibilidade
Rotinas Código-fonte
Envio de e-mail
Envio de e-mail Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Envio de e-mail Praticamente todas as aplicações precisam enviar algum tipo de e-mail para os usuários JavaMail API é uma forma fácil de trabalhar com e-mails em diversos protocolos Diversos servidores de aplicações fornecem componentes prontos para envio de e-mails (basta configurá-los)
Envio de e-mail Código-fonte
Autenticação e autorização
Autenticação e autorização Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Autenticação e autorização Um bom mecanismo de autenticação e autorização é extremamente importante, porém muitas das vezes esse assunto é deixado de lado Autenticação é a verificação se as informações de login informadas pelo usuário estão corretas Autorização é o controle de acesso aos recursos de um sistema através do usuário identificado (previamente autenticado) A API padrão do Java para isso é o JAAS (Java Authentication and Authorization Service) Os servidores de aplicações já implementam alguns módulos de autenticação que podem ser reaproveitados
Autenticação e autorização Código-fonte
Servidor de aplicação
Autenticação e autorização Servidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
Servidor de aplicação Ambiente para instalação e execução das aplicações Existem diversos AS (application servers)  open-source , como JBoss, Glassfish, Geronimo, etc Usamos o JBoss por ser bastante popular na comunidade Java, porém os outros servidores também merecem ser avaliados Apesar da grande popularidade que estava adquirindo, ainda não se sabe o futuro do Glassfish com a aquisição da Sun pela Oracle
Perguntas? Thiago Faria de Andrade [email_address] http://www.openk.com.br http://blog.openk.com.br Obrigado!

Java EE: soluções para o mundo corporativo

  • 1.
    Maio/2009 Java EE:soluções para o mundo corporativo Thiago Faria de Andrade [email_address] www.openk.com.br
  • 2.
  • 3.
    Palestrante Thiago Fariade Andrade Programador há 13 anos Bacharel em Sistemas de Informação – FPU Diretor de treinamentos da OpenK Tecnologia Arquiteto, desenvolvedor e instrutor Java 7 anos de experiência com Java Certificado como programador pela Sun (SCJP)
  • 4.
  • 5.
    Agenda O queé Java EE? Arquitetura de referência Persistência de dados Regras de negócio Serviços web Interface com usuário Relatórios Gráficos Rotinas Envio de e-mail Autenticação e autorização Servidor de aplicação
  • 6.
    O que éJava EE?
  • 7.
    O que éJava EE? Plataforma de programação Java para aplicações multi-camadas Suporta componentes que são implantados em servidores de aplicações Padrão de desenvolvimento corporativo em Java Possui uma série de especificações, como JSP, Servlets, JSTL, JSF, JPA, JTA, EJB, etc.
  • 8.
  • 9.
    Arquitetura de referênciaModelo de solução para sistemas corporativos Não é a única solução e nem a melhor Auxilia pessoas com menos experiência na definição de uma boa arquitetura Flexível para mudanças de tecnologias usadas nas diversas camadas Funciona para implementar a maioria dos sistemas corporativos com baixa complexidade Modelos semelhantes amplamente utilizados em todo o mundo A OpenK utiliza variações desse modelo em diversos clientes e produtos
  • 10.
    Arquitetura de referênciaServidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 11.
  • 12.
    Persistência de dadosServidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 13.
    Persistência de dadosArmazenamento não-volátil de dados Normalmente realizada em bancos de dados Uso da JPA para produtividade e transparência de banco de dados Hibernate como implementação da JPA Uso do padrão DAO para abstração da camada de acesso a dados Mapeamento do banco de dados através de anotações da JPA Cada entidade deve possuir um DAO com métodos para consultas, inserção, atualização e exclusão (somente o necessário) Quando usamos EJB, cada DAO pode ser um Stateless Session Bean
  • 14.
  • 15.
  • 16.
    Regras de negócioServidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 17.
    Regras de negócioInteligência do sistema (backend) Realiza cálculos, consistências, etc Deve ser independente de banco de dados (foco no negócio) Não deve ter acesso a componentes da tela (é um erro passar como parâmetro objetos que estão fortemente acoplados a camada de visualização) Uso de DI (injeção de dependência) para acessar objetos de acesso a dados Quando usamos EJB, pode ser um Stateless Session Bean
  • 18.
    Regras de negócioCódigo-fonte
  • 19.
  • 20.
    Serviços web Servidorde aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 21.
    Serviços web Webservicessão usados para fornecer serviços remotos para outros sistemas da empresa e para o público externo (clientes, parceiros, fornecedores, etc) Os webservices devem realizar regras de negócio! Cuidado para não criar vários serviços apenas para expor dados e deixar a lógica sobre responsabilidade do consumidor do serviço Os serviços devem ter granularidade mais grossa São configurados com apenas algumas anotações
  • 22.
  • 23.
  • 24.
    Interface com usuárioServidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 25.
    Interface com usuárioImplementação da interface visual (painéis, botões, campos, etc) Resposta aos estímulos dos usuários e chamadas às regras de negócio Não deve possuir regras de negócio, mas apenas regras de apresentação JSF é a especificação padrão para desenvolvimento de UI, principalmente para web Existem outros bons frameworks para a camada de apresentação, porém apenas JSF é uma especificação Um sistema “perfeito” em sua arquitetura, mas pobre de visual, não gera credibilidade alguma para os usuários Existem diversas bibliotecas de componentes ricos em JSF (Richfaces, Icefaces, etc)
  • 26.
  • 27.
  • 28.
    Relatórios Servidor deaplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 29.
    Relatórios Documentos paraimpressão e análise, com informações valiosas extraídas normalmente do banco de dados O ideal é que não possua queries SQL no código-fonte dos relatórios (facilita a manutenção e independência de banco de dados) JasperReports é um excelente framework para geração de relatórios em Java É possível criar relatórios com tabelas cruzadas, gráficos, códigos de barras e etc Existe suporte para diversas saídas, como PDF, HTML, XLS, etc O código-fonte do relatório é um arquivo XML (JRXML) iReport é uma ferramenta visual para edição do JRXML
  • 30.
  • 31.
  • 32.
    Gráficos Servidor deaplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 33.
    Gráficos Gráficos sãoexcelentes indicadores para descobrir se alguma coisa está indo bem ou mal, e por isso os usuários adoram (principalmente executivos) JFreeChart é uma biblioteca para geração de gráficos de diversos tipos Para web, a saída dos gráficos pode ser JPG, GIF ou PNG Pode-se criar um Servlet que executa um método de negócio (que retorna informações valiosas), e esse Servlet gera o gráfico (através do JFreeChart) e envia o fluxo de dados para a saída Diversas bibliotecas JSF possuem componentes para geração de gráficos, mas nem sempre esses componentes serão suficientes para o que você precisa
  • 34.
  • 35.
  • 36.
    Rotinas Servidor deaplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 37.
    Rotinas Rotinas sãotarefas planejadas para serem executadas em um período pré-definido Existem diversas maneiras de programar rotinas em ambientes Java EE (anotações, XML, código-fonte, etc) Uma forma interessante é com a utilização do Quartz Framework A programação do agendamento de execução pode ser feita através de expressões cron , o que garante bastante flexibilidade
  • 38.
  • 39.
  • 40.
    Envio de e-mailServidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 41.
    Envio de e-mailPraticamente todas as aplicações precisam enviar algum tipo de e-mail para os usuários JavaMail API é uma forma fácil de trabalhar com e-mails em diversos protocolos Diversos servidores de aplicações fornecem componentes prontos para envio de e-mails (basta configurá-los)
  • 42.
    Envio de e-mailCódigo-fonte
  • 43.
  • 44.
    Autenticação e autorizaçãoServidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 45.
    Autenticação e autorizaçãoUm bom mecanismo de autenticação e autorização é extremamente importante, porém muitas das vezes esse assunto é deixado de lado Autenticação é a verificação se as informações de login informadas pelo usuário estão corretas Autorização é o controle de acesso aos recursos de um sistema através do usuário identificado (previamente autenticado) A API padrão do Java para isso é o JAAS (Java Authentication and Authorization Service) Os servidores de aplicações já implementam alguns módulos de autenticação que podem ser reaproveitados
  • 46.
  • 47.
  • 48.
    Autenticação e autorizaçãoServidor de aplicações Consumidores de WS Negócio Persistência Relatórios Gráficos WebServices Rotinas DB UI Usuário
  • 49.
    Servidor de aplicaçãoAmbiente para instalação e execução das aplicações Existem diversos AS (application servers) open-source , como JBoss, Glassfish, Geronimo, etc Usamos o JBoss por ser bastante popular na comunidade Java, porém os outros servidores também merecem ser avaliados Apesar da grande popularidade que estava adquirindo, ainda não se sabe o futuro do Glassfish com a aquisição da Sun pela Oracle
  • 50.
    Perguntas? Thiago Fariade Andrade [email_address] http://www.openk.com.br http://blog.openk.com.br Obrigado!