SlideShare uma empresa Scribd logo
Melhores práticas no 
desenvolvimento Java 
Oziel Moreira Neto 
Consultor
www.fortitori.com 
Novas tecnologias, 
velhos problemas.
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
● Processo de construção 
● Gerenciamento 
● Monitoramento 
● Performance 
● Alta disponibilidade 
● Evolutividade 
● Prazo, Custo e Qualidade
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Processo de construção 
● Rational Unififed Process (RUP) 
● eXtreme Programming (XP) 
● Scrum 
● Oriented Object Analisys and Design 
Quer ter sucesso? 
Escolha um e USE!
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Gerenciamento 
● Inicio do projeto 
● Durante a construção 
● Durante os testes 
● Durante a implantação 
● Durante a manutenção 
Gerenciar SEMPRE!
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Monitoramento 
● 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); 
Monitorar SEMPRE!
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Performance 
● Irrelevante para os 
programadores; 
● Lembrado pelos analistas; 
● Esquecido pela implantação; 
● Sofrido pela produção; 
Medir a performance SEMPRE!
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Alta disponibilidade 
● Analistas não se preocupam; 
● Soluções inadequadas ou inviáveis; 
● Alta complexidade; 
● Preocupação dos Arquitetos; 
Arquitetura e modelo 
computacional!
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Alta disponibilidade 
● Preocupação dos Arquitetos de 
Software; 
Arquitetura e Padrões
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Evolutividade 
● 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; 
Componentizar para EVOLUIR!
www.fortitori.com 
Novas Tecnologias, 
Velhos Problemas 
Prazo, Custo e Qualidade 
● 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. 
Como equilibrar?
www.fortitori.com 
Melhores práticas.
www.fortitori.com 
Melhores práticas 
● Java Blueprints 
● Design Patterns 
● Modelagem UML 
● Codificação Java 
● Especificações e Arquitetura 
● Testes
www.fortitori.com 
Melhores práticas 
Java EE Blueprints 
● 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; 
Acumular conhecimento é 
essencial
www.fortitori.com 
Melhores práticas 
Java EE Design Patterns 
● 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/ 
USAR Design Patterns
www.fortitori.com 
Melhores práticas 
Modelagem UML 
● 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; 
MODELE antes de construir!
www.fortitori.com 
Melhores práticas 
Codificação Java 
● 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);
www.fortitori.com 
Melhores práticas 
Codificação Java 
● 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)
www.fortitori.com 
Melhores práticas 
Codificação Java 
● 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! 
Quer ter performance? 
USE o ServiceLocator!
www.fortitori.com 
Melhores práticas 
Codificação Java 
● 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; 
Quer ter performance? 
USE o Connector JavaMail!
www.fortitori.com 
Melhores práticas 
Codificação Java 
● 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; 
USE o DAO Pattern!
www.fortitori.com 
Melhores práticas 
Codificação Java 
● 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; 
Quer ter performance? 
USE Bind de Parâmetros!
www.fortitori.com 
Melhores práticas 
Codificação Java 
● JDBC: Evitar ler ResulSets aninhados; 
– substitua por SQL Queries usando JOIN; 
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!
www.fortitori.com 
Melhores práticas 
Especificações 
● 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/ 
OBEDEÇA as especificações!
www.fortitori.com 
Melhores práticas 
Especificações 
● Validar os frameworks escolhidos com 
a especificação e produtos usados: 
– Struts, Hibernate, Avalon, Xalan, FOP, Spring, etc. 
Verifique se o 
framework é suportado!
www.fortitori.com 
Melhores práticas 
Especificações 
● 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;
www.fortitori.com 
Melhores práticas 
Especificações 
● 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/
www.fortitori.com 
Melhores práticas 
Arquitetura 
● 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;
www.fortitori.com 
Melhores práticas 
Arquitetura 
● Usando e aplicando o MVC
www.fortitori.com 
Melhores práticas 
Arquitetura 
● Modelo básico de aplicações Java EE
www.fortitori.com 
Melhores práticas 
Arquitetura 
● 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;
www.fortitori.com 
Melhores práticas 
Arquitetura 
● Plataforma Java/J2EE: 
– muitas tecnologias 
envolvidas 
e integradas;
www.fortitori.com 
Melhores práticas 
● 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
www.fortitori.com 
Melhores práticas 
Testes 
● 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. 
TESTE tudo e sempre!
www.fortitori.com 
Melhores práticas 
Testes 
● Controle de BUGs: 
– usar uma ferramenta de Bug Parade; 
– determinar baselines de entrega; 
● Ferramentas: 
– FindBugs, JLint, PMD, CheckStyle, etc. 
TESTE tudo e sempre!
www.fortitori.com 
Serviços Profissionais 
Consultoria e Serviços?
Melhores práticas no 
desenvolvimento Java 
Oziel Moreira Neto 
oziel.neto@fortitori.com 
Perguntas 
e 
Respostas

