O documento fornece uma visão geral da plataforma Java e servidores de aplicação. Discute brevemente a história da plataforma Java, as principais especificações da Java EE 6 como Servlets 3.0, JSF 2.0 e JPA 2.0. Também menciona as tecnologias do JBoss Application Server 6 como o servidor de mensagens HornetQ e o framework CDI Weld, além de projetos futuros como o JBoss Application Server 7 e integração com nuvens.
WSO2 Application Server como Alternativa ao Tomcat
Java EE 6 e JBoss 6.0
1.
2. Tema 1
Visão geral da plataforma e servidores de aplicação
Visão geral da Plataforma Java no presente
JBoss Application Server 6
Edgar Silva
Manager, Solutions Architects
Red Hat Brasil
edgar@redhat.com
@jedgarsilva
3. Agenda
• Plataforma Java (Passado, Presente e Futuro)
• Java EE 6.0
• Em breve final: JBoss 6.0
• Em breve: M1 do JBoss 7.0
• Tecnologias Auxiliares
• Mercado
3
3
4. Plataforma Java EE
(Passado, Presente e Futuro)
• Objetivo: Mercado de Componentes
• Players do Passado: HP BlueStone, IPlanet, Oracle,
WebLogic, Borland, IBM, JBoss e outros,
• Players do Presente: Oracle, IBM, JBoss/RedHat
• Realidade:
– Primeiras implementações com pouco pragmatismo!
• Resultado: Contribuições da Comunidade / JCP
• Spring Framework, Hibernate, Seam
– Adições de solicitações da comunidade como a
evolução das Specs.
4
4
6. Servlet 3.0
JSR-315: http://jcp.org/en/jsr/detail?id=315
• Principais novidades:
– Uso de Anotações para Definir Servlets, Listeners e
Filters
– Fragmentação do web.xml
– Chamada Assync (Comet), objetivo Ajax
6
7. @Servlet(urlMappings={"/MyApp"})
public class MyServlet {
@GET
public void handleGet(HttpServletRequest req,
HttpServletResponse res) {
....
}
@ServletFilter
@FilterMapping("/foo")
public class MyFilter {
public void doFilter(HttpServletRequest req,
HttpServletResponse res) {
.....
}
}
@Servlet(urlMappings={"/MyApp"}, initParams ={@InitParam(name="lang",
value="english")})
public class MyServlet {
@GET
public void handleGet(HttpServletRequest req,
HttpServletResponse res) {
....
}
}
7
8. JSF 2.0
JSR-314: http://jcp.org/en/jsr/detail?id=314
• Anotações
• Facelets como parte do padrão
• Expression Language
• ExceptionHandlers
• Escpos de Usuários
8
16. CDI 1.0
JSR-299: http://jcp.org/en/jsr/detail?id=299
• Context Dependency Injection
– Uso de Factories
– Interceptors
– Injeção de Dependências
– Agora isto também é padrão
16
17. Profiles
• Um perfil para cada propósito:
– Full
– Web
• No futuro, quem sabe outros profiles:
– Teste
– Telco (SIP)
– SOA
17
19. JBoss AS 6.0 e a Comunidade
Influencia direta
• JSR 299 – CDI for the • JSR 314 – Java Server
Java EE Platform Faces 2.0
– Gavin King • JSR 316 – JavaEE 6
• JSR 303 – Bean • JSR 317 – JPA 2.0
Validation
• JSR 318 – EJB 3.1
– Emanuel Bernard
• JSR 330 – Dependency
• JSR 311 – JAX-RS Injection
20. Novidades
• Otimizações do desempenho
• J2EE6, OSGi
• Novos projetos
• Novo modelo de releases
• Projeto totalmente “mavenizado”
21. Otimizando o servidor
• Uma série de esforços realizados nesse sentido
• VFS 3.0
– Nova API
– Montagem explícita + ciclo de vida associado aos
Structure Deployers
– Sincronizado com o sistema de arquivos
– Otimização no acesso a arquivos zipados
22. Otimizando o servidor
• JBoss Microcontainer
– Diversas otimizações realizadas no
kernel
• Busca de dependências
• Máquina de estados
– Em desenvolvimento
• JBoss Reflection: substituição de
reflexão por Javassist com cache
de bytecodes, sem carga de
classes necessária
– Manipulação direta de
Flavia Rainone bytecodes através do
Core Developer JBoss MC, JBoss AOP Javassist
23. HornetQ
• Novo JMS Provider do
JBoss AS 6.0 M3
• Arquitetura baseada em
POJOs
• APIS:
– JMS 1.1 API
– APIs próprias: core
Clebert Suconic, client API, RESTful
Project Lead, HonetQ API, e outros
já participou do JBoss Cache, JBoss
Serialization, JRUnit, JBoss Profiler • Pode ser utilizado em
outros ambientes
24. HornetQ
• Desempenho
– IO nativo para Linux
– quebrou o recorde da SPECjms2007 em 307%
• Integrado aos deployers do AS
– Isso significa que você pode incluir os seus
arquivos config nos próprios archives da sua
aplicação
• Integração com o JBoss Admin console
25. JBoss Embedded AS
• Trabalho em desenvolvimento
– Versão 1.0.Alpha3
– jboss-as-depchain
• Módulo que referencia todo o classpath
necessário para usar o JBoss Embedded
– Provê um ambiente de testes para aplicações em
uma máquina virtual standalone
– Pode ser usado com o ShrinkWrap
26. Weld
• Implementação de referência da JSR 299 - CDI
• Parte do projeto Seam 3
• Integrado ao JBoss AS 6 M1
– Projeto de integração em desenvolvimento
27. RichFaces
• Component library para JSF
• Framework para integração de AJAX em aplicações
• Versão 3.3.3.Final
– Suporte básico a JSF 2.0
– JBoss AS 6.0. M3
28. RichFaces
• Versão 4.0
– Suporte completo a JSF 2.0
– Em desenvolvimento
– Estender os horizontes da especificação, assim
como foi feito com JSF 1.2
– CDK (Component Development Kit) com templates
avançados, anotações, extensões faces-config, etc
– Melhorias no AJAX framework
29. Infinispan
• Irá substituir o JBoss Cache
• Avançada plataforma de dados em grade
– Avançados algoritmos de concorrência
– Perfeito para a última tecnologia de processadores
multi core
• Compatibilidade com JTA
• Algoritmos eficientes de eviction
• Expõe uma Cache interface
30. Hibernate Core
• Versão
– atual: 3.5.1
– no JBoss AS 6.0 M3: 3.5.0.CR1
• Implementa JPA 2 (JSR 317)
• Adicionou Infinispan como cache nível 2
• Suporte a JDBC4
31. Hibernate Validator
• Versão 4.0.2.GA
– Incluída no JBoss
AS 6.0.M3
• Implementação de
referência da JSR 303
– Bean Validation Emmanuel Bernard,
JBoss HIbernate
32. Clustering
• Novo httpd-based
load balancer:
mod_cluster
– Configuração dinâmica
dos nós httpd
– Cálculo do fator do
balanceamento de
carga dos servidores
– Granularidade fina do
ciclo de vida das
aplicações web
– Distinção entre
shutdown e crash
33. JBoss Marshalling
• Alternativa à API de Serialization
– aproximadamente 2x mais rápida!
• Suporte plugável a
– Class resolvers
– Substituição de objetos
– Tabelas pré-definidas de classes e de objetos
– Externalizers
34. RESTeasy
• Implementação certificada da JSR JAX-RS
• Permite acesso a serviços providos por resource
methods de forma facilitada
– Anotações
• Versão 2.0-beta-2
35. RESTeasy
• Mais:
– implementação embeddable para
ambientes de teste
– Framework para criar clientes HTTP, com
anotações
– Integrado nos projetos EJB, Seam, Guice,
Spring e Spring MVC
36. RESTeasy
• Cache:
– Client “browser” cache
– Server in-memory cache
• Abstrações de HTTP assíncronas
• Modelo rico de interceptadores
• Rico conjunto de providers (XML, Atom, etc)
37. JBoss OSGi
• Container OSGi
• Diferentes perfis:
– minimal, default, web e all
• Camada de integração com uma framework OSGi:
– Felix, Equinox ou Microcontainer
38. JBoss OSGi
• JBoss Microcontainer + OSGi
– Em desenvolvimento
– Ao final, permitirá que bundles se comuniquem
com outros componentes de outros modelos de
programação:
• Bundle -> EJB
• MC bean -> bundle
• etc.
39. JBoss OSGi
• Services
– JBoss Microcontainer
• Como serviço, permite que os bundles utilizem
injeção, dependências e outros recursos do
Microcontainer
– Blueprint service (RFC-124)
• Controle de ciclo de vida, extenders, service
listeners, etc.
• Configurado através do MANIFEST ou de arquivos
xml em OSGI-INF/blueprint
40. Outras alterações
• Nomenclatura dos projetos
– Compatível com OSGi
– Duas opções:
• Alpha e beta:
– major.minor.micro.Alpha/Beta/CR[n]
– major.minor.micro.Final
• Milestones:
– major.minor.micro.TIMESTAMP-Mn
– major.minor.micro.Final
• Maven: integração levada ao próximo nível
41. • Aspectos de Segurança
no JBoss AS:
– IDM : LDAP, DB,
Grupos/Papéis/Usuários
– Federated Identity: Suporte
SAMLv2, WS-Trust e OpenID.
– AuthZ: Developer friendly
authorization framework
– XACML: Implementação Oasis
XACMLv2
– Negotiation: Provide
SPNego/Kerberos based Desktop
Marcus Moyses SSO.
Stefan Guilhen – Core Developer, Security
•
– (Security Token Service Lead)
42. Road Map
• JBoss AS 6.0 Final
– Certificado em JavaEE 6, TCK 100%
• JBoss AS 7
– Maior performance ainda
– Ferramentas de gerenciamento
– Facilidades de configuração
43. JBoss AS 7 + KVM
• KVM: Kernel Virtual Machine
– Tecnologia de Virtualização já dentro do Kernel do
Linux.
• Conceitos Novos do JBoss AS7:
– Exposição de APIs de Gerenciamento:
• REST, CLI etc
– Servidores
• Domain
• ServerGroup
• Cluster (HA Server Group)