Como sobreviver com Java 2? Saulo Arruda Agenda • • • • • Apresentação Contexto do mercado Soluções para Java 5+ Soluções para Java 2 Conclusões Apresentação • • • • • • Saulo Arruda (http://sauloarruda.eti.br) Trabalha com Java desde 2002 Coordenador do JUG-MS Gerente de Produção da Agence Instrutor do SENAC/MS Trabalha em projetos em Java para Honda, Toyota, Bradesco, Brasil Telecom Apresentação • Quem usa Java? • Quem usa JEE? • Frameworks: Spring, Hibernate, Struts, JSF, JPA, Submacro, outros? • Java 2 ou Java 5+ Agenda • • • • • Apresentação Contexto do mercado Soluções para Java 5+ Soluções para Java 2 Conclusões Servidores de Aplicação • Grandes empresas que usam Java, dependem de um Servidor de Aplicação (Application Server, ou simplesmente AS) para execução de Aplicações JEE. • Componentes de um AS: – Container Web (Servlet/JSP) e EJB – Webservices, SOA, Rules Engines – Cluster, monitoramento AS Disponíveis • Os principais servidores de aplicação do mercado dão suporte à JEE 5 [1] AS Usados • Porém, as empresas não usam a última versão por uma questão de CUSTO • OK, mas falando de JDK, os principais Servidores de Aplicação USADOS pelo mercado ainda não usam JEE 5: – IBM Websphere 6.0 (IBM JDK 1.4 / J2EE 1.4) – Oracle AS 9i (SUN JDK 1.3 / J2EE 1.3) – BEA Weblogic 8.1 (BEA JRockit 1.4 / J2EE 1.3) Custo de Migração • No quesito CUSTO, devemos considerar: – Licença do servidor de aplicação – Horas para instalação do novo ambiente – Horas para migração das aplicações – Horas para teste integrado – Prazo para implantação – Prejuízos decorrentes de problemas após a migração Resumindo • Até que o fornecedor do AS continue dando suporte à plataforma “antiga”, a migração provavelmente não será feita. • Logo... Sua aplicação deverá ser compatível com a plataforma (JRE 1.4/ J2EE 1.4) até que a migração aconteça. • Previsão: 2010 (daminha bola de cristal) Agenda • • • • • Apresentação Contexto do mercado Soluções para Java 5+ Soluções para Java 2 Conclusões Especificação JEE 5 [2] • Foco na facilidade reduzindo necessidade configuração com o uso de Annotations • EJB (Enterprise Java Beans) 3.0 • JPA (Java Persistence API) 1.0 • JSF (JavaServer Faces) 1.2 • JAX-WS (Java API for XML-Based Web Services) 2.0 J2EE 1.4 vs JEE 5 [2] Aplicação Item Medido J2EE 1.4 Adventure No. de Classes 67 Builder Linhas de Cód. 3.284 RosterApp No. de Classes 17 Linhas de Cód. 987 Arquivos XML 9 Linhas de XML 782 JEE 5 Melhoria 43 2.777 7 716 2 26 36% menos classes 15% menos código 27% menos classes 27% menos código 78% menos arq. XML 97% menos cód. XML Benefícios [2] • Injeção de Dependências @Resource private DataSource iscDS; • Controle Transacional @TransactionAttribute(MANDATORY) • Mapeamento Objeto Relacional @Entity public class Pessoa { @Id private Integer id; } @PersistenceContext EntityManager em; Benefícios [2] • POJOs de Negócio e Webservices @WebService(name=“pessoaService”) @Stateless public class PessoaServiceBean implements PessoaService • JavaServer Faces Managed Beans public class PessoaMB { private Pessoa pessoa; public void salvar() {…} } Benefícios [3] • IDEs mais completas • Vários fornecedores para as especificações (JPA, JSF) • Componentes JSF de prateleira • Testabilidade sem servidor JEE • Menos extensões proprietárias do AS Agenda • • • • • Apresentação Contexto do mercado Soluções para Java 5+ Soluções para Java 2 Conclusões Limitadores • O uso de Annotations é o maior limitador para a adoção de novas tecnologias • A maioria dos bons frameworks na sua última versão são compatíveis com J2EE 1.4, mas não com 1.3 • Limitações da especificações J2EE 1.3 (especialmente Servlet e JSP) Frameworks • • • • • • Persistência: Hibernate 3.2, Spring JDBC IoC e DI: Spring Framework 2.5 Template (Web): SiteMesh 2.3 Teste de Unidade: JUnit 3.8 Web: Spring MVC 2.5, WebWork 2.2 Webservices: XFire 1.2 Servidores de Aplicação • O único requisito para o uso dos frameworks propostos é J2EE 1.4: – JBoss 4.0, IBM Websphere 6.0, BEA Weblogic 9.2, Oracle OC4J 10.1.3, Geronimo 1.0-M5, JOnAS 4.4, Sun AS 8, Tomcat 5.5 e Jetty 5 (isso mesmo!) • Isto é, boa parte dos AS usados atualmente pelo mercado! Dependências • Na prática, usando os frameworks citados, seu ambiente deve ser compatível com: – Servlet 2.4 – JSP 2.0 – JRE/JDK 1.4 • Não usa EJB, mas garante escalabilidade para grandes sistemas Agenda • • • • • Apresentação Contexto do mercado Soluções para Java 5+ Soluções para Java 2 Conclusões Arquitetura • Boa notícia: É possível desenvolver aplicações sem EJB! • JPA é a consagração do sucesso do Hibernate • JSF pega as melhores idéias de todos os frameworks Web • XFire é webservice “mamão com açúcar” Vantagens de Java 2 • Arquitetura “simples”, com pouca de pendência do Servidor de Aplicação • Frameworks mais maduros, com menos ocorrência de bugs ou evoluções • Java “garante” compatibilidade retroativa Desvantagens de Java 2 • A aplicação não usa os padrões de mercado (especificações) e por isso os componentes devem parar de evoluir • Uso de JRE menos performática • JEE 5 é mais produtivo para o desenvolvedor Perguntas? • • • • • • Devo usar Spring Framework? E JBoss Seam? Qual melhor servidor de aplicação? Hibernate ou JPA? Spring MVC, Struts ou JSF? Como ficar rico? Obrigado! Saulo Arruda http://sauloarruda.eti.br [email protected] Licença Referências [1] SUN MICROSYSTEMS; Java EE Compatibility. Disponível em http://java.sun.com/javaee/overview/compatibility.jsp. [2] STEANS, John; CHINNICI, Roberto; et al.; An Introduction to the Java EE 5 Plataform. Sun Microsystems: 2006, Disponível em http://java.sun.com/developer/technicalArticles/J2EE/intro_ee5/. [3] BRIENS, Adams; Java EE 5 vs J2EE 1.4 and some arguments for switching. Disponível em http://adam-bien.com/roller/abien/entry/java_ee_5_vs_j2ee.