SlideShare uma empresa Scribd logo
1   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish, Maven, Cloud e o futuro do Java EE
           Bruno Borges | Fusion Middleware | Product Management
2          bruno.borges@oracle.com
    Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
The following is intended to outline our general product direction.
    It is intended for information purposes only, and may not be
    incorporated into any contract. It is not a commitment to deliver
    any material, code, or functionality, and should not be relied
    upon in making purchasing decisions. The development,
    release, and timing of any features or functionality described for
    Oracle’s products remains at the sole discretion of Oracle.




3   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Agenda
    ●       Java EE
               –       Versão 6
               –       Futuro: Java EE 7
    ●       GlassFish
               –       História
               –       Futuro
    ●       Apache Maven
    ●       Embedded GlassFish Maven Plugin


4   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
O que o mercado procura?




5   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Spring vs Java EE ?

    ●        Java EE evoluiu graças ao Spring
    ●        Full e Web profiles – lightweight!
    ●        Spring utiliza recursos EE
    ●        Java as a language / Java as a platform
    ●        Java EE as a platform / Java EE as a framework



6   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Desenvolvimento Moderno com Java EE 6
            Flexível & Leve                                                                         Estensível

• API Java EE mais enxuta                                                               • Integre frameworks open source
• DI (Dependency Injection)                                                             • Habilite a instalação “Drag & Drop”
  agora é um padrão Java EE                                                               de frameworks open source
• Manipule cenários simples e                                                           • Extensões padrões para DI não
  complexos sem dependências                                                              criam mais lock-ins proprietários
  externas
                                                                     Produtividade no
                                                                     Desenvolvimento

                                             • Modelo de programação em POJOs
                                             • Mais anotações, melhor suporte de IDE
                                             • Menos config. XML, mais convenções
                                             • Anotações e não deployment descriptors

  7   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Mais produtividade, menos código: Java EE 6


         25%                                                                     50%                          80%
   Menos Classes                                                              Menos Linhas                 Menos Linhas
       Java*                                                                   de Código*                    de XML*

• Menos XML, Menos Código                                               • Simplificação, Produtividade   • Modernização
  • Java Server Faces 2.0                                                 • Managed Beans 1.0              • Context & Dependency
  • Java Servlets 3.0                                                     • Bean Validation 1.0              Injection 1.0
  • Java Persistence 2.0                                                  • JAX-WS 2.2                     • Bean Validation 1.0
  • Enterprise Java Beans 3.1                                                                              • Java API for RESTful
    & Interceptors 1.1                                                                                       Web Services

  * Baseado em um aplicativo criado no JavaOne usando POJO / JPA / REST


     8   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 6
●       Java EE 6 – JSR 316
          –        Profiles
          –        EJB 3.1
          –        JSF 2.0
          –        JSP 2.2 / Servlets 3.0
          –        JAX-RS
          –        JAX-WS 2.2
          –        JPA 2.0
          –        Java EE Connectors 1.6

    9   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 6

     ●
              As coisas boas do Java EE 6
                 –        Não precisa mais de web.xml
                 –        Melhora na API de Servlets para tratar FileUpload
                 –        Validation (JSR 303) no JPA
                 –        CDI @Inject                               #FWT o/




10   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 6

     ●
              As coisas boas do Java EE 6
                 –        EJB do jeito que todo mundo queria
                              ●
                                     Não precisa mais de um ejb-jar.xml
                              ●
                                     Anotações
                              ●
                                     @Singleton e @Startup beans
                              ●
                                     @Schedule bean's methods
                              ●
                                     Operações assíncronas



11   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Do JEE 6 para o JEE 7




12   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7
       Java EE 7
Java EE 7
     ●     EJB 3.2 – JSR 345
              –       Suporte a multi-tenancy
              –       Melhora no uso de anotações para simplificar o modelo de programação
              –       Alinhamento com outras especificações como CDI, JMS e
                      BeanValidation
     ●     JPA 2.1 – JSR 338
              –       Introdução da interface StoredProcedureQuery




14   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7
     ●     Servlet 3.1 – JSR 340
              –       Suporte a WebSockets
     ●     JSF 2.2 – JSR 344
              –       Mais fácil de criar componentes
              –       HTML5
              –       Novos componentes
              –       Mobile devices




