Você está na página 1de 37

Melhores prticas no desenvolvimento Java

Oziel Moreira Neto Consultor

www.fortitori.com

Novas tecnologias, velhos problemas.

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Processo de construo Gerenciamento Monitoramento Performance Alta disponibilidade Evolutividade Prazo, Custo e Qualidade

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Processo de construo

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 construo Durante os testes Durante a implantao Durante a manuteno

Gerenciar SEMPRE!

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Monitoramento

Gerao e coleta de dados:


da aplicao (esforo nos testes); da infra-estrutura (esforo na implantao); em ambos (esforo na produo); plano de capacidade (usurios X consumo);

Execuo de projees

Monitorar SEMPRE!

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Performance

Irrelevante para os programadores; Lembrado pelos analistas; Esquecido pela implantao; Sofrido pela produo;

Medir a performance SEMPRE!

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Alta disponibilidade

Analistas no se preocupam; Solues inadequadas ou inviveis; Alta complexidade; Preocupao dos Arquitetos;

Arquitetura e modelo computacional!

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Alta disponibilidade

Preocupao dos Arquitetos de Software;

Arquitetura e Padres

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Evolutividade

Manuteno dos sistemas:

como no sou eu que vou ter de arrumar isso, vou deixar assim mesmo... (pensamento dos
programadores)

Preocupao de arquitetos e analistas;

Componentizar para EVOLUIR!

www.fortitori.com

Novas Tecnologias, Velhos Problemas


Prazo, Custo e Qualidade

Preocupao de todos; Lei Universal:

no d para fazer um filho com nove mes em um ms (desconhecido)

Desafio: fazer com qualidade, dentro do prazo e sem custos excessivos.

Como equilibrar?

www.fortitori.com

Melhores prticas.

www.fortitori.com

Melhores prticas

Java Blueprints Design Patterns Modelagem UML Codificao Java Especificaes e Arquitetura Testes

www.fortitori.com

Melhores prticas
Java EE Blueprints

Estudar os Java EE blueprints; Fazer provas de conceitos; No se constri cdigo sem DOMINAR as tecnologias Java EE;

http://www.oracle.com/technetwork/java/javaee/blueprints/index.html

Acumular conhecimento essencial

www.fortitori.com

Melhores prticas
Java EE Design Patterns

Entender e saber aplicar;


http://java.sun.com/blueprints/patterns/

Consenso entre arquitetos e analistas; Resolvem TODOS os problemas sistmicos (aplicao e infra);
http://java.sun.com/blueprints/corej2eepatterns/Patterns/

USAR Design Patterns

www.fortitori.com

Melhores prticas
Modelagem UML

Documentao 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 prticas
Codificao Java

Seguir o padro de codificao 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

No usar mtodos deprecated; No usar Legacy Collections (Vector e Hashtable);

www.fortitori.com

Melhores prticas
Codificao Java

Documentar o cdigo usando JavaDoc;

http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html

Logar SEMPRE, e adequadamente todas as excees capturadas; Manter dados no HttpSession somente se necessrio! (quando?) Escolher as Collections de acordo com seu uso! (Ref. Core Java Vol. II e Java 6 Collections)

www.fortitori.com

Melhores prticas
Codificao Java

Evitar acessar o JNDI a cada transao:

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 prticas
Codificao Java

Envio de e-mail:

sncrono: usar o connector de JavaMail da J2EE! assncrono: combinar JMS com JavaMail (J2EE 1.3>) JAMAIS CONECTAR DIRETAMENTE COM O SMTP;

Quer ter performance? USE o Connector JavaMail!

www.fortitori.com

Melhores prticas
Codificao Java

JDBC: Sempre fechar:


Statement e ResulSet, ao fim das transaes SQL; Connection ao fim da transao Web/EJB;

Durante uma transao Web ou EJB, DEVEMOS usar somente uma Connection;

USE o DAO Pattern!

www.fortitori.com

Melhores prticas
Codificao 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 Parmetros usando os setters;

Quer ter performance? USE Bind de Parmetros!

www.fortitori.com

Melhores prticas
Codificao 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 prticas
Especificaes

Seguir a RISCA as especificaes de codificao da JavaSoft:

funciona no JBOSS mas no funciona no WebSphere (pensamento do desenvolvedor)


http://download.oracle.com/javaee/

OBEDEA as especificaes!

www.fortitori.com

Melhores prticas
Especificaes

Validar os frameworks escolhidos com a especificao e produtos usados:

Struts, Hibernate, Avalon, Xalan, FOP, Spring, etc.

Verifique se o framework suportado!

www.fortitori.com

Melhores prticas
Especificaes

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 prticas
Especificaes

AVK Java Application Verification Kit


Verifica a porcentagem de aderncia da aplicao s especificaes da JavaSoft Indica as falhas permitindo as correes necessrias

http://java.sun.com/j2ee/avk/

www.fortitori.com

Melhores prticas
Arquitetura

80% dos sistemas falham em:


prazo, custo e qualidade; performance, segurana e gerenciamento

A arquitetura da aplicao deve garantir as qualidades sistmicas:

performance, segurana e gerenciamento; prazo, custo e qualidade;

A habilidade da equipe deve garantir:

www.fortitori.com

Melhores prticas
Arquitetura

Usando e aplicando o MVC

www.fortitori.com

Melhores prticas
Arquitetura

Modelo bsico de aplicaes Java EE

www.fortitori.com

Melhores prticas
Arquitetura

Arquitetos de Software so vitais no processo de desenvolvimento, pois:


sistemas distribudos so complexos; muitas tecnologias envolvidas e integradas; modelos orientados objetos; falta de domnio do todo pelos envolvidos; disseminador de conhecimento; validador do uso das boas prticas;

www.fortitori.com

Melhores prticas
Arquitetura

Plataforma Java/J2EE:

muitas tecnologias envolvidas e integradas;

www.fortitori.com

Melhores prticas
Testes

Cada desenvolvedor:

testes unitrios por componente;


validar o cdigo;

Cada equipe:

testes integrados por mdulos;


validar a integrao;

Homologador:

testes integrados funcionais completos;


validar o negcio;

www.fortitori.com

Melhores prticas
Testes

Execuo de testes:

de carga para identificar gargalos; de stress para identificar os nveis de qualidade; JUNIT e CACTUS, Compuware, JProbe, etc.

Ferramentas:

TESTE tudo e sempre!

www.fortitori.com

Melhores prticas
Testes

Controle de BUGs:

usar uma ferramenta de Bug Parade; determinar baselines de entrega; FindBugs, JLint, PMD, CheckStyle, etc.

Ferramentas:

TESTE tudo e sempre!

www.fortitori.com

Servios Profissionais

Consultoria e Servios?

Melhores prticas no desenvolvimento Java


Oziel Moreira Neto oziel.neto@fortitori.com

Perguntas e Respostas