Java EE 6 no JBoss AS 6


       Paulo Jerônimo @ Lado Servidor

  Festival Latino-Americano de Software Livre
                   (FLISOL)

                 Goiânia/GO
                 24/Abr/2010
Paulo Jerônimo

   http://paulojeronimo.com
   Especialista em Sistemas Distribuídos e OO (UnB/2002)
   Consultor em servidores de aplicações
        Trabalhando com JBoss AS desde 2002
                        Certified JBoss Administrator (CJA) (2007)
                        Certified JBoss Developer (CJD) (2007)
   Vasta experiência em:
        Ensino p/ equipes corporativas
        Arquitetura e desenvolvimento de aplicações Java
                        Vários projetos desenvolvidos para órgãos do governo, empresas de
                           telecomunicações e istituições financeiras
                        SCJP, SCBCD, SCBCD
        Suporte a ambientes com carga balanceada, clusterizados e tolerante a falhas
Lado Servidor

   http://ladoservidor.com
   Notícias, idéias, soluções e serviços:
       Instalação, configuração, administração,
        monitoramento, resolução de problemas e ajustes
        de performance
                   Para produtos de virtualização
                   Para servidores de aplicações (principalmente os
                     baseados na plataforma Java)
   Foco em software livre!
       Mas sem deixar de veicular as notícias do lado
        negro da força ;-)
Agenda

   Um pouco de Java EE 6
       Motivação, Adoção, Evolução
       Objetivos, APIs
   Um pouco de JBoss AS 6
       Histórico
       Status atual
       Baixa dos fontes, compilação e instalação ;-)
       Execução de um projeto Weld
Java EE - Motivação

   Requisitos não funcionais
       Escalabilidade, processamento em paralelo de
        grande número de requisições
       Segurança
       Transações
   No passado: cada aplicação implementava tais
    requisitos
       Desfocava a aplicação das regras do negócio
   Hoje (a algum tempinho ;-): tais requisitos são
    implementados por um servidor de aplicações
Java EE - Adoção
Java EE - Evolução
Java EE – Implementações (EE 5)
Java EE 6 – Implementação de
Referência
   GlassFish v3
Java EE 6 no JBoss AS 6

   Em desenvolvimento, mas já com várias
    funcionalidades prontas... Testaremos algumas
    mais a frente!
Java EE 6 - Objetivos

   Right-sizing
       Adaptar-se a aplicações de diferentes tamanhos
       Simplificação de tecnologias
       Implementação de profiles
   Extensibilidade
       Facilidades p/ plugar frameworks e bibiliotecas
   Produtividade
       Aprimoramento de facilidades conquistadas no
        Java EE 5 (com o uso de anotações)
Java EE 6 (JSR 316) - APIs

   Novidades:                            Atualizações:
                                               EJB 3.1
       DI 1.0 (JSR 330)
                                               JPA 2.0
       CDI 1.0 (JSR 299) Spec                 Servlet 3.0
        Leads: Gavin King, Pete Muir
                                               JSF 2.0
       Bean Validation 1.0
        (JSR 303) Spec Lead:                   Interceptors 1.1
        Emmanuel Bernard                       Connectors 1.6
       Managed Beans 1.0                      JAX-WS 2.2
        (JSR 316)                              Enterprise Web Services
       JAX-RS 1.1 (RESTful                    JSP 2.2/EL 2.2
        services)                              Annotations 1.1
Java EE 6 – Dependency Injection
(DI) - JSR 330
   Líderes: Bob Lee (Google Guice), Rod Johnson
    (Spring)
   Objetivo: definir uma semântica básica para
    injeção de dependências em Java EE
   Anotações:
       @Inject, @Named, @Qualifier, @Scope,
        @Singleton
Java EE 6 – Context and Dependency
Injection (CDI) - JSR 330
   Líderes: Gavin King, Pete Muir (JBoss)
   Conhecida anteriormente por WebBeans
   Implementação de referência: Weld
   Define um conjunto de serviços E permite
    injeção de dependências
   Integra componentes. Ex.: JSF e EJB
   Trata todos os componentes como Managed
    Beans