15   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7
           O mais esperado (IMO)
     ●
           JMS – Java Messaging Service 2.0 – JSR 343
                          ●
                                  Melhora no modelo de programação
                          ●
                                  Integração com CDI
                          ●
                                  Mudanças na API para permitir maior integração entre vendors
                                  de JMS com qualquer container JEE
                          ●
                                  “Cloud-friendly”: suporte a multi-tenancy e outras funcionalidades
                                  relacinadas a Cloud



16   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7
           O mais esperado (IMO)
     ●
           JMS – Java Messaging Service 2.0 – JSR 343
                          ●
                                  Melhora no modelo de programação
                          ●
                                  Integração com CDI
                          ●
                                  Mudanças na API para permitir maior integração entre vendors
                                  de JMS com qualquer container JEE
                          ●
                                  “Cloud-friendly”: suporte a multi-tenancy e outras funcionalidades
                                  relacinadas a Cloud



17   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7 – Plataforma ideal para Cloud




18   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Oracle GlassFish Server
        Java EE 7
GlassFish - História
●
         Criado pela Sun em 2005
●
         2006 (v1), RI do JEE 5
           –        para desenvolvedores
●
         2007 (v2), adicionou Clustering
         e outras funções
           –        para enterprise
●
         2009, (v3) RI do JEE 6
           –        Nova arquitetura (OSGi,
                    fast-startup, etc)
    20   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish - História

●        V 3.1 – Fevereiro 2011
           –        Load Balancing
           –        Centralised Admin
●        V 3.1.1 – Julho 2011
           –        Correção de bugs




    21   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish - História

●
         V 3.1.2 – Fevereiro 2012
           –        Correção de bugs
           –        Novo console administrativo
           –        Melhorias no Thread Pool
           –        Transaction Recovery




    22   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish - Futuro

●
         Versão 4.0 - Roadmap
           –        Java EE 7
           –        Suporte a virtualização
           –        PaaS oriented




    23   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish 4.0
Servidor de Aplicação Enterprise Ready
Referência de Implementação Java EE 7


 24   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Migração simples do GlassFish para o Oracle
     WebLogic 12c




25   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Desenvolvimento JEE + leve c/ WebLogic 12c
                                                                     1GB
●
     Melhoría de 2X à 6X do tamanho do download para
     os desenvolvedores

●
     Sem instaladores, faça unzip e inicie o uso dentro do
     Windows, Linux ou OSX (Mac)
                                                                    6X
                                                                                       318MB
●
     Inicie uma instância com o parâmetro
             -Dservertype=wlx
                                para carregar o WebLogic                                                  168MB
     12c sem os contêiners de EJB, JMS e JCA                                           2X
●
     Faça download e utilize o produto sem custo
     (estudos), sem chaves de ativação ou datas de
     expiração dos produtos. Use a vasta documentação               Distribuição 11g   Distribuição 11g
                                                                                        (Formato Zip)
                                                                                                          Distribuição 12c

     online da Oracle


26   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
5
O que é?

         • Projeto Open Source da Apache
         • O Maven é:
                    –      Um sistema de build automatizado +
                    –      Um sistema de gestão de projetos +
                    –      Um sistema para gerir dependências +
                    –      Um sistema de descrição de projetos +
                    –      Um sistema de geração de sites + ...

28   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Apache Maven
●    Ferramenta de build
       –        Convention over configuration
       –        Arquivos POMs
       –        Repositório de artefatos
       –        Plugins




29   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Apache Maven
●    Perfeito para
       –        Integração Contínua
       –        Aceleração na ambientação de novos desenvolvedores




30   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Apache Maven
●    Principais Plugins para projetos Java EE 6
       –        WAR plugin
       –        EAR plugin
       –        GlassFish Embedded Plugin
       –        Dependency plugin
       –        Assembly plugin
       –        Groovy Maven Plugin
       –        Archetype Plugin


31   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
WAR plugin
<project>                                    |-- pom.xml
                                              `-- src
  <groupId>com.myproject</groupId>                 `-- main
  <artifactId>myproject</artifactId>                   |-- java
  <packaging>war</packaging>                           |    `-- com
  <version>1.0-SNAPSHOT</version>                      |        `-- example
                                                       |            `-- projects
  <build>                                              |                `-- SampleAction.java
    <plugins>                                          |-- resources
      <plugin>                                         |    `-- images
       <groupId>org.apache.maven.plugins</groupId>     |        `-- sampleimage.jpg
        <artifactId>maven-war-plugin </artifactId>     `-- webapp
        <version>2.2</version>                              |-- WEB-INF
        <configuration>                                     |   `-- web.xml
   <failOnMissingWebXml>false</failOnMissingWebXml>         |-- index.jsp
        </configuration>                                    `-- jsp
      </plugin>                                                 `-- websource.jsp
    </plugins>
  </build>
