Visão geral da Plataforma Java no presenteJBoss Application Server 6
Edgar SilvaManager, Solutions Architects
Red Hat Brasil
@jedgarsilva
Tema 1Visão geral da plataforma e servidores de aplicação
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
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
5
Java Enterprise Edition 6
• Resultado da JSR316– http://jcp.org/en/jsr/detail?id=316
• Principais Novidades:– Servlets 3.0– JSF 2.0– JPA 2.0– Bean Validation 1.0– EJB 3.1– EJB Lite– JAX-RS– CDI– Profiles
6
Servlet 3.0JSR-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
7
@Servlet(urlMappings={"/MyApp"})public class MyServlet { @GET public void handleGet(HttpServletRequest req, HttpServletResponse res) { .... }
@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) { .... }}
8
JSF 2.0JSR-314: http://jcp.org/en/jsr/detail?id=314
• Anotações• Facelets como parte do padrão• Expression Language• ExceptionHandlers• Escpos de Usuários
9
@ManagedBean(name="scriptService")@RequestScopedpublic class ScriptServiceBean { @ManagedProperty(value = "script") private String scriptName;
}
10
JPA 2.0JSR-317: http://jcp.org/en/jsr/detail?id=317
• Second-Level Cache• Criteria• Muitas adições baseadas no Hibernate dentro do
padrão JPA.
11
EJB 3.1JSR-318: http://jcp.org/en/jsr/detail?id=318
• Interfaces opcionais• EJB Lite• Deploy War
12
JAX-RSJSR-311: http://jcp.org/en/jsr/detail?id=311
• RESTful WebServices• Anotações• MediaTypes• REST• WOA (se isto existir)
13
@Provider@Path("/")
public class RootService implements java.io.Serializable {
@GET@Path("/")@Produces("text/plain")public String homePlain(){
return "Welcome to RestEasy running on Google App - Client Plain/Text";}
@GET@Path("/")@Produces("text/html")public String homeHTML(){
return "<h1><font face='Verdanda'>Welcome to RestEasy running on Google App - Client HTML</font></h1>";}
@GET@Path("/{name}/{vars:.*}")@Produces("application/xml")public String executeWithGetXML(@PathParam("name") String serviceName, @PathParam("vars") String vars){
14
Bean ValidationJSR-303: http://jcp.org/en/jsr/detail?id=303
• Lembra do Hibernate Validator• Agora isto é padrão JEE
15
public class Address { @NotNull @Size(max = 50) private String street1;
@NotNull @ZipCode private String zipcode;
@NotNull @Size(max = 30) private String city;
Leitura recomendada:
http://musingsofaprogrammingaddict.blogspot.com/2009/02/getting-started-with-jsr-303-bean.html
16
CDI 1.0JSR-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
17
Profiles
• Um perfil para cada propósito:– Full– Web
• No futuro, quem sabe outros profiles:– Teste– Telco (SIP)– SOA
18
JBoss Application Server 6.0http://www.jboss.org/jbossas
JBoss AS 6.0 e a ComunidadeInfluencia direta
• JSR 299 – CDI for the Java EE Platform
– Gavin King
• JSR 303 – Bean Validation
– Emanuel Bernard
• JSR 311 – JAX-RS
• JSR 314 – Java Server Faces 2.0
• JSR 316 – JavaEE 6
• JSR 317 – JPA 2.0
• JSR 318 – EJB 3.1
• JSR 330 – Dependency Injection
Novidades
• Otimizações do desempenho
• J2EE6, OSGi
• Novos projetos
• Novo modelo de releases
• Projeto totalmente “mavenizado”
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
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 bytecodes através do Javassist
Flavia Rainone Core Developer JBoss MC, JBoss AOP
HornetQ
• Novo JMS Provider do JBoss AS 6.0 M3
• Arquitetura baseada em POJOs
• APIS:
– JMS 1.1 API
– APIs próprias: core client API, RESTful API, e outros
• Pode ser utilizado em outros ambientes
Clebert Suconic,Project Lead, HonetQjá participou do JBoss Cache, JBoss Serialization, JRUnit, JBoss Profiler
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
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
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
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
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
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
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
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
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
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
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
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
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)
JBoss OSGi
• Container OSGi
• Diferentes perfis:
– minimal, default, web e all
• Camada de integração com uma framework OSGi:
– Felix, Equinox ou Microcontainer
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.
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
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
• 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 SSO.
•Stefan Guilhen– (Security Token Service Lead)
Marcus Moyses– Core Developer, Security
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
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)
Demo
Demo
Clouds:Ambiente Elástico Computacional
JBoss PaaS
O Jeito que você programa hoje, pode ser o mesmo de amanha?
Servidor Local
QA(Dev e Prod)
c
Servidores Produção
ApacheWeb Server
+ Mod_Cluster
Servidor Local
QA(Dev e Prod)
c
Servidores Produção
Red Hat PaaS
Servidor Cloud Servidor Cloud
ApacheWeb Server
+ Mod_Cluster
Referências
• Slides JbossInBossa 2010:http://flaviarainone.blogspot.com/
• JBoss.ORG http://www.jboss.org/jbossas
• Blog Edgar Silva http://www.edgarsilva.com.br
Edgar [email protected]
Top Related