Java EE 6 – Servlets 3.0

   Mapeamento das servlets e filtros via
    anotações
       web.xml opcional
   Suporte a servlets assíncronos
       Evita o bloqueio de requisições enquanto ainda é
        produzido algum resultado para o cliente
   Fácil integração de componentes de terceiros
       Basta plugar a uma biblioteca em WEB-INF/lib, que
        já contenha um arquivo META-INF/web-
        fragments.xml
Java EE 6 – Servlet 3.0 (2)
Java EE 6 – EJB 3.1

   Avanços na facilidade de uso
   Um código fonte por Bean (interface
    desnecessária)
   EJBs podem ser implantados em Web Archives
    (wars)
       Sem ejb-jar
       Dentro de WEB-INF/classes
       Compartilhando informações de ambiente
   JNDI portável e global
Java EE 6 – EJB 3.1
Java EE 6 – EJB 3.1

   Singletons EJBs
       @Singleton
       Uma instância por Bean por JVM
       Segurança gerenciada pelo container ou pelo Bean
        @ConcurrencyManagement
   Uso Embeddable/Standalone
       Possibilidade de se utilizar EJB's em um Java SE
   Timer Service aprimorado com @Schedule
   Invocações assíncronas através de
    @Asynchronous
Java EE 6 – EJB 3.1

   EJB Lite – subconjunto das principais
    funcionalidades da versão EJB completa
Java EE 6 – JPA 2.0 – JSR 317

   Desacoplada de EJBs
   Inclusão da API criteria (inspirada no
    Hibernate)
   Suporte a mapeamento de coleções e tipos
    primitivos
   Lock pessimista
   API de cache
   Melhor suporte a mapas
Java EE 6 – JSF 2.0

   Utilização da anotação @ManagedBean p/ o
    registro de componentes
       faces-config.xml opcional
   Melhorias na navegação
   Suporte a AJAX
   Componentes compostos
Java EE 6 – Bean Validation 1.0

   Idéias trazidas do Hibernate Validation
   Possibilita a inclusão de regras de validação
    em um JavaBean
   Todas as camadas da aplicação entendem
    uma mesma linguagem que expressa as regras
    de validação
   Integrado a JSF e JPA
   Extensível
Java EE 6 - Profiles

   Segmentam a plataforma Java EE (e
    servidores de aplicações) em categorias de
    aplicações
       Permitem o uso de um subconjunto das APIs, com
        garantias de compatibilidade
   Exemplo de profile: Web Profile
Java EE 6 – Web Profile

   Apresentação                   Frameworks p/
       Servlet 3.0                 componentes
                     JSP 2.2          EJB 3.1 Lite
                     EL 2.0           CDI
       JSTL 1.2                   Persistência
       JSF 2.0                        JPA 2.0
   Common Annotations                 JTA 1.1
    1.1
   DI 1.0
JBoss AS 6

   Servidor de aplicações Java EE 6
   Suporte atual para diversas APIs Java EE:
       Servlet 3.0
       Web Profile
       EJB 3.1
       Mensageria (HornetQ)
   Interface de gerenciamento aprimorada
   Performance aprimorada
   Microcontainer baseado POJOs e AOP
Java EE 6 no Jboss AS 6 -
Tecnologias
   JBoss Web 3.0 (Servlet 3.0, JSP 2.2, EL 2.2)
   Weld 1.0 (Impl. Ref. P/ CDI 1.0)
   EJB 3.1
   Hibernate 3.5 (JPA 2.0)
   Hibernate Validator 4.0.2 (Impl. Ref. P/ Bean
    Validation 1.0
   JBoss Web Services 3.3.0 (JAX-WS 2.2)
   JSF 2.0
JBoss AS 6 – Instalação a partir dos
fontes
   Do que você irá precisar:
       Subversion: para baixar os fontes do repositório
       JDK e Maven: para construir o projeto
   Demonstrações!
       Construção (build) do JBoss AS
       Inicialização e parada
       Interface de gerenciamento
       Construção, implantação e execução de um projeto
        Weld (CDI 1.0)
Fim ;-) Obrigado por vir!

             Contatos:

          @paulojeronimo
          @ladoservidor
                (Twitter)



  paulojeronimo@ladoservidor.com

