SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Como se tornar Agile Tester
Como se tornar Agile TesterComo se tornar Agile Tester
Como se tornar Agile TesterElias Nogueira
 
Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorMarcos Pereira
 
Conhecendo os Padrões De Projetos
Conhecendo os Padrões De ProjetosConhecendo os Padrões De Projetos
Conhecendo os Padrões De Projetoscejug
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva minastestingconference
 
Como tornar o testador parte da equipe
Como tornar o testador parte da equipeComo tornar o testador parte da equipe
Como tornar o testador parte da equipeElias Nogueira
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Nunca foi tao facil testar
Nunca foi tao facil testarNunca foi tao facil testar
Nunca foi tao facil testarElias Nogueira
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingSamanta Cicilia
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parecejesuinoPower
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesSamanta Cicilia
 
Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Elias Nogueira
 
[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018Larissa Soares
 
Perspectivas em teste de software
Perspectivas em teste de softwarePerspectivas em teste de software
Perspectivas em teste de softwareQualister
 

La actualidad más candente (20)

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

Destacado

4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
4 Tarefa Plano Aula Bullying Claudia Cunha O IgnacioFAETEC - ETESC
 
Agile Brazil 2013 - Resumo
Agile Brazil 2013 - ResumoAgile Brazil 2013 - Resumo
Agile Brazil 2013 - ResumoBruno Nardini
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
Viva jovem, venha conhecer!
Viva jovem, venha conhecer!Viva jovem, venha conhecer!
Viva jovem, venha conhecer!Rebeca Kaus
 
Introdução aos Servlets e JSPs
Introdução aos Servlets e JSPsIntrodução aos Servlets e JSPs
Introdução aos Servlets e JSPsLuiz Ricardo Silva
 
Semanal fechada 6 ano
Semanal fechada 6 anoSemanal fechada 6 ano
Semanal fechada 6 anoRebeca Kaus
 
O uso dos porquês
O uso dos porquêsO uso dos porquês
O uso dos porquêsRebeca Kaus
 
Padrões de Projeto em Aplicações Web
Padrões de Projeto em Aplicações WebPadrões de Projeto em Aplicações Web
Padrões de Projeto em Aplicações WebJonata Weber
 
Repaso semanal aberta 2 6 ano
Repaso semanal aberta 2 6 anoRepaso semanal aberta 2 6 ano
Repaso semanal aberta 2 6 anoRebeca Kaus
 
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresPrincípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresTchelinux
 
IBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticasIBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticasrodrigoareis
 
Programação estruturada com Java-Aula01
Programação estruturada com Java-Aula01Programação estruturada com Java-Aula01
Programação estruturada com Java-Aula01Elvis Araújo
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com JavaLuiz Ricardo Silva
 
No dumb questions (Stack Overflow em Português)
No dumb questions (Stack Overflow em Português)No dumb questions (Stack Overflow em Português)
No dumb questions (Stack Overflow em Português)Luiz Ricardo Silva
 
Aula diagramas de implementacao 3º periodo uniao
Aula diagramas de implementacao 3º periodo uniaoAula diagramas de implementacao 3º periodo uniao
Aula diagramas de implementacao 3º periodo uniaoMaria Alice Jovinski
 
Reengenharia de Software
Reengenharia de SoftwareReengenharia de Software
Reengenharia de SoftwareRafael Berto
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de ProgramaçãoCarlos Schults
 

Destacado (20)

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

Similar a Boa Práticas no Desenvolvimento Java Enterprise

Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com HudsonLuis Reis
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseDr. Spock
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeGlobalcode
 
Delphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no CódigoDelphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no CódigoJosé Araújo
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 

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

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

Más de Oziel Moreira Neto

Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Usabilidade de Interfaces - Parte 3
Usabilidade de Interfaces - Parte 3Usabilidade de Interfaces - Parte 3
Usabilidade de Interfaces - Parte 3Oziel Moreira Neto
 
Usabilidade de Interfaces - Parte 2
Usabilidade de Interfaces - Parte 2Usabilidade de Interfaces - Parte 2
Usabilidade de Interfaces - Parte 2Oziel Moreira Neto
 
Usabilidade de Interfaces - Parte 1
Usabilidade de Interfaces - Parte 1Usabilidade de Interfaces - Parte 1
Usabilidade de Interfaces - Parte 1Oziel Moreira Neto
 
Introdução aos Métodos Ágeis - Parte II
Introdução aos Métodos Ágeis - Parte IIIntrodução aos Métodos Ágeis - Parte II
Introdução aos Métodos Ágeis - Parte IIOziel Moreira Neto
 
Trabalhando com Centro de Custo e Receita no FIT Business Suite (ADempiere)
Trabalhando com Centro de Custo e Receita no FIT Business Suite (ADempiere)Trabalhando com Centro de Custo e Receita no FIT Business Suite (ADempiere)
Trabalhando com Centro de Custo e Receita no FIT Business Suite (ADempiere)Oziel Moreira Neto
 
A Evolução da Arquitetura de Sistemas Corporativos
A Evolução da Arquitetura de Sistemas CorporativosA Evolução da Arquitetura de Sistemas Corporativos
A Evolução da Arquitetura de Sistemas CorporativosOziel Moreira Neto
 
The Evolution Of Enterprise Application Architecture
The Evolution Of Enterprise Application ArchitectureThe Evolution Of Enterprise Application Architecture
The Evolution Of Enterprise Application ArchitectureOziel Moreira Neto
 

Más de Oziel Moreira Neto (10)

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

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