</project>


   32   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Definição das dependências
                                                                            <plugin>
●   Como controlar                                                            <groupId>org.apache.maven.plugins</groupId>
                                                                              <artifactId>maven-war-plugin</artifactId>
    quais dependências                                                        <version>2.2</version>
                                                                              <configuration>
    vão para o MANIFEST                                                         <archive>
                                                                                   <manifest>
    e/ou para o WEB-INF                                                               <addClasspath>true</addClasspath>
                                                                                   </manifest>
    /lib?                                                                       </archive>
                                                                              </configuration>
    –        default                                                        </plugin>

             vai para o MANIFEST, e no WEB-INF/lib
    –        <optional>true</optional>
             vai para o MANIFEST, mas não no WEB-INF/lib
    –        <scope>provided</scope>
             não vai para o MANIFEST, nem para o WEB-INF/lib

        33   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
EAR plugin                                                     |--   pom.xml
                                                                        |--   module-ear
                                                                        |     `-- pom.xml
<plugin>                                                                |--   module-ejb
  <groupId>org.apache.maven.plugins</groupId>                           |     |-- pom.xml
  <artifactId>maven-ear-plugin </artifactId>                            |     `-- src
  <version>2.7</version>                                                |         `-- main
</plugin>                                                               |             |-- java
                                                                        |             |    `-- com
<configuration>                                                         |             |        `-- myproject
  <modules>                                                             |             |            `-- MyStatelessBean.java
    <ejbModule>                                                         `--   module-web
      <groupId>com.myproject</groupId>                                        |-- pom.xml
      <artifactId>module-ejb</artifactId>                                     `-- src
                                                                                  `-- main
    </ejbModule>
                                                                                      |-- java
    <webModule>                                                                       |-- resources
      <groupId>com.myproject</groupId>                                                `-- webapp
      <artifactId>module-web</artifactId>
      <contextRoot>myproject</contextRoot>
    </webModule>
  </modules>
</configuration>


    34   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish Embedded plugin

●    Permite rodar o GlassFish (tanto Web quanto Full profile)
     a partir do Maven
       –        $ mvn embedded-glassfish:run
●    Permite fazer deploy e undeploy em uma instância
     remota
       –        $ mvn embedded-glassfish:deploy
       –        $ mvn embedded-glassfish:undeploy


35   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish Embedded plugin

     ●        Permite iniciar ou parar uma instância remota ou local
              (embedded)
                 –        $ mvn embedded-glassfish:start
                 –        $ mvn embedded-glassfish:stop
     ●        Permite administrar uma instância remote ou local
              (embedded)
                 –        $ mvn embedded-glassfish:admin