Mais conteúdo relacionado

PPTX
#Moving br workshop
PDF
Agile Testing - entregando valor do início a fim
PDF
Como integrar um Agile Tester no seu time
PDF
DevCamp - O papel de um testador em uma equipe ágil
PDF
[MTC 2021] Vieses da qualidade - Daniele Vieira Fiorot
PDF
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
PPTX
Refactoring
PDF
Boas práticas no desenvolvimento de software através do uso de TDD
#Moving br workshop
Agile Testing - entregando valor do início a fim
Como integrar um Agile Tester no seu time
DevCamp - O papel de um testador em uma equipe ágil
[MTC 2021] Vieses da qualidade - Daniele Vieira Fiorot
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
Refactoring
Boas práticas no desenvolvimento de software através do uso de TDD

Mais procurados (20)

PDF
Como se tornar Agile Tester
PDF
Anatomia do JSF – JavaServer Faces
PPTX
[DevOps Carioca] Testes Automatizados
PDF
A Carreira de Desenvolvedor: do Jr ao Sênior
PDF
TDC 2016 Trilha Testes - Floripa
PDF
Conhecendo os Padrões De Projetos
PDF
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
PDF
Como tornar o testador parte da equipe
PPTX
Importância de Testes Automatizados para Continuous Delivery & DevOps
PPTX
WTM - Entrega Contínua
PPT
PPTX
Nunca foi tao facil testar
PPTX
O Spring está morto! Viva o Spring!
PDF
MTC - Automatizando Visual Regression Testing
PDF
Java não é tão difícil quanto parece
PDF
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
PPTX
QA além da automação
PDF
Automação de Teste - BRATESTE 2010
PDF
[Karla e Larissa] Agile Brazil 2018
PDF
Perspectivas em teste de software
Como se tornar Agile Tester
Anatomia do JSF – JavaServer Faces
[DevOps Carioca] Testes Automatizados
A Carreira de Desenvolvedor: do Jr ao Sênior
TDC 2016 Trilha Testes - Floripa
Conhecendo os Padrões De Projetos
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
Como tornar o testador parte da equipe
Importância de Testes Automatizados para Continuous Delivery & DevOps
WTM - Entrega Contínua
Nunca foi tao facil testar
O Spring está morto! Viva o Spring!
MTC - Automatizando Visual Regression Testing
Java não é tão difícil quanto parece
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
QA além da automação
Automação de Teste - BRATESTE 2010
[Karla e Larissa] Agile Brazil 2018
Perspectivas em teste de software
Anúncio

Destaque (20)

PPT
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
PDF
Agile Brazil 2013 - Resumo
PDF
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
PDF
Viva jovem, venha conhecer!
PPTX
Introdução aos Servlets e JSPs
PDF
Semanal fechada 6 ano
PDF
O uso dos porquês
PPTX
Padrões de Projeto em Aplicações Web
PPT
Certificações Java
PDF
Repaso semanal aberta 2 6 ano
PDF
Roteiro 6 ano
PDF
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
PDF
IBM Web Content Management - Melhores práticas
PDF
Programação estruturada com Java-Aula01
PPTX
Programação "Estruturada" com Java
PPTX
No dumb questions (Stack Overflow em Português)
PDF
Aula diagramas de implementacao 3º periodo uniao
PPTX
Pensando TDD
PPTX
Reengenharia de Software
PDF
10 Boas Práticas de Programação
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
Agile Brazil 2013 - Resumo
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Viva jovem, venha conhecer!
Introdução aos Servlets e JSPs
Semanal fechada 6 ano
O uso dos porquês
Padrões de Projeto em Aplicações Web
Certificações Java
Repaso semanal aberta 2 6 ano
Roteiro 6 ano
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
IBM Web Content Management - Melhores práticas
Programação estruturada com Java-Aula01
Programação "Estruturada" com Java
No dumb questions (Stack Overflow em Português)
Aula diagramas de implementacao 3º periodo uniao
Pensando TDD
Reengenharia de Software
10 Boas Práticas de Programação
Anúncio

