Upload
bruno-borges
View
1.253
Download
4
Embed Size (px)
DESCRIPTION
Citation preview
1 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish, Maven, Cloud e o futuro do Java EE
Bruno Borges | Fusion Middleware | Product [email protected]
Java EE 7JCP 2.8
5 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7Java SE 8 e Java EE 7
6 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Novidades em produtos Oracle
● Oracle ADF Essentials– Grátis para desenvolvedores e para deployment em produção
– Deploy em qualquer servidor de aplicação Java EE
● Oracle WebLogic Server 12c– ZIP com apenas 183 Mb
– Grátis para desenvolvedores
● Oracle ADF Mobile– iOS
– Android
7 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7MySQL Server
8 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7Java Embedded
9 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7GlassFish 4.0
10 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7Open Source Java FX
Java EE 7Oracle moved Java forward!
Java EE 7JavaOne Brasil
Brasil
bit.ly/JavaMagazine
14 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.
15 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Bruno Borges
● Desenvolvedor há 12 anos
● Florianópolis, Rio de Janeiro e São Paulo
● Conferências– JavaOne, JustJava, ApacheCon, The Developers Conference,
Profissão Java
● Evangelista Java EE – Oracle do Brasil
@brunoborges
16 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
17 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
O que o mercado procura?
18 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
19 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Desenvolvimento Moderno com Java EE 6
• API Java EE mais enxuta• DI (Dependency Injection)
agora é um padrão Java EE• Manipule cenários simples e
complexos sem dependências externas
Flexível & Leve
• Integre frameworks open source• Habilite a instalação “Drag & Drop”
de frameworks open source• Extensões padrões para DI não
criam mais lock-ins proprietários
Estensível
• 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
Produtividade noDesenvolvimento
20 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Mais produtividade, menos código: Java EE 6
* Baseado em um aplicativo criado no JavaOne usando POJO / JPA / REST
• Menos XML, Menos Código• Java Server Faces 2.0• Java Servlets 3.0• Java Persistence 2.0• Enterprise Java Beans 3.1
& Interceptors 1.1
25%Menos Classes
Java*
50%Menos Linhas
de Código*
80%Menos Linhas
de XML*
• Simplificação, Produtividade• Managed Beans 1.0• Bean Validation 1.0• JAX-WS 2.2
• Modernização• Context & Dependency
Injection 1.0• Bean Validation 1.0• Java API for RESTful
Web Services
21 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
22 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
● 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/
Java EE 6
23 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
● 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
Java EE 6
24 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Do JEE 6 para o JEE 7
Java EE 7Java EE 7
26 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7 – JSRs candidatas
27 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
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
28 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
● Servlet 3.1 e WebSockets
JSF 2.2 – JSR 344
– Mais fácil de criar componentes
– HTML5 e
– Template em HTML puro
– Novos componentes
– Mobile devices
Java EE 7
29 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
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
Java EE 7
30 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Ofertas de Cloud atuais
IaaS
IaaS
PaaS
PaaS
SaaSSaaS
31 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Areas de Foco do Java EE 7 e 8
● Provisionamento
● Elasticidade
● EscalabilidadeAutônoma
● Multi-Tenancy
● Jigsaw
● Interop com OSGi
● Suportar profiles e apps modulares
● JSON
● WebSockets
● APIs
● DOM
● Offline
32 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Quem oferece Java EE como PaaS?
33 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Java EE 7 – Plataforma ideal para Cloud
Java EE 7Oracle GlassFish Server
35 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
● 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)
GlassFish - História
36 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
● V 3.1 – Fevereiro 2011
– Load Balancing
– Centralised Admin
● V 3.1.1 – Julho 2011
– Correção de bugs
GlassFish - História
37 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
● V 3.1.2 – Fevereiro 2012
– Correção de bugs
– Novo console administrativo
– Melhorias no Thread Pool
– Transaction Recovery
GlassFish - História
38 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
● Versão 4.0 - Roadmap
– Java EE 7
– Suporte a virtualização
– PaaS oriented
GlassFish - Futuro
39 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish 4.0Servidor de Aplicação Enterprise ReadyReferência de Implementação Java EE 7
40 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Migração simples do GlassFish para o Oracle WebLogic 12c
41 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Desenvolvimento JEE + leve c/ WebLogic 12c
● 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)
● Inicie uma instância com o parâmetro -Dservertype=wlx para carregar o WebLogic 12c sem os contêiners de EJB, JMS e JCA
● 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 online da Oracle
168MB
318MB
1GB
6X
2X
Distribuição 11g Distribuição 11g(Formato Zip)
Distribuição 12c
5
43 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
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 + ...
44 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Apache Maven
● Ferramenta de build– Convention over configuration
– Arquivos POMs
– Repositório de artefatos
– Plugins
45 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Apache Maven
● Perfeito para– Integração Contínua
– Aceleração na ambientação de novos desenvolvedores
46 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
47 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
WAR plugin
|-- pom.xml `-- src `-- main |-- java | `-- com | `-- example | `-- projects | `-- SampleAction.java |-- resources | `-- images | `-- sampleimage.jpg `-- webapp |-- WEB-INF | `-- web.xml |-- index.jsp `-- jsp `-- websource.jsp
<project>
<groupId>com.myproject</groupId> <artifactId>myproject</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build></project>
48 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Definição das dependências
● Como controlarquais dependênciasvão para o MANIFESTe/ou para o WEB-INF/lib?
– defaultvai 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
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> </manifest> </archive> </configuration></plugin>
49 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
EAR plugin |-- pom.xml|-- module-ear| `-- pom.xml|-- module-ejb| |-- pom.xml| `-- src| `-- main| |-- java| | `-- com| | `-- myproject| | `-- MyStatelessBean.java`-- module-web |-- pom.xml `-- src `-- main |-- java |-- resources `-- webapp
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <version>2.7</version></plugin>
<configuration> <modules> <ejbModule> <groupId>com.myproject</groupId> <artifactId>module-ejb</artifactId> </ejbModule> <webModule> <groupId>com.myproject</groupId> <artifactId>module-web</artifactId> <contextRoot>myproject</contextRoot> </webModule> </modules></configuration>
50 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
51 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
52 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
53 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>
54 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
GlassFish Embedded plugin
● Como configurar?– Plugin
– domain.xml (para DataSource e outras configurações de container)
55 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>
56 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
WebLogic também tem Maven Plugin
● Goals disponíveis:– install
– create-domain
– start-server
– wlst
– appc
– deploy
57 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Integração com Servidores de IC
Servidor de Integração ContínuaRepositório
do CódigoServidor
WebLogicGlassFish
Compila & Empacota
58 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
59 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> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> </plugin>
60 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>
61 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>
62 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
63 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
Links
● GlassFish @glassfishhttp://www.glassfish.org
● Embedded GlassFish (3.1.2 docs)http://bit.ly/eg312
● Apache Mavenhttp://maven.apache.org
● Groovy Magen Pluginhttp://bit.ly/gmaven
64 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware
http://www.youtube.com/watch?v=I5lAgaCbqZ0
http://www.youtube.com/watch?v=I5lAgaCbqZ0