SlideShare uma empresa Scribd logo
1 de 18
Agenda
• Onde estamos ?
• Por Onde Começar ?
• Rode a aplicação com a JDK 11+.
• Compile a Aplicação com Java 11+.
• Modularize sua Biblioteca.
Em 2019 estavamos neste cenário
Fonte da pesquisa: https://www.jetbrains.com/lp/devecosystem-2019/java/
E em 2020 estamos neste cenário
Fonte da pesquisa: https://snyk.io/blog/jvm-ecosystem-report-2020/
E onde estamos agora ?
É hora de Migrar ?
É hora de Migrar ?
O que melhora com o upgrade ?
O que você ganha do JDK 8 para JDK 11+?
• Se adequa a versões mais recentes do Java.
• Suporte para Linux containers (Docker incluso).
• Suporte do parallel full garbage collection no G1.
• Pode usar Application Class-Data Sharing. (Link no QrCode)
• Pode usar o Flight Recorder e Heap Profiler, mesmo em ambiente produtivo grátis.
• Alocação de Heap em dispositivos de memórias alternativos.
• Novo set default de root authority certificates.
• Novos Garbage Collectors: ZGC,Epsilon e Shenondoah.
• Ahead-of-time compilation e GraalVM.
• Transport Layer Security (TLS) 1.3.
• JShell.
Por Onde Começar ?
Basicamente você tem três fases incrementais para
migrar:
1. Rode a aplicação existente com a JDK 11.
2. Compile a aplicação/bibliotecas com o Java 11.
3. Modularize a aplicação para usar o Sistema de
Módulos
Rode a aplicação com a JDK 11+ – Problemas esperados.
Foram Removidos da JDK:
• the JavaBeans Activation Framework (JAF) in
javax.activation
• CORBA in the packages javax.activity, javax.rmi,
javax.rmi.CORBA, and org.omg.*
• the Java Transaction API (JTA) in the package
javax.transaction
• JAXB in the packages javax.xml.bind.*
• JAX-WS in the packages javax.jws, javax.jws.soap,
javax.xml.soap, and javax.xml.ws.*
• Commons Annotation in the package javax.annotation
Rode a aplicação com a JDK 11+ – Problemas esperados.
Você pode ter erro na compilação:
Se passar a compilação, a hora de executar:
Compile a Aplicação com Java 11+
• Local variable type inference (var keyword). (Link no QrCode)
• Novas collections APIs nativas e imutáveis.
• Novo reactive streams APIs.
• Melhorias em streams/predicate/optional APIs.
• Melhorias no system process API.
• Melhorias na files API.
• Suporte para HTTP/2.
• Standard Java Async HTTP client.
• Multi-release JARs.
Compile a Aplicação com Java 11+ – Problemas esperados.
Você pode ter erro na compilação:
Se passar a compilação, a hora de executar:
Modularize sua Biblioteca
• Permite o desenvolvimento Modularizado das
aplicações
• Um módulo é um conjunto de pacotes desenhados
para reuso.
• Transformar Bibliotecas em Módulos
• Encapsulamento Forte
• Configuração Confiável
• Classpath -> ModulePath
• Jdeps te ajuda a ver as dependências da sua aplicação
• Ajuda a criar uma JRE mínima para sua aplicação
• Diminui o footprint de memória da aplicação
• Otimizar o start da aplicação
Modularize sua Aplicação
Dúvidas
Migrando para Java 11+: Guia passo-a-passo para atualizar sua aplicação

Mais conteúdo relacionado

Mais procurados

TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhatdc-globalcode
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetesRicardo Katz
 
Otimizando sites com o nosql redis
Otimizando sites com o nosql redisOtimizando sites com o nosql redis
Otimizando sites com o nosql redisAllisson Azevedo
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?tdc-globalcode
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeRoberto Hashioka
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker ContainersHugo Henley
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...Renato Groff
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesjoanio trade
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Renato Groff
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsCaio Ribeiro Pereira
 
Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)Marcus Lacerda
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 RemarksRicardo Katz
 

Mais procurados (13)

TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
 
Otimizando sites com o nosql redis
Otimizando sites com o nosql redisOtimizando sites com o nosql redis
Otimizando sites com o nosql redis
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
 
Projeto OpenJDK [Java8]
Projeto OpenJDK [Java8]Projeto OpenJDK [Java8]
Projeto OpenJDK [Java8]
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandes
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 Remarks
 

Semelhante a Migrando para Java 11+: Guia passo-a-passo para atualizar sua aplicação