Flisolgo2010

  • 1.
    Java EE 6no JBoss AS 6 Paulo Jerônimo @ Lado Servidor Festival Latino-Americano de Software Livre (FLISOL) Goiânia/GO 24/Abr/2010
  • 2.
    Paulo Jerônimo  http://paulojeronimo.com  Especialista em Sistemas Distribuídos e OO (UnB/2002)  Consultor em servidores de aplicações  Trabalhando com JBoss AS desde 2002  Certified JBoss Administrator (CJA) (2007)  Certified JBoss Developer (CJD) (2007)  Vasta experiência em:  Ensino p/ equipes corporativas  Arquitetura e desenvolvimento de aplicações Java  Vários projetos desenvolvidos para órgãos do governo, empresas de telecomunicações e istituições financeiras  SCJP, SCBCD, SCBCD  Suporte a ambientes com carga balanceada, clusterizados e tolerante a falhas
  • 3.
    Lado Servidor  http://ladoservidor.com  Notícias, idéias, soluções e serviços:  Instalação, configuração, administração, monitoramento, resolução de problemas e ajustes de performance  Para produtos de virtualização  Para servidores de aplicações (principalmente os baseados na plataforma Java)  Foco em software livre!  Mas sem deixar de veicular as notícias do lado negro da força ;-)
  • 4.
    Agenda  Um pouco de Java EE 6  Motivação, Adoção, Evolução  Objetivos, APIs  Um pouco de JBoss AS 6  Histórico  Status atual  Baixa dos fontes, compilação e instalação ;-)  Execução de um projeto Weld
  • 5.
    Java EE -Motivação  Requisitos não funcionais  Escalabilidade, processamento em paralelo de grande número de requisições  Segurança  Transações  No passado: cada aplicação implementava tais requisitos  Desfocava a aplicação das regras do negócio  Hoje (a algum tempinho ;-): tais requisitos são implementados por um servidor de aplicações
  • 6.
    Java EE -Adoção
  • 7.
    Java EE -Evolução
  • 8.
    Java EE –Implementações (EE 5)
  • 9.
    Java EE 6– Implementação de Referência  GlassFish v3
  • 10.
    Java EE 6no JBoss AS 6  Em desenvolvimento, mas já com várias funcionalidades prontas... Testaremos algumas mais a frente!
  • 11.
    Java EE 6- Objetivos  Right-sizing  Adaptar-se a aplicações de diferentes tamanhos  Simplificação de tecnologias  Implementação de profiles  Extensibilidade  Facilidades p/ plugar frameworks e bibiliotecas  Produtividade  Aprimoramento de facilidades conquistadas no Java EE 5 (com o uso de anotações)
  • 12.
    Java EE 6(JSR 316) - APIs  Novidades:  Atualizações:  EJB 3.1  DI 1.0 (JSR 330)  JPA 2.0  CDI 1.0 (JSR 299) Spec  Servlet 3.0 Leads: Gavin King, Pete Muir  JSF 2.0  Bean Validation 1.0 (JSR 303) Spec Lead:  Interceptors 1.1 Emmanuel Bernard  Connectors 1.6  Managed Beans 1.0  JAX-WS 2.2 (JSR 316)  Enterprise Web Services  JAX-RS 1.1 (RESTful  JSP 2.2/EL 2.2 services)  Annotations 1.1
  • 13.
    Java EE 6– Dependency Injection (DI) - JSR 330  Líderes: Bob Lee (Google Guice), Rod Johnson (Spring)  Objetivo: definir uma semântica básica para injeção de dependências em Java EE  Anotações:  @Inject, @Named, @Qualifier, @Scope, @Singleton
  • 14.
    Java EE 6– Context and Dependency Injection (CDI) - JSR 330  Líderes: Gavin King, Pete Muir (JBoss)  Conhecida anteriormente por WebBeans  Implementação de referência: Weld  Define um conjunto de serviços E permite injeção de dependências  Integra componentes. Ex.: JSF e EJB  Trata todos os componentes como Managed Beans
  • 15.
    Java EE 6– Servlets 3.0  Mapeamento das servlets e filtros via anotações  web.xml opcional  Suporte a servlets assíncronos  Evita o bloqueio de requisições enquanto ainda é produzido algum resultado para o cliente  Fácil integração de componentes de terceiros  Basta plugar a uma biblioteca em WEB-INF/lib, que já contenha um arquivo META-INF/web- fragments.xml
  • 16.
    Java EE 6– Servlet 3.0 (2)
  • 17.
    Java EE 6– EJB 3.1  Avanços na facilidade de uso  Um código fonte por Bean (interface desnecessária)  EJBs podem ser implantados em Web Archives (wars)  Sem ejb-jar  Dentro de WEB-INF/classes  Compartilhando informações de ambiente  JNDI portável e global
  • 18.
    Java EE 6– EJB 3.1
  • 19.
    Java EE 6– EJB 3.1  Singletons EJBs  @Singleton  Uma instância por Bean por JVM  Segurança gerenciada pelo container ou pelo Bean @ConcurrencyManagement  Uso Embeddable/Standalone  Possibilidade de se utilizar EJB's em um Java SE  Timer Service aprimorado com @Schedule  Invocações assíncronas através de @Asynchronous
  • 20.
    Java EE 6– EJB 3.1  EJB Lite – subconjunto das principais funcionalidades da versão EJB completa
  • 21.
    Java EE 6– JPA 2.0 – JSR 317  Desacoplada de EJBs  Inclusão da API criteria (inspirada no Hibernate)  Suporte a mapeamento de coleções e tipos primitivos  Lock pessimista  API de cache  Melhor suporte a mapas
  • 22.
    Java EE 6– JSF 2.0  Utilização da anotação @ManagedBean p/ o registro de componentes  faces-config.xml opcional  Melhorias na navegação  Suporte a AJAX  Componentes compostos
  • 23.
    Java EE 6– Bean Validation 1.0  Idéias trazidas do Hibernate Validation  Possibilita a inclusão de regras de validação em um JavaBean  Todas as camadas da aplicação entendem uma mesma linguagem que expressa as regras de validação  Integrado a JSF e JPA  Extensível
  • 24.
    Java EE 6- Profiles  Segmentam a plataforma Java EE (e servidores de aplicações) em categorias de aplicações  Permitem o uso de um subconjunto das APIs, com garantias de compatibilidade  Exemplo de profile: Web Profile
  • 25.
    Java EE 6– Web Profile  Apresentação  Frameworks p/  Servlet 3.0 componentes  JSP 2.2  EJB 3.1 Lite  EL 2.0  CDI  JSTL 1.2  Persistência  JSF 2.0  JPA 2.0  Common Annotations  JTA 1.1 1.1  DI 1.0
  • 26.
    JBoss AS 6  Servidor de aplicações Java EE 6  Suporte atual para diversas APIs Java EE:  Servlet 3.0  Web Profile  EJB 3.1  Mensageria (HornetQ)  Interface de gerenciamento aprimorada  Performance aprimorada  Microcontainer baseado POJOs e AOP
  • 27.
    Java EE 6no Jboss AS 6 - Tecnologias  JBoss Web 3.0 (Servlet 3.0, JSP 2.2, EL 2.2)  Weld 1.0 (Impl. Ref. P/ CDI 1.0)  EJB 3.1  Hibernate 3.5 (JPA 2.0)  Hibernate Validator 4.0.2 (Impl. Ref. P/ Bean Validation 1.0  JBoss Web Services 3.3.0 (JAX-WS 2.2)  JSF 2.0
  • 28.
    JBoss AS 6– Instalação a partir dos fontes  Do que você irá precisar:  Subversion: para baixar os fontes do repositório  JDK e Maven: para construir o projeto  Demonstrações!  Construção (build) do JBoss AS  Inicialização e parada  Interface de gerenciamento  Construção, implantação e execução de um projeto Weld (CDI 1.0)
  • 29.
    Fim ;-) Obrigadopor vir! Contatos: @paulojeronimo @ladoservidor (Twitter) paulojeronimo@ladoservidor.com