36   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish Embedded plugin
     ●        Como configurar?
                 –        Artefatos no repositório central (#win o/)
                 –        Dependências necessárias e seus escopos




37   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish Embedded plugin
     <dependency>
       <groupId>org.glassfish.main.extras</groupId>
       <artifactId>glassfish-embedded-all</artifactId>
       <!-- ou web para projetos q nao usam todo o profile JEE -->
       <version>3.1.2</version>
       <scope>test</scope>
     </dependency>

     <dependency>
       <groupId>javax</groupId>
       <artifactId>javaee-api</artifactId>
       <version>6.0</version>
       <scope>provided</scope>
     </dependency>


38   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish Embedded plugin

     ●        Como configurar?
                 –        Plugin
                 –        domain.xml (para DataSource e outras configurações de container)




39   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish Embedded plugin

     <plugin>
       <groupId>org.glassfish.embedded</groupId>
       <artifactId>maven-embedded-glassfish-plugin</artifactId>
       <version>3.1.2</version>
       <configuration>
         <goalPrefix>embedded-glassfish</goalPrefix>
         <configFile>src/test/resources/domain.xml</configFile>
         <contextRoot>/</contextRoot>
         <app>${project.build.directory}/${build.finalName}.war</app>
         <port>8080</port>
         <autoDelete>true</autoDelete>
       </configuration>
     </plugin>



40   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
WebLogic também tem Maven Plugin

     ●        Goals disponíveis:
                 –        install
                 –        create-domain
                 –        start-server
                 –        wlst
                 –        appc
                 –        deploy



41   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Integração com Servidores de IC




                                                                       Servidor de
                                                                       Integração
Repositório                                                             Contínua     Servidor
do Código                                               Compila &
                                                                                     WebLogic
                                                        Empacota
                                                                                     GlassFish
   42   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Outros plugins interessantes

     ●        Dependency
                 –        Visualizar as dependencias
                          $ mvn dependency:tree
                 –        Copiar as dependencias para algum diretório
                          $ mvn dependency:copy-dependencies
                 –        Criar um ClassPath
                          $ mvn dependency:build-classpath
                 –        Modo offline
                          $ mvn dependency:go-offline


43   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Outros plugins interessantes

●    Assembly
       –        Agregar artefatos e dependencias do projeto em um arquivo ou diretório,
                por exemplo:
                    ●       Criar um ZIP com todas as dependências
                    ●       Criar um ZIP com todos os fontes
                    ●       Criar um JAR (big-fat) executável




           <plugin>
44
             <groupId>org.apache.maven.plugins</groupId>
     Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Outros plugins interessantes
●    GMaven - Groovy
       –        Scripting no build usando linguagem Groovy
                    ●       Em alguns servidores, pode ser necessário criar arquivos XML
                            específicos (como deployment descriptors)
                    ●       Com o GMaven, é mais fácil de gerar esses arquivos

                                             <plugin>
                                                  <groupId>org.codehaus.gmaven</groupId>
                                                  <artifactId>gmaven-plugin</artifactId>
                                                  <version>1.3</version>
                                             </plugin>


45   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Exemplo GMaven
     <configuration> <source>
               def sw = new FileWriter(new File("target/module.xml"))
               def xml = new groovy.xml.MarkupBuilder(sw)
               xml.module(xmlns:'urn:jboss:module:1.0', name:'com.bemobi.infosender') {
                 resources {
                     project.runtimeClasspathElements.each {
                      def path = it.find(".*?([w.-]*.jar)") { it[1] }
                      !path?:'resource-root'(path:path) } }
                 dependencies {
                     'module'(name:'org.hibernate', export:'true')
                     'module'(name:'org.slf4j', export:'true')
                     'module'(name:'org.apache.commons.logging', export:'true')
                     'module'(name:'com.sun.xml.bind', export:'true')
                     'module'(name:'javaee.api', export:'true') }
               }
     </source> </configuration>



46    Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Outros plugins interessantes

     ●        Archetype
                 –        Auxilia na definição de “esqueletos” de projetos reutilizáveis
                 –        Grandes empresas podem se beneficiar, quando possuem
                          arquitetura padrão para todos os projetos




47   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Links
     ●        GlassFish                                             @glassfish
              http://www.glassfish.org
     ●        Embedded GlassFish (3.1.2 docs)
              http://bit.ly/eg312
     ●        Apache Maven
              http://maven.apache.org
     ●        Groovy Magen Plugin
              http://bit.ly/gmaven


48   Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish, Maven, Cloud e o futuro do Java EE

Mais conteúdo relacionado

PDF
GlassFish, Maven, Cloud e Java EE
ODP
GlassFish e Maven: Java EE sem dor!
PDF
Java ee 5
PDF
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
PDF
MC - Java Enterprise Edition 6 (Java EE)
PDF
Introducao EJB 3
PDF
Serra StarTec 2013 - Java EE
PDF
JSF com Primefaces
GlassFish, Maven, Cloud e Java EE
GlassFish e Maven: Java EE sem dor!
Java ee 5
Java EE no ambiente corporativo: primeiros passos WebLogic 12c
MC - Java Enterprise Edition 6 (Java EE)
Introducao EJB 3
Serra StarTec 2013 - Java EE
JSF com Primefaces

Mais procurados (20)

PDF
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
PPT
Enterprise JavaBeans simples e descomplicado, na prática
PDF
Tutorial EJB 3.0 (2009)
PPTX
Introdução a jsf
PDF
Introdução a Plataforma Java EE
PPS
ApresentaçãO Ejb (Enterprise Java Beans)
PDF
Tutorial Java EE
PDF
Java OO Middleware - JEE / EJB / RMI
PPT
JavaServer Faces Produtividade em Desenvolvimento
PDF
GUJavaSC - Unit Testing com Java EE
ODP
Desenvolvimento de Aplicações
PDF
Flisolgo2010
PDF
Construindo aplicações web java com netbeans
ODP
JSF e outras tecnologias Java Web - IMES.java
ZIP
Visão Geral de EJB 3.0
PDF
Java 8 - A Evolução da Linguagem
PPT
Desenvolvimento web em java com JSP e Servlets
PDF
Prime Faces
PPT
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Enterprise JavaBeans simples e descomplicado, na prática
Tutorial EJB 3.0 (2009)
Introdução a jsf
Introdução a Plataforma Java EE
ApresentaçãO Ejb (Enterprise Java Beans)
Tutorial Java EE
Java OO Middleware - JEE / EJB / RMI
JavaServer Faces Produtividade em Desenvolvimento
GUJavaSC - Unit Testing com Java EE
Desenvolvimento de Aplicações
Flisolgo2010
Construindo aplicações web java com netbeans
JSF e outras tecnologias Java Web - IMES.java
Visão Geral de EJB 3.0
Java 8 - A Evolução da Linguagem
Desenvolvimento web em java com JSP e Servlets
Prime Faces
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
Anúncio

Semelhante a GlassFish, Maven, Cloud e o futuro do Java EE (20)

PDF
O que ganhamos com Java e Cloud Computing?
PDF
GUJavaSC - Mini-curso Java EE
PDF
Desenvolvimento rápido de aplicações com JEE e JavaFX
PPTX
Curso jsf
ODP
Spring roo produtividade no java
PDF
Anatomia do JSF – JavaServer Faces
PDF
Spring: Overview do framework mais popular para desenvolvimento em Java
PDF
Java Platform, Enterprise Edition
PDF
Arquitetura jee bp_overview
PDF
Repensando padrões e boas práticas java ee
PPTX
Jsf com hibernate, spring security e maven
PPTX
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
PPTX
Java web
PPT
PPTX
JEE6 - Introdução
PDF
Netbeans slides
PDF
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
PDF
Desenvolvimento baseado em componentes com JSF
PDF
MySQL + Java - Manuel Contreras
PPTX
Aplicações ricas com JavaFX 2
O que ganhamos com Java e Cloud Computing?
GUJavaSC - Mini-curso Java EE
Desenvolvimento rápido de aplicações com JEE e JavaFX
Curso jsf
Spring roo produtividade no java
Anatomia do JSF – JavaServer Faces
Spring: Overview do framework mais popular para desenvolvimento em Java
Java Platform, Enterprise Edition
Arquitetura jee bp_overview
Repensando padrões e boas práticas java ee
Jsf com hibernate, spring security e maven
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Java web
JEE6 - Introdução
Netbeans slides
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Desenvolvimento baseado em componentes com JSF
MySQL + Java - Manuel Contreras
Aplicações ricas com JavaFX 2
Anúncio

Mais de Bruno Borges (20)

PDF
Secrets of Performance Tuning Java on Kubernetes
PDF
[Outdated] Secrets of Performance Tuning Java on Kubernetes
PDF
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
PDF
Making Sense of Serverless Computing
PPTX
Visual Studio Code for Java and Spring Developers
PDF
Taking Spring Apps for a Spin on Microsoft Azure Cloud
PDF
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
PPTX
Melhore o Desenvolvimento do Time com DevOps na Nuvem
PPTX
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
PPTX
Java EE Arquillian Testing with Docker & The Cloud
PPTX
Migrating From Applets to Java Desktop Apps in JavaFX
PDF
Servidores de Aplicação: Por quê ainda precisamos deles?
PDF
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
PDF
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
PDF
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
PDF
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
PDF
Running Oracle WebLogic on Docker Containers [BOF7537]
PPTX
Lightweight Java in the Cloud
PDF
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
PDF
Integrando Oracle BPM com Java EE e WebSockets
Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
Making Sense of Serverless Computing
Visual Studio Code for Java and Spring Developers
Taking Spring Apps for a Spin on Microsoft Azure Cloud
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Java EE Arquillian Testing with Docker & The Cloud
Migrating From Applets to Java Desktop Apps in JavaFX
Servidores de Aplicação: Por quê ainda precisamos deles?
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Running Oracle WebLogic on Docker Containers [BOF7537]
Lightweight Java in the Cloud
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Integrando Oracle BPM com Java EE e WebSockets

GlassFish, Maven, Cloud e o futuro do Java EE

  • 1. 1 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 2. GlassFish, Maven, Cloud e o futuro do Java EE Bruno Borges | Fusion Middleware | Product Management 2 bruno.borges@oracle.com Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 3. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 3 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 4. Agenda ● Java EE – Versão 6 – Futuro: Java EE 7 ● GlassFish – História – Futuro ● Apache Maven ● Embedded GlassFish Maven Plugin 4 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 5. O que o mercado procura? 5 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 6. Spring vs Java EE ? ● Java EE evoluiu graças ao Spring ● Full e Web profiles – lightweight! ● Spring utiliza recursos EE ● Java as a language / Java as a platform ● Java EE as a platform / Java EE as a framework 6 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 7. Desenvolvimento Moderno com Java EE 6 Flexível & Leve Estensível • API Java EE mais enxuta • Integre frameworks open source • DI (Dependency Injection) • Habilite a instalação “Drag & Drop” agora é um padrão Java EE de frameworks open source • Manipule cenários simples e • Extensões padrões para DI não complexos sem dependências criam mais lock-ins proprietários externas Produtividade no Desenvolvimento • Modelo de programação em POJOs • Mais anotações, melhor suporte de IDE • Menos config. XML, mais convenções • Anotações e não deployment descriptors 7 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 8. Mais produtividade, menos código: Java EE 6 25% 50% 80% Menos Classes Menos Linhas Menos Linhas Java* de Código* de XML* • Menos XML, Menos Código • Simplificação, Produtividade • Modernização • Java Server Faces 2.0 • Managed Beans 1.0 • Context & Dependency • Java Servlets 3.0 • Bean Validation 1.0 Injection 1.0 • Java Persistence 2.0 • JAX-WS 2.2 • Bean Validation 1.0 • Enterprise Java Beans 3.1 • Java API for RESTful & Interceptors 1.1 Web Services * Baseado em um aplicativo criado no JavaOne usando POJO / JPA / REST 8 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 9. Java EE 6 ● Java EE 6 – JSR 316 – Profiles – EJB 3.1 – JSF 2.0 – JSP 2.2 / Servlets 3.0 – JAX-RS – JAX-WS 2.2 – JPA 2.0 – Java EE Connectors 1.6 9 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 10. Java EE 6 ● As coisas boas do Java EE 6 – Não precisa mais de web.xml – Melhora na API de Servlets para tratar FileUpload – Validation (JSR 303) no JPA – CDI @Inject #FWT o/ 10 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 11. Java EE 6 ● As coisas boas do Java EE 6 – EJB do jeito que todo mundo queria ● Não precisa mais de um ejb-jar.xml ● Anotações ● @Singleton e @Startup beans ● @Schedule bean's methods ● Operações assíncronas 11 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 12. Do JEE 6 para o JEE 7 12 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 13. Java EE 7 Java EE 7
  • 14. Java EE 7 ● EJB 3.2 – JSR 345 – Suporte a multi-tenancy – Melhora no uso de anotações para simplificar o modelo de programação – Alinhamento com outras especificações como CDI, JMS e BeanValidation ● JPA 2.1 – JSR 338 – Introdução da interface StoredProcedureQuery 14 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 15. Java EE 7 ● Servlet 3.1 – JSR 340 – Suporte a WebSockets ● JSF 2.2 – JSR 344 – Mais fácil de criar componentes – HTML5 – Novos componentes – Mobile devices 15 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 16. Java EE 7 O mais esperado (IMO) ● JMS – Java Messaging Service 2.0 – JSR 343 ● Melhora no modelo de programação ● Integração com CDI ● Mudanças na API para permitir maior integração entre vendors de JMS com qualquer container JEE ● “Cloud-friendly”: suporte a multi-tenancy e outras funcionalidades relacinadas a Cloud 16 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 17. Java EE 7 O mais esperado (IMO) ● JMS – Java Messaging Service 2.0 – JSR 343 ● Melhora no modelo de programação ● Integração com CDI ● Mudanças na API para permitir maior integração entre vendors de JMS com qualquer container JEE ● “Cloud-friendly”: suporte a multi-tenancy e outras funcionalidades relacinadas a Cloud 17 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 18. Java EE 7 – Plataforma ideal para Cloud 18 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 20. GlassFish - História ● Criado pela Sun em 2005 ● 2006 (v1), RI do JEE 5 – para desenvolvedores ● 2007 (v2), adicionou Clustering e outras funções – para enterprise ● 2009, (v3) RI do JEE 6 – Nova arquitetura (OSGi, fast-startup, etc) 20 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 21. GlassFish - História ● V 3.1 – Fevereiro 2011 – Load Balancing – Centralised Admin ● V 3.1.1 – Julho 2011 – Correção de bugs 21 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 22. GlassFish - História ● V 3.1.2 – Fevereiro 2012 – Correção de bugs – Novo console administrativo – Melhorias no Thread Pool – Transaction Recovery 22 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 23. GlassFish - Futuro ● Versão 4.0 - Roadmap – Java EE 7 – Suporte a virtualização – PaaS oriented 23 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 24. GlassFish 4.0 Servidor de Aplicação Enterprise Ready Referência de Implementação Java EE 7 24 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 25. Migração simples do GlassFish para o Oracle WebLogic 12c 25 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 26. Desenvolvimento JEE + leve c/ WebLogic 12c 1GB ● Melhoría de 2X à 6X do tamanho do download para os desenvolvedores ● Sem instaladores, faça unzip e inicie o uso dentro do Windows, Linux ou OSX (Mac) 6X 318MB ● Inicie uma instância com o parâmetro -Dservertype=wlx para carregar o WebLogic 168MB 12c sem os contêiners de EJB, JMS e JCA 2X ● Faça download e utilize o produto sem custo (estudos), sem chaves de ativação ou datas de expiração dos produtos. Use a vasta documentação Distribuição 11g Distribuição 11g (Formato Zip) Distribuição 12c online da Oracle 26 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 27. 5
  • 28. O que é? • Projeto Open Source da Apache • O Maven é: – Um sistema de build automatizado + – Um sistema de gestão de projetos + – Um sistema para gerir dependências + – Um sistema de descrição de projetos + – Um sistema de geração de sites + ... 28 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 29. Apache Maven ● Ferramenta de build – Convention over configuration – Arquivos POMs – Repositório de artefatos – Plugins 29 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 30. Apache Maven ● Perfeito para – Integração Contínua – Aceleração na ambientação de novos desenvolvedores 30 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 31. Apache Maven ● Principais Plugins para projetos Java EE 6 – WAR plugin – EAR plugin – GlassFish Embedded Plugin – Dependency plugin – Assembly plugin – Groovy Maven Plugin – Archetype Plugin 31 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 32. WAR plugin <project> |-- pom.xml `-- src <groupId>com.myproject</groupId> `-- main <artifactId>myproject</artifactId> |-- java <packaging>war</packaging> | `-- com <version>1.0-SNAPSHOT</version> | `-- example | `-- projects <build> | `-- SampleAction.java <plugins> |-- resources <plugin> | `-- images <groupId>org.apache.maven.plugins</groupId> | `-- sampleimage.jpg <artifactId>maven-war-plugin </artifactId> `-- webapp <version>2.2</version> |-- WEB-INF <configuration> | `-- web.xml <failOnMissingWebXml>false</failOnMissingWebXml> |-- index.jsp </configuration> `-- jsp </plugin> `-- websource.jsp </plugins> </build> </project> 32 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 33. Definição das dependências <plugin> ● Como controlar <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> quais dependências <version>2.2</version> <configuration> vão para o MANIFEST <archive> <manifest> e/ou para o WEB-INF <addClasspath>true</addClasspath> </manifest> /lib? </archive> </configuration> – default </plugin> vai para o MANIFEST, e no WEB-INF/lib – <optional>true</optional> vai para o MANIFEST, mas não no WEB-INF/lib – <scope>provided</scope> não vai para o MANIFEST, nem para o WEB-INF/lib 33 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 34. EAR plugin |-- pom.xml |-- module-ear | `-- pom.xml <plugin> |-- module-ejb <groupId>org.apache.maven.plugins</groupId> | |-- pom.xml <artifactId>maven-ear-plugin </artifactId> | `-- src <version>2.7</version> | `-- main </plugin> | |-- java | | `-- com <configuration> | | `-- myproject <modules> | | `-- MyStatelessBean.java <ejbModule> `-- module-web <groupId>com.myproject</groupId> |-- pom.xml <artifactId>module-ejb</artifactId> `-- src `-- main </ejbModule> |-- java <webModule> |-- resources <groupId>com.myproject</groupId> `-- webapp <artifactId>module-web</artifactId> <contextRoot>myproject</contextRoot> </webModule> </modules> </configuration> 34 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 35. GlassFish Embedded plugin ● Permite rodar o GlassFish (tanto Web quanto Full profile) a partir do Maven – $ mvn embedded-glassfish:run ● Permite fazer deploy e undeploy em uma instância remota – $ mvn embedded-glassfish:deploy – $ mvn embedded-glassfish:undeploy 35 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 36. GlassFish Embedded plugin ● Permite iniciar ou parar uma instância remota ou local (embedded) – $ mvn embedded-glassfish:start – $ mvn embedded-glassfish:stop ● Permite administrar uma instância remote ou local (embedded) – $ mvn embedded-glassfish:admin 36 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 37. GlassFish Embedded plugin ● Como configurar? – Artefatos no repositório central (#win o/) – Dependências necessárias e seus escopos 37 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 38. GlassFish Embedded plugin <dependency> <groupId>org.glassfish.main.extras</groupId> <artifactId>glassfish-embedded-all</artifactId> <!-- ou web para projetos q nao usam todo o profile JEE --> <version>3.1.2</version> <scope>test</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0</version> <scope>provided</scope> </dependency> 38 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 39. GlassFish Embedded plugin ● Como configurar? – Plugin – domain.xml (para DataSource e outras configurações de container) 39 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 40. GlassFish Embedded plugin <plugin> <groupId>org.glassfish.embedded</groupId> <artifactId>maven-embedded-glassfish-plugin</artifactId> <version>3.1.2</version> <configuration> <goalPrefix>embedded-glassfish</goalPrefix> <configFile>src/test/resources/domain.xml</configFile> <contextRoot>/</contextRoot> <app>${project.build.directory}/${build.finalName}.war</app> <port>8080</port> <autoDelete>true</autoDelete> </configuration> </plugin> 40 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 41. WebLogic também tem Maven Plugin ● Goals disponíveis: – install – create-domain – start-server – wlst – appc – deploy 41 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 42. Integração com Servidores de IC Servidor de Integração Repositório Contínua Servidor do Código Compila & WebLogic Empacota GlassFish 42 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 43. Outros plugins interessantes ● Dependency – Visualizar as dependencias $ mvn dependency:tree – Copiar as dependencias para algum diretório $ mvn dependency:copy-dependencies – Criar um ClassPath $ mvn dependency:build-classpath – Modo offline $ mvn dependency:go-offline 43 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 44. Outros plugins interessantes ● Assembly – Agregar artefatos e dependencias do projeto em um arquivo ou diretório, por exemplo: ● Criar um ZIP com todas as dependências ● Criar um ZIP com todos os fontes ● Criar um JAR (big-fat) executável <plugin> 44 <groupId>org.apache.maven.plugins</groupId> Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 45. Outros plugins interessantes ● GMaven - Groovy – Scripting no build usando linguagem Groovy ● Em alguns servidores, pode ser necessário criar arquivos XML específicos (como deployment descriptors) ● Com o GMaven, é mais fácil de gerar esses arquivos <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.3</version> </plugin> 45 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 46. Exemplo GMaven <configuration> <source> def sw = new FileWriter(new File("target/module.xml")) def xml = new groovy.xml.MarkupBuilder(sw) xml.module(xmlns:'urn:jboss:module:1.0', name:'com.bemobi.infosender') { resources { project.runtimeClasspathElements.each { def path = it.find(".*?([w.-]*.jar)") { it[1] } !path?:'resource-root'(path:path) } } dependencies { 'module'(name:'org.hibernate', export:'true') 'module'(name:'org.slf4j', export:'true') 'module'(name:'org.apache.commons.logging', export:'true') 'module'(name:'com.sun.xml.bind', export:'true') 'module'(name:'javaee.api', export:'true') } } </source> </configuration> 46 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 47. Outros plugins interessantes ● Archetype – Auxilia na definição de “esqueletos” de projetos reutilizáveis – Grandes empresas podem se beneficiar, quando possuem arquitetura padrão para todos os projetos 47 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
  • 48. Links ● GlassFish @glassfish http://www.glassfish.org ● Embedded GlassFish (3.1.2 docs) http://bit.ly/eg312 ● Apache Maven http://maven.apache.org ● Groovy Magen Plugin http://bit.ly/gmaven 48 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware