Fatos e Mitos do Java EE Fernando Lozano Consultor 4Linux lozano@4linux.com.br
O Que É o Java EE? É um padrão de bibliotecas e componentes (APIs) para a criação de aplicações corporativas Também é um padrão de serviços de infra-estrutura fornecidos por servidores de aplicações Nasceu da necessidade de se padronizar uma plataforma para o desenvolvimento de grandes sistemas corporativos, como ERPs Foca aspectos como segurança, integridade transacional e distribuição Os padrões são definidos por várias empresas, indivíduos e organizações usuárias como parte do JCP (Java Community Process)
Java x Java EE Quando o mercado fala em desenvolvimento Java, na verdade quer dizer Java EE Aplicações Web são aplicações Java EE Mas desenvolvimento Java EE é muito mais do que apenas desenvolvimento Web! Aplicações Java puras seriam aplicações gráficas, desktop, cuja demanda despencou nos últimos anos Ainda assim elas usam componentes, como os de acesso a bancos de dados, definidos como parte do Java EE O Java EE também define padrões e responsabilidades para o fornecedor da infra-estrutura e de ferramentas de desenvolvimento
Benefícios do Java EE Mais fácil de programar (serviços de segurança, gerência de transações, fluxo da interface com o usuário, web services, messageria, logging, etc já estão prontos) Mais fácil de gerenciar (o servidor de aplicações já monitora coisas como tempo de execução de componentes e uso de conexões ao BD) Mais fácil de escalar (alta disponibilidade, clusterização e chamadas distribuídas embutidas no padrão e nos produtos)
Volume faz a diferença! Nenhuma outra plataforma de TI hoje é suportada por tantos fornecedores comerciais e projetos open source Em geral as ofertas para Java EE são mais maduras do que para outros ambientes, incluindo.net e Ruby IDEs Eclipse, Netbeans Testes JUnit, Selenium, JMeter Qualidade de código: FindBugs, PMD, Jdepends Integração Contínia: Hudson, Continuum Segurança: JSSO, Acegi, OWASP Monitoração Zabbix, JOPR, OpenNMS Componentes especializados JFreeChart, ireports, JBoleto, Drolls, Bonita, Quartz, exo JCR, etc
Java EE é só para Java? As APIs e servidores de aplicações Java EE não estão restritos à Linguagem Java, sendo atrelados apenas à Plataforma Java Então é possível desenvolver para Java EE usando PHP, Python, Ruby, Scala, Groovy e outras linguagens executáveis dentro de uma JVM Servidores de Aplicação Java EE podem rodar aplicações nestas linguagens e elas podem usufruir dos serviços da plataforma, como clusterização e pool de conexões ao BD Frameworks escritos para o Java EE, como Hibernate e Spring também podem ser utilizados por linguagens que não o Java
A Popularidade do Java está Caindo?
Google Trends, últimos 12 meses Mundo Brasil
Ofertas de Empregos indeed.com Plataforma Empregos Brasil Empregos EUA Java 7.064 110.596.Net 8.109 109.704 C++ 906 53.991 PHP 3.005 24.045 Ruby 221 13.900 Android 153 9.808 ios 123 6.952 Delphi 1.065 1.688
O Java EE é Aberto? Todos os padrões do JCP JSRs e suas RIs (implementações de referência) estão disponíveis gratuitamente e sem restrições de uso A aderência aos padrões é validada formalmente, via TCKs (testes de compatibilidade) automatizados O JCP Não reinventa a roda, aderindo a padrões definidos por outras organizações como X/Open, OMG, OASIS, W3C e As RIs ou implementações dos padrões do JCP não são necessariamente Software Livre, mas na maioria dos casos não há impedimentos, de modo que temos muitas implementações abertas e certificadas, ex: OpenJDK, Apache Geronimo, JBoss AS
O Java EE é Complicado? Cuidado ao comparar uma plataforma abrangente como o Java EE com um ambiente básico de servidor web + linguagem de script! Grandes sistemas são complicados, e o Java EE ganhou uma fama ruim devido ao seu público-alvo original O Java EE 5 (2006) em diante oferece simplicidade de programação sem abrir mão do poder de fogo das versões anteriores É possível aprender rapidamente a programar Java EE usando apenas JSF, JPA e REST, mas não menospreze os recursos mais avançados como EJB e JMS
O Java EE é Pesado? Benchmarks recentes (e nem tanto) comparam o Java EE favoravelmente contra aplicações C, e servidores de aplicação Java EE até superam servidores web nativos A tecnologia da JVM, especialmente o JIT, tem potencial para maior eficiência no uso de processador Bons algoritmos e técnicas como cache tem maior influência do que o compilador, e o Java EE é o mais evoluído neste aspecto Servidores de aplicação proprietários, baseados em componentes legados pré-java EE (como CORBA) geraram a fama de pesado Hoje temos até aplicações desktop usando um servidor Java EE livres como o Jetty por baixo dos panos!
O Java EE é só para Grandes Empresas? Quando a oferta de produtos Java EE dependia de IBM, Oracle, SAP, etc só haviam alternativas caras e pesadas Mas há anos temos opões leves e livres como JBoss AS, Tomcat e Glassfish Estas opções não devem nada aos concorrentes proprietários e tradicionais, superando-os em muitos aspectos! Um servidor PC comum hoje (Intel ou AMD dual / quadcore com alguns GB de RAM) roda confortavelmente aplicações Java EE para centenas de usuários
O Java EE está Obsoleto? Ambientes como.net basicamente emulam funcionalidades do Java EE, com atraso considerável O foco em simplicidade de linguagens de script como Ruby pode gerar coisas inflexíveis, inexpansíveis e inescaláveis seus sistemas devem ir além da versão 1.0! Se você gosta muito do Rails, rode ele no Java EE, ou use o Grails, que complementa em vez de substituir opções mais maduras como o JPA A inovação real veio de frameworks alternativos para a plataforma Java, como Spring e Hibernate, e suas idéias foram incorporadas nas versões mais recentes do padrão Java EE
O Futuro do Java EE Já temos: ORM, DI e IoC Convention over Configuration Componentes Web 2.0 Conversações REST E isso sem abrir mão da compatibilidade retroativa Aplicações antigas podem ser atualizadas incrementalmente Android é Java! O que ainda Falta? E a Oracle? Analistas de mercado afirmam que a plataforma está bem posicionada para se manter pela próxima década e além como a principal plataforma de desenvolvimento de aplicações
Obrigado lozano@4linux.com.br www.4linux.com.br twitter.com/4linuxbr Tel: 55-11-2125-4747