Semelhante a Boa Práticas no Desenvolvimento Java Enterprise (20)

PPTX
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
KEY
Integração Contínua com Hudson
PDF
Desenvolvimento baseado em componentes com JSF
PDF
Introdução ao RUP
PDF
Vraptor 3
PDF
TDC2011: Arquitetura de Software Enterprise
PDF
Macro Arquitetura de Software
ODP
Apresentação java
PDF
Certificação Java
PPT
Introdução ao XP
PDF
Curso HTML 5 - Aula Inicial
PDF
Google Web Toolkit
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
PPTX
Menos teste e mais qualidade - como equilibrar essa equação?
PDF
Automação de Testes - How to do It Right
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
DOCX
Academia do Arquiteto Globalcode
ODP
Delphi Conference 2012 - Qualidade no Código
PDF
Qualidade de software com Visual Studio ALM
PDF
Palestra Zend Framework na Campus Party 2011
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Integração Contínua com Hudson
Desenvolvimento baseado em componentes com JSF
Introdução ao RUP
Vraptor 3
TDC2011: Arquitetura de Software Enterprise
Macro Arquitetura de Software
Apresentação java
Certificação Java
Introdução ao XP
Curso HTML 5 - Aula Inicial
Google Web Toolkit
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
Menos teste e mais qualidade - como equilibrar essa equação?
Automação de Testes - How to do It Right
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Academia do Arquiteto Globalcode
Delphi Conference 2012 - Qualidade no Código
Qualidade de software com Visual Studio ALM
Palestra Zend Framework na Campus Party 2011

Mais de Oziel Moreira Neto (10)

PDF
Linguagem de Programação Java para Iniciantes
PDF
Usabilidade de Interfaces - Parte 3
PDF
Usabilidade de Interfaces - Parte 2
PDF
Usabilidade de Interfaces - Parte 1
PPTX
Introdução aos Métodos Ágeis - Parte II
DOCX
Trabalhando com Centro de Custo e Receita no FIT Business Suite (ADempiere)
PDF
Gestão Empresarial Integrada
PDF
A Evolução da Arquitetura de Sistemas Corporativos
PDF
The Evolution Of Enterprise Application Architecture
PDF
Lpj i ads2_apresentacao_aulas
Linguagem de Programação Java para Iniciantes
Usabilidade de Interfaces - Parte 3
Usabilidade de Interfaces - Parte 2
Usabilidade de Interfaces - Parte 1
Introdução aos Métodos Ágeis - Parte II
Trabalhando com Centro de Custo e Receita no FIT Business Suite (ADempiere)
Gestão Empresarial Integrada
A Evolução da Arquitetura de Sistemas Corporativos
The Evolution Of Enterprise Application Architecture
Lpj i ads2_apresentacao_aulas

Último (19)

PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Processos na gestão de transportes, TM100 Col18
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Apple Pippin Uma breve introdução. - David Glotz
Aula04-Academia Heri- Tecnologia Geral 2025
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Processos na gestão de transportes, TM100 Col18
COBITxITIL-Entenda as diferença em uso governança TI
Aula 18 - Manipulacao De Arquivos python
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14

