65
1 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware GlassFish, Maven, Cloud e o futuro do Java EE Bruno Borges | Fusion Middleware | Product Management [email protected]

GlassFish, Maven, Cloud e Java EE

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: GlassFish, Maven, Cloud e Java EE

1 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

GlassFish, Maven, Cloud e o futuro do Java EE

Bruno Borges | Fusion Middleware | Product [email protected]

Page 2: GlassFish, Maven, Cloud e Java EE
Page 3: GlassFish, Maven, Cloud e Java EE

Java EE 7JCP 2.8

Page 4: GlassFish, Maven, Cloud e Java EE

5 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Java EE 7Java SE 8 e Java EE 7

Page 5: GlassFish, Maven, Cloud e Java EE

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

Page 6: GlassFish, Maven, Cloud e Java EE

7 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Java EE 7MySQL Server

Page 7: GlassFish, Maven, Cloud e Java EE

8 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Java EE 7Java Embedded

Page 8: GlassFish, Maven, Cloud e Java EE

9 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Java EE 7GlassFish 4.0

Page 9: GlassFish, Maven, Cloud e Java EE

10 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Java EE 7Open Source Java FX

Page 10: GlassFish, Maven, Cloud e Java EE

Java EE 7Oracle moved Java forward!

Page 11: GlassFish, Maven, Cloud e Java EE

Java EE 7JavaOne Brasil

Brasil

Page 12: GlassFish, Maven, Cloud e Java EE

bit.ly/JavaMagazine

Page 13: GlassFish, Maven, Cloud e Java EE

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.

Page 14: GlassFish, Maven, Cloud e Java EE

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

Page 15: GlassFish, Maven, Cloud e Java EE

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

Page 16: GlassFish, Maven, Cloud e Java EE

17 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

O que o mercado procura?

Page 17: GlassFish, Maven, Cloud e Java EE

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

Page 18: GlassFish, Maven, Cloud e Java EE

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

Page 19: GlassFish, Maven, Cloud e Java EE

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

Page 20: GlassFish, Maven, Cloud e Java EE

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

Page 21: GlassFish, Maven, Cloud e Java EE

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

Page 22: GlassFish, Maven, Cloud e Java EE

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

Page 23: GlassFish, Maven, Cloud e Java EE

24 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Do JEE 6 para o JEE 7

Page 24: GlassFish, Maven, Cloud e Java EE

Java EE 7Java EE 7

Page 25: GlassFish, Maven, Cloud e Java EE

26 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Java EE 7 – JSRs candidatas

Page 26: GlassFish, Maven, Cloud e Java EE

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

Page 27: GlassFish, Maven, Cloud e Java EE

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

Page 28: GlassFish, Maven, Cloud e Java EE

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

Page 29: GlassFish, Maven, Cloud e Java EE

30 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Ofertas de Cloud atuais

IaaS

IaaS

PaaS

PaaS

SaaSSaaS

Page 30: GlassFish, Maven, Cloud e Java EE

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

Page 31: GlassFish, Maven, Cloud e Java EE

32 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Quem oferece Java EE como PaaS?

Page 32: GlassFish, Maven, Cloud e Java EE

33 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Java EE 7 – Plataforma ideal para Cloud

Page 33: GlassFish, Maven, Cloud e Java EE

Java EE 7Oracle GlassFish Server

Page 34: GlassFish, Maven, Cloud e Java EE

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

Page 35: GlassFish, Maven, Cloud e Java EE

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

Page 36: GlassFish, Maven, Cloud e Java EE

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

Page 37: GlassFish, Maven, Cloud e Java EE

38 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

● Versão 4.0 - Roadmap

– Java EE 7

– Suporte a virtualização

– PaaS oriented

GlassFish - Futuro

Page 38: GlassFish, Maven, Cloud e Java EE

39 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

GlassFish 4.0Servidor de Aplicação Enterprise ReadyReferência de Implementação Java EE 7

Page 39: GlassFish, Maven, Cloud e Java EE

40 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Migração simples do GlassFish para o Oracle WebLogic 12c

Page 40: GlassFish, Maven, Cloud e Java EE

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

Page 41: GlassFish, Maven, Cloud e Java EE

5

Page 42: GlassFish, Maven, Cloud e Java EE

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 + ...

Page 43: GlassFish, Maven, Cloud e Java EE

44 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Apache Maven

● Ferramenta de build– Convention over configuration

– Arquivos POMs

– Repositório de artefatos

– Plugins

Page 44: GlassFish, Maven, Cloud e Java EE

45 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

Apache Maven

● Perfeito para– Integração Contínua

– Aceleração na ambientação de novos desenvolvedores

Page 45: GlassFish, Maven, Cloud e Java EE

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

Page 46: GlassFish, Maven, Cloud e Java EE

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>

Page 47: GlassFish, Maven, Cloud e Java EE

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>

Page 48: GlassFish, Maven, Cloud e Java EE

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>

Page 49: GlassFish, Maven, Cloud e Java EE

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

Page 50: GlassFish, Maven, Cloud e Java EE

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

Page 51: GlassFish, Maven, Cloud e Java EE

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

Page 52: GlassFish, Maven, Cloud e Java EE

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>

Page 53: GlassFish, Maven, Cloud e Java EE

54 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

GlassFish Embedded plugin

● Como configurar?– Plugin

– domain.xml (para DataSource e outras configurações de container)

Page 54: GlassFish, Maven, Cloud e Java EE

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>

Page 55: GlassFish, Maven, Cloud e Java EE

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

Page 56: GlassFish, Maven, Cloud e Java EE

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

Page 57: GlassFish, Maven, Cloud e Java EE

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

Page 58: GlassFish, Maven, Cloud e Java EE

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>

Page 59: GlassFish, Maven, Cloud e Java EE

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>

Page 60: GlassFish, Maven, Cloud e Java EE

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>

Page 61: GlassFish, Maven, Cloud e Java EE

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

Page 62: GlassFish, Maven, Cloud e Java EE

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

Page 63: GlassFish, Maven, Cloud e Java EE

64 Oracle Technical Workshop | WebLogic 12c & Fusion Middleware

http://www.youtube.com/watch?v=I5lAgaCbqZ0

Page 64: GlassFish, Maven, Cloud e Java EE

http://www.youtube.com/watch?v=I5lAgaCbqZ0