desenvolvendo produtos com java ee
DESCRIPTION
Técnicas e padrões de arquiteturaTRANSCRIPT
![Page 1: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/1.jpg)
Desenvolvendo produtos com Java EETécnicas e padrões de arquitetura
Fábio Ramon
Senac-SP
![Page 2: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/2.jpg)
Objetivos e conteúdo
• Apresentar padrões de arquitetura para o desenvolvimento de produtos na plataforma JEE
• Conteúdo– Produto X Sistema– Requisitos Gerais– Padrões de arquitetura– Frameworks– Conclusão
![Page 3: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/3.jpg)
Produtos versus Sistemas
• Clientes heterogêneos X Cliente específico– Independente do ambiente operacional – Independente da plataforma
• Servidor de aplicação• Banco de dados
– Independente da topologia• DMZ• Cluster / Load Balance
– Look & feel plugável
![Page 4: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/4.jpg)
Produtos versus Sistemas
• Clientes heterogêneos X Cliente específico– Flexível quanto às soluções de terceiros
• Frameworks• Softwares de integração• Softwares de comunicação
– Flexível e conciso quanto às questões de segurança
– Maior independência possível com relação a padrões de arquitetura
![Page 5: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/5.jpg)
Produtos versus Sistemas
• Pontos chaves– Se um produto deve ser:
• Flexível • Independente• Eficiente
– Então o produto necessita:• De uma arquitetura robusta• Ser extremamente modularizável• Ser facilmente extensível
![Page 6: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/6.jpg)
Requisitos gerais de um produto
• Multiplataforma• Escalável• Independente do servidor de aplicação e do
banco de dados• Independente de frameworks• Não ser construído sobre outro produto
específico• Sua homologação não dependa da
homologação de outros produtos ou bibliotecas
![Page 7: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/7.jpg)
Requisitos gerais de um produto
• Padrões fortes de segurança (autenticação, autorização e auditoria)
• Mecanismo flexível e amigável de log• Fácil usabilidade • Interface gráfica totalmente customizável
![Page 8: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/8.jpg)
Conseqüências dos requisitos gerais
• Versão da linguagem Java: 1 ou 2 anterior à versão corrente
• Utilizar somente SQL ANSI• Não se apoiar em características específicas
de nenhum servidor de aplicação ou web container
• Trabalhar com os principais frameworks MVC, de inversão de controle e de persistência
![Page 9: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/9.jpg)
Conseqüências dos requisitos gerais
• Implementar mecanismos eficientes de configuração
• Implementar log e traces finos
Em resumo:– Mais código– Mais controle– Menos recursos de programação
disponíveis
![Page 10: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/10.jpg)
Padrões de arquitetura
• Emprego extensivo de interfaces • Todas as instanciações por fábricas
abstratas• Wrappers, proxies e/ou adaptadores para os
serviços de todos os frameworks empregados
• Desacoplamento entre módulos
![Page 11: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/11.jpg)
Padrões de arquitetura
• Camadas de software bem definidas– Apresentação
• Visualização• Controle• Databind
– Negócio• Serviços• Entidades
– Persistência
![Page 12: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/12.jpg)
Um modelo de arquitetura de produto
![Page 13: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/13.jpg)
Características do modelo
• Classes em azul: superclasses de infra-estrutura da aplicação
• Classes em amarelo: fábricas da infra-estrutura
• Classes em branco: templates de classes da aplicação
![Page 14: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/14.jpg)
Características do modelo
• Camadas da aplicação: – MODELO (MVC)– CONTROLE (MVC)– VISUAL (MVC)– FACHADA (Adaptador ou Wrapper do
negócio)– SERVIÇO (lógica de negócio)– ACESSO DADOS (objetos de negócio e
utilitários de acesso a dados)
![Page 15: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/15.jpg)
Emprego de interfaces
Classe da aplicaçãoInterface da aplicação
![Page 16: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/16.jpg)
Emprego de interfaces
• Possibilita desacoplar componentes• Permite trocar implementação para solução
específica do cliente• Permite introduzir um proxy para um serviço
externo ou remoto como implementação• Facilita desenvolvimento em paralelo dos
diferentes módulos
![Page 17: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/17.jpg)
Fábricas abstratas
![Page 18: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/18.jpg)
Fábricas abstratas
• HomeFactory gera as implementações das fábricas– Configurado por XML
• Implementações podem ser quaisquer:– Instanciadores comuns– Fábricas de frameworks (Spring, etc.)– Homes de EJBs
• Implementações podem fazer a injeção de dependência
![Page 19: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/19.jpg)
Desacoplamento entre módulos
App
Dados
Intranet
Web
Internet
SOAP
XMLRepositório de dados
Acesso aos dados
Componentes de negócio
Regras de apresentação
Conteúdo estático
Cliente magro
![Page 20: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/20.jpg)
Desacoplamento entre módulos
• Dois tipos de módulos:– Módulos do produto– Módulos específicos da instalação
• Módulos específicos podem ser incorporados ao produto
• Montar uma instalação específica consiste em configurar quais módulos pertencem a ela
![Page 21: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/21.jpg)
Conclusão (parte 1)
Desenvolver um produto com Java EE implica atender uma série de requerimentos de arquitetura que não costumam surgir no desenvolvimento de um sistema dedicado. Além das implicações básicas tais como independência do banco de dados e de plataforma, surgem outras necessidades que vão desde a maior flexibilidade nas integrações com outros sistemas, até oferecer um leque maior de tecnologias e frameworks dos quais o produto possa depender.
![Page 22: Desenvolvendo Produtos Com Java EE](https://reader035.vdocuments.site/reader035/viewer/2022062319/5579a4fad8b42ac1148b4a26/html5/thumbnails/22.jpg)
Conclusão (parte 2)
Adotar padrões de arquitetura que permitam, por exemplo, intercambiar frameworks de persistência de dados, garante que o produto possa atingir um mercado maior, sem esbarrar em questões de padrões e políticas permitidos ou não no ambiento do cliente.