A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
Jud con presentation_brazil_sergio-fantin
Jud con presentation_brazil_sergio-fantinJud con presentation_brazil_sergio-fantin
Jud con presentation_brazil_sergio-fantinserjaumfantin
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - AvançadoAdriano Schmidt
 
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraCurso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraWellington Oliveira
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureDr. Spock
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEBruno Borges
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma JavaFilipe Portes
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Dr. Spock
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 

Semelhante a Migrando para Java 11+: Guia passo-a-passo para atualizar sua aplicação (20)

A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Jud con presentation_brazil_sergio-fantin
Jud con presentation_brazil_sergio-fantinJud con presentation_brazil_sergio-fantin
Jud con presentation_brazil_sergio-fantin
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
JavaFX Mobile
JavaFX MobileJavaFX Mobile
JavaFX Mobile
 
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraCurso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Javafx
JavafxJavafx
Javafx
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Java pode ser_hipster
Java pode ser_hipsterJava pode ser_hipster
Java pode ser_hipster
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma Java
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 

Migrando para Java 11+: Guia passo-a-passo para atualizar sua aplicação

  • 1.
  • 2.
  • 3. Agenda • Onde estamos ? • Por Onde Começar ? • Rode a aplicação com a JDK 11+. • Compile a Aplicação com Java 11+. • Modularize sua Biblioteca.
  • 4. Em 2019 estavamos neste cenário Fonte da pesquisa: https://www.jetbrains.com/lp/devecosystem-2019/java/
  • 5. E em 2020 estamos neste cenário Fonte da pesquisa: https://snyk.io/blog/jvm-ecosystem-report-2020/
  • 6. E onde estamos agora ?
  • 7. É hora de Migrar ?
  • 8. É hora de Migrar ?
  • 9. O que melhora com o upgrade ? O que você ganha do JDK 8 para JDK 11+? • Se adequa a versões mais recentes do Java. • Suporte para Linux containers (Docker incluso). • Suporte do parallel full garbage collection no G1. • Pode usar Application Class-Data Sharing. (Link no QrCode) • Pode usar o Flight Recorder e Heap Profiler, mesmo em ambiente produtivo grátis. • Alocação de Heap em dispositivos de memórias alternativos. • Novo set default de root authority certificates. • Novos Garbage Collectors: ZGC,Epsilon e Shenondoah. • Ahead-of-time compilation e GraalVM. • Transport Layer Security (TLS) 1.3. • JShell.
  • 10. Por Onde Começar ? Basicamente você tem três fases incrementais para migrar: 1. Rode a aplicação existente com a JDK 11. 2. Compile a aplicação/bibliotecas com o Java 11. 3. Modularize a aplicação para usar o Sistema de Módulos
  • 11. Rode a aplicação com a JDK 11+ – Problemas esperados. Foram Removidos da JDK: • the JavaBeans Activation Framework (JAF) in javax.activation • CORBA in the packages javax.activity, javax.rmi, javax.rmi.CORBA, and org.omg.* • the Java Transaction API (JTA) in the package javax.transaction • JAXB in the packages javax.xml.bind.* • JAX-WS in the packages javax.jws, javax.jws.soap, javax.xml.soap, and javax.xml.ws.* • Commons Annotation in the package javax.annotation
  • 12. Rode a aplicação com a JDK 11+ – Problemas esperados. Você pode ter erro na compilação: Se passar a compilação, a hora de executar:
  • 13. Compile a Aplicação com Java 11+ • Local variable type inference (var keyword). (Link no QrCode) • Novas collections APIs nativas e imutáveis. • Novo reactive streams APIs. • Melhorias em streams/predicate/optional APIs. • Melhorias no system process API. • Melhorias na files API. • Suporte para HTTP/2. • Standard Java Async HTTP client. • Multi-release JARs.
  • 14. Compile a Aplicação com Java 11+ – Problemas esperados. Você pode ter erro na compilação: Se passar a compilação, a hora de executar:
  • 15. Modularize sua Biblioteca • Permite o desenvolvimento Modularizado das aplicações • Um módulo é um conjunto de pacotes desenhados para reuso. • Transformar Bibliotecas em Módulos • Encapsulamento Forte • Configuração Confiável • Classpath -> ModulePath • Jdeps te ajuda a ver as dependências da sua aplicação • Ajuda a criar uma JRE mínima para sua aplicação • Diminui o footprint de memória da aplicação • Otimizar o start da aplicação