Boa Práticas no Desenvolvimento Java Enterprise
-
Upload
oziel-moreira-neto -
Category
Technology
-
view
225 -
download
4
description
Transcript of Boa Práticas no Desenvolvimento Java Enterprise
![Page 1: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/1.jpg)
Melhores práticas no desenvolvimento Java
Oziel Moreira NetoConsultor
![Page 2: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/2.jpg)
www.fortitori.com
Novas tecnologias, velhos problemas.
![Page 3: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/3.jpg)
www.fortitori.com
Novas Tecnologias, Velhos Problemas● Processo de construção● Gerenciamento ● Monitoramento● Performance ● Alta disponibilidade● Evolutividade● Prazo, Custo e Qualidade
![Page 4: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/4.jpg)
www.fortitori.com
● Rational Unififed Process (RUP)● eXtreme Programming (XP)● Scrum● Oriented Object Analisys and Design
Processo de construção
Novas Tecnologias, Velhos Problemas
Quer ter sucesso? Escolha um e USE!
![Page 5: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/5.jpg)
www.fortitori.com
● Inicio do projeto● Durante a construção● Durante os testes● Durante a implantação● Durante a manutenção
Gerenciamento
Novas Tecnologias, Velhos Problemas
Gerenciar SEMPRE!
![Page 6: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/6.jpg)
www.fortitori.com
● Geração e coleta de dados:– da aplicação (esforço nos testes);– da infra-estrutura (esforço na implantação);– em ambos (esforço na produção);
● Execução de projeções– plano de capacidade (usuários X consumo);
Monitoramento
Novas Tecnologias, Velhos Problemas
Monitorar SEMPRE!
![Page 7: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/7.jpg)
www.fortitori.com
● Irrelevante para os programadores;
● Lembrado pelos analistas;● Esquecido pela implantação;● Sofrido pela produção;
Performance
Novas Tecnologias, Velhos Problemas
Medir a performance SEMPRE!
![Page 8: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/8.jpg)
www.fortitori.com
● Analistas não se preocupam;● Soluções inadequadas ou inviáveis;● Alta complexidade;● Preocupação dos Arquitetos;
Alta disponibilidade
Novas Tecnologias, Velhos Problemas
Arquitetura e modelo computacional!
![Page 9: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/9.jpg)
www.fortitori.com
● Preocupação dos Arquitetos de Software;
Alta disponibilidade
Novas Tecnologias, Velhos Problemas
Arquitetura e Padrões
![Page 10: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/10.jpg)
www.fortitori.com
● Manutenção dos sistemas:– “como não sou eu que vou ter de arrumar isso,
vou deixar assim mesmo...” (pensamento dos programadores)
● Preocupação de arquitetos e analistas;
Evolutividade
Novas Tecnologias, Velhos Problemas
Componentizar para EVOLUIR!
![Page 11: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/11.jpg)
www.fortitori.com
● Preocupação de todos;● Lei Universal:
– “não dá para fazer um filho com nove mães em um mês” (desconhecido)
● Desafio: fazer com qualidade, dentro do prazo e sem custos excessivos.
Prazo, Custo e Qualidade
Novas Tecnologias, Velhos Problemas
Como equilibrar?
![Page 12: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/12.jpg)
www.fortitori.com
Melhores práticas.
![Page 13: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/13.jpg)
www.fortitori.com
Melhores práticas
● Java Blueprints● Design Patterns● Modelagem UML● Codificação Java● Especificações e Arquitetura● Testes
![Page 14: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/14.jpg)
www.fortitori.com
● Estudar os Java EE blueprints;http://www.oracle.com/technetwork/java/javaee/blueprints/index.html
● Fazer provas de conceitos;● Não se constrói código sem DOMINAR
as tecnologias Java EE;
Java EE Blueprints
Acumular conhecimento é essencial
Melhores práticas
![Page 15: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/15.jpg)
www.fortitori.com
● Entender e saber aplicar;http://java.sun.com/blueprints/patterns/
● Consenso entre arquitetos e analistas;● Resolvem TODOS os problemas
sistêmicos (aplicação e infra);http://java.sun.com/blueprints/corej2eepatterns/Patterns/
Java EE Design Patterns
USAR Design Patterns
Melhores práticas
![Page 16: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/16.jpg)
www.fortitori.com
● Documentação formal e eficaz;http://www.oracle.com/technetwork/java/javaee/documentation/index.html
● Linguagem comum para analistas, arquitetos, programadores e gerentes;
● Facilitador em todos os processos;
Modelagem UML
MODELE antes de construir!
Melhores práticas
![Page 17: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/17.jpg)
www.fortitori.com
● Seguir o padrão de codificação JavaSoft http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
● Seguir a plataforma adequada:– J2EE 1.4 – J2SE 1.5– Java EE 5 – Java SE 6
● Não usar métodos deprecated;● Não usar Legacy Collections (Vector e
Hashtable);
Codificação Java
Melhores práticas
![Page 18: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/18.jpg)
www.fortitori.com
● Documentar o código usando JavaDoc; http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html
● Logar SEMPRE, e adequadamente todas as exceções capturadas;
● Manter dados no HttpSession somente se necessário! (quando?)
● Escolher as Collections de acordo com seu uso! (Ref. Core Java Vol. II e Java 6 Collections)
Codificação Java
Melhores práticas
![Page 19: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/19.jpg)
www.fortitori.com
● Evitar acessar o JNDI a cada transação:– Usar sempre um ServiceLocator com cache de
EJBHome, DataSource, MailSession, Queue, QueueConnectionFactory, Topic, TopicConnectionFactory ou qualquer recurso corporativo!
Codificação Java
Quer ter performance? USE o ServiceLocator!
Melhores práticas
![Page 20: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/20.jpg)
www.fortitori.com
● Envio de e-mail:– síncrono: usar o connector de JavaMail da J2EE!– assíncrono: combinar JMS com JavaMail (J2EE 1.3>)– JAMAIS CONECTAR DIRETAMENTE COM O SMTP;
Codificação Java
Quer ter performance? USE o Connector JavaMail!
Melhores práticas
![Page 21: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/21.jpg)
www.fortitori.com
● JDBC: Sempre fechar:– Statement e ResulSet, ao fim das transações SQL;– Connection ao fim da transação Web/EJB;
● Durante uma transação Web ou EJB, DEVEMOS usar somente uma Connection;
Codificação Java
USE o DAO Pattern!
Melhores práticas
![Page 22: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/22.jpg)
www.fortitori.com
● JDBC: Evitar executar comandos SQL com Statement;– executar comandos SQL via PreparedStatement;
http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html
– executar StoredProcedures via CallableStatement;http://download.oracle.com/javase/tutorial/jdbc/basics/storedprocedures.html
– em ambos os casos usar Bind de Parâmetros usando os setters;
Codificação Java
Quer ter performance? USE Bind de Parâmetros!
Melhores práticas
![Page 23: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/23.jpg)
www.fortitori.com
● JDBC: Evitar ler ResulSets aninhados;– substitua por SQL Queries usando JOIN;
Codificação Java
Melhores práticas
SQL> SELECT c.course_name, c.period, e.student_name 2 FROM course c, enrollment e 3 WHERE c.course_name = e.course_name 4 AND c.period = e.period
Economize recursos no acesso a dados usando JOINs!
![Page 24: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/24.jpg)
www.fortitori.com
● Seguir a RISCA as especificações de codificação da JavaSoft:– “funciona no JBOSS mas não funciona no
WebSphere” (pensamento do desenvolvedor)
http://download.oracle.com/javaee/
Especificações
OBEDEÇA as especificações!
Melhores práticas
![Page 25: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/25.jpg)
www.fortitori.com
● Validar os frameworks escolhidos com a especificação e produtos usados:– Struts, Hibernate, Avalon, Xalan, FOP, Spring, etc.
Especificações
Verifique se o framework é suportado!
Melhores práticas
![Page 26: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/26.jpg)
www.fortitori.com
● Glassfish: – 2.0 > Java SE 5 e Java EE 5; – 3.0 > Java SE 6 e Java EE 6;
● JBoss AS– 4.0 > Java SE 5 e Java EE 5; – 5.0 > Java SE 6 e Java EE 6;
Especificações
Melhores práticas
![Page 27: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/27.jpg)
www.fortitori.com
● AVK – Java Application Verification Kit– Verifica a porcentagem de aderência da aplicação ás
especificações da JavaSoft – Indica as falhas permitindo as correções necessárias
– http://java.sun.com/j2ee/avk/
Especificações
Melhores práticas
![Page 28: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/28.jpg)
www.fortitori.com
● 80% dos sistemas falham em:– prazo, custo e qualidade;– performance, segurança e gerenciamento
● A arquitetura da aplicação deve garantir as qualidades sistêmicas:– performance, segurança e gerenciamento;
● A habilidade da equipe deve garantir:– prazo, custo e qualidade;
Arquitetura
Melhores práticas
![Page 29: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/29.jpg)
www.fortitori.com
● Usando e aplicando o MVC
Arquitetura
Melhores práticas
![Page 30: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/30.jpg)
www.fortitori.com
● Modelo básico de aplicações Java EE
Arquitetura
Melhores práticas
![Page 31: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/31.jpg)
www.fortitori.com
● Arquitetos de Software são vitais no processo de desenvolvimento, pois:– sistemas distribuídos são complexos;– muitas tecnologias envolvidas e integradas;– modelos orientados á objetos;– falta de domínio do todo pelos envolvidos;– disseminador de conhecimento;– validador do uso das boas práticas;
Arquitetura
Melhores práticas
![Page 32: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/32.jpg)
www.fortitori.com
● Plataforma Java/J2EE:– muitas tecnologias
envolvidas e integradas;
Arquitetura
Melhores práticas
![Page 33: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/33.jpg)
www.fortitori.com
● Cada desenvolvedor:– testes unitários por componente;
validar o código;
● Cada equipe:– testes integrados por módulos;
validar a integração;
● Homologador:– testes integrados funcionais completos;
validar o negócio;
Testes
Melhores práticas
![Page 34: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/34.jpg)
www.fortitori.com
● Execução de testes:– de carga para identificar gargalos;– de stress para identificar os níveis de
qualidade;● Ferramentas:
– JUNIT e CACTUS, Compuware, JProbe, etc.
Testes
TESTE tudo e sempre!
Melhores práticas
![Page 35: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/35.jpg)
www.fortitori.com
● Controle de BUGs:– usar uma ferramenta de Bug Parade;– determinar baselines de entrega;
● Ferramentas:– FindBugs, JLint, PMD, CheckStyle, etc.
Testes
TESTE tudo e sempre!
Melhores práticas
![Page 36: Boa Práticas no Desenvolvimento Java Enterprise](https://reader034.fdocument.pub/reader034/viewer/2022042614/558184e1d8b42a132d8b4cd5/html5/thumbnails/36.jpg)
www.fortitori.com
Consultoria e Serviços?
Serviços Profissionais