Boa Práticas no Desenvolvimento Java Enterprise

  • 1. Melhores práticas no desenvolvimento Java Oziel Moreira Neto Consultor
  • 3. www.fortitori.com Novas Tecnologias, Velhos Problemas ● Processo de construção ● Gerenciamento ● Monitoramento ● Performance ● Alta disponibilidade ● Evolutividade ● Prazo, Custo e Qualidade
  • 4. www.fortitori.com Novas Tecnologias, Velhos Problemas Processo de construção ● Rational Unififed Process (RUP) ● eXtreme Programming (XP) ● Scrum ● Oriented Object Analisys and Design Quer ter sucesso? Escolha um e USE!
  • 5. www.fortitori.com Novas Tecnologias, Velhos Problemas Gerenciamento ● Inicio do projeto ● Durante a construção ● Durante os testes ● Durante a implantação ● Durante a manutenção Gerenciar SEMPRE!
  • 6. www.fortitori.com Novas Tecnologias, Velhos Problemas Monitoramento ● 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); Monitorar SEMPRE!
  • 7. www.fortitori.com Novas Tecnologias, Velhos Problemas Performance ● Irrelevante para os programadores; ● Lembrado pelos analistas; ● Esquecido pela implantação; ● Sofrido pela produção; Medir a performance SEMPRE!
  • 8. www.fortitori.com Novas Tecnologias, Velhos Problemas Alta disponibilidade ● Analistas não se preocupam; ● Soluções inadequadas ou inviáveis; ● Alta complexidade; ● Preocupação dos Arquitetos; Arquitetura e modelo computacional!
  • 9. www.fortitori.com Novas Tecnologias, Velhos Problemas Alta disponibilidade ● Preocupação dos Arquitetos de Software; Arquitetura e Padrões
  • 10. www.fortitori.com Novas Tecnologias, Velhos Problemas Evolutividade ● 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; Componentizar para EVOLUIR!
  • 11. www.fortitori.com Novas Tecnologias, Velhos Problemas Prazo, Custo e Qualidade ● 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. Como equilibrar?
  • 13. www.fortitori.com Melhores práticas ● Java Blueprints ● Design Patterns ● Modelagem UML ● Codificação Java ● Especificações e Arquitetura ● Testes
  • 14. www.fortitori.com Melhores práticas Java EE Blueprints ● 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; Acumular conhecimento é essencial
  • 15. www.fortitori.com Melhores práticas Java EE Design Patterns ● 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/ USAR Design Patterns
  • 16. www.fortitori.com Melhores práticas Modelagem UML ● 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; MODELE antes de construir!
  • 17. www.fortitori.com Melhores práticas Codificação Java ● 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);
  • 18. www.fortitori.com Melhores práticas Codificação Java ● 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)
  • 19. www.fortitori.com Melhores práticas Codificação Java ● 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! Quer ter performance? USE o ServiceLocator!
  • 20. www.fortitori.com Melhores práticas Codificação Java ● 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; Quer ter performance? USE o Connector JavaMail!
  • 21. www.fortitori.com Melhores práticas Codificação Java ● 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; USE o DAO Pattern!
  • 22. www.fortitori.com Melhores práticas Codificação Java ● 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; Quer ter performance? USE Bind de Parâmetros!
  • 23. www.fortitori.com Melhores práticas Codificação Java ● JDBC: Evitar ler ResulSets aninhados; – substitua por SQL Queries usando JOIN; 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!
  • 24. www.fortitori.com Melhores práticas Especificações ● 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/ OBEDEÇA as especificações!
  • 25. www.fortitori.com Melhores práticas Especificações ● Validar os frameworks escolhidos com a especificação e produtos usados: – Struts, Hibernate, Avalon, Xalan, FOP, Spring, etc. Verifique se o framework é suportado!
  • 26. www.fortitori.com Melhores práticas Especificações ● 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;
  • 27. www.fortitori.com Melhores práticas Especificações ● 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/
  • 28. www.fortitori.com Melhores práticas Arquitetura ● 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;
  • 29. www.fortitori.com Melhores práticas Arquitetura ● Usando e aplicando o MVC
  • 30. www.fortitori.com Melhores práticas Arquitetura ● Modelo básico de aplicações Java EE
  • 31. www.fortitori.com Melhores práticas Arquitetura ● 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;
  • 32. www.fortitori.com Melhores práticas Arquitetura ● Plataforma Java/J2EE: – muitas tecnologias envolvidas e integradas;
  • 33. www.fortitori.com Melhores práticas ● 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
  • 34. www.fortitori.com Melhores práticas Testes ● 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. TESTE tudo e sempre!
  • 35. www.fortitori.com Melhores práticas Testes ● Controle de BUGs: – usar uma ferramenta de Bug Parade; – determinar baselines de entrega; ● Ferramentas: – FindBugs, JLint, PMD, CheckStyle, etc. TESTE tudo e sempre!
  • 36. www.fortitori.com Serviços Profissionais Consultoria e Serviços?
  • 37. Melhores práticas no desenvolvimento Java Oziel Moreira Neto oziel.neto@fortitori.com Perguntas e Respostas