Download - Java EE 6 e JBoss 6.0

Transcript
Page 1: Java EE 6 e JBoss 6.0
Page 2: Java EE 6 e JBoss 6.0

Visão geral da Plataforma Java no presenteJBoss Application Server 6

Edgar SilvaManager, Solutions Architects

Red Hat Brasil

[email protected]

@jedgarsilva

Tema 1Visão geral da plataforma e servidores de aplicação

Page 3: Java EE 6 e JBoss 6.0

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

Page 4: Java EE 6 e JBoss 6.0

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

Page 5: Java EE 6 e JBoss 6.0

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

Page 6: Java EE 6 e JBoss 6.0

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

Page 7: Java EE 6 e JBoss 6.0

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) { .... }}

Page 8: Java EE 6 e JBoss 6.0

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

Page 9: Java EE 6 e JBoss 6.0

9

@ManagedBean(name="scriptService")@RequestScopedpublic class ScriptServiceBean { @ManagedProperty(value = "script") private String scriptName;

}

Page 10: Java EE 6 e JBoss 6.0

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.

Page 11: Java EE 6 e JBoss 6.0

11

EJB 3.1JSR-318: http://jcp.org/en/jsr/detail?id=318

• Interfaces opcionais• EJB Lite• Deploy War

Page 12: Java EE 6 e JBoss 6.0

12

JAX-RSJSR-311: http://jcp.org/en/jsr/detail?id=311

• RESTful WebServices• Anotações• MediaTypes• REST• WOA (se isto existir)

Page 13: Java EE 6 e JBoss 6.0

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){

Page 14: Java EE 6 e JBoss 6.0

14

Bean ValidationJSR-303: http://jcp.org/en/jsr/detail?id=303

• Lembra do Hibernate Validator• Agora isto é padrão JEE

Page 15: Java EE 6 e JBoss 6.0

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

Page 16: Java EE 6 e JBoss 6.0

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

Page 17: Java EE 6 e JBoss 6.0

17

Profiles

• Um perfil para cada propósito:– Full– Web

• No futuro, quem sabe outros profiles:– Teste– Telco (SIP)– SOA

Page 18: Java EE 6 e JBoss 6.0

18

JBoss Application Server 6.0http://www.jboss.org/jbossas

Page 19: Java EE 6 e JBoss 6.0

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

Page 20: Java EE 6 e JBoss 6.0

Novidades

• Otimizações do desempenho

• J2EE6, OSGi

• Novos projetos

• Novo modelo de releases

• Projeto totalmente “mavenizado”

Page 21: Java EE 6 e JBoss 6.0

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

Page 22: Java EE 6 e JBoss 6.0

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

Page 23: Java EE 6 e JBoss 6.0

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

Page 24: Java EE 6 e JBoss 6.0

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

Page 25: Java EE 6 e JBoss 6.0

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

Page 26: Java EE 6 e JBoss 6.0

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

Page 27: Java EE 6 e JBoss 6.0

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

Page 28: Java EE 6 e JBoss 6.0

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

Page 29: Java EE 6 e JBoss 6.0

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

Page 30: Java EE 6 e JBoss 6.0

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

Page 31: Java EE 6 e JBoss 6.0

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

Page 32: Java EE 6 e JBoss 6.0

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

Page 33: Java EE 6 e JBoss 6.0

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

Page 34: Java EE 6 e JBoss 6.0

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

Page 35: Java EE 6 e JBoss 6.0

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

Page 36: Java EE 6 e JBoss 6.0

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)

Page 37: Java EE 6 e JBoss 6.0

JBoss OSGi

• Container OSGi

• Diferentes perfis:

– minimal, default, web e all

• Camada de integração com uma framework OSGi:

– Felix, Equinox ou Microcontainer

Page 38: Java EE 6 e JBoss 6.0

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.

Page 39: Java EE 6 e JBoss 6.0

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

Page 40: Java EE 6 e JBoss 6.0

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

Page 41: Java EE 6 e JBoss 6.0

• 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

Page 42: Java EE 6 e JBoss 6.0

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

Page 43: Java EE 6 e JBoss 6.0

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)

Page 44: Java EE 6 e JBoss 6.0

Demo

Page 45: Java EE 6 e JBoss 6.0

Demo

Page 46: Java EE 6 e JBoss 6.0

Clouds:Ambiente Elástico Computacional

Page 47: Java EE 6 e JBoss 6.0

JBoss PaaS

Page 48: Java EE 6 e JBoss 6.0

O Jeito que você programa hoje, pode ser o mesmo de amanha?

Page 49: Java EE 6 e JBoss 6.0

Servidor Local

QA(Dev e Prod)

c

Servidores Produção

Page 50: Java EE 6 e JBoss 6.0

ApacheWeb Server

+ Mod_Cluster

Page 51: Java EE 6 e JBoss 6.0

Servidor Local

QA(Dev e Prod)

c

Servidores Produção

Red Hat PaaS

Servidor Cloud Servidor Cloud

Page 52: Java EE 6 e JBoss 6.0

ApacheWeb Server

+ Mod_Cluster

Page 53: Java EE 6 e JBoss 6.0

Referências

• Slides JbossInBossa 2010:http://flaviarainone.blogspot.com/

• JBoss.ORG http://www.jboss.org/jbossas

• Blog Edgar Silva http://www.edgarsilva.com.br

Page 54: Java EE 6 e JBoss 6.0

Edgar [email protected]