O documento discute as etapas para migrar uma aplicação Java do JDK 8 para o JDK 11+, incluindo: (1) rodar a aplicação existente com o JDK 11+ e possíveis problemas, (2) compilar a aplicação com o JDK 11+ e possíveis problemas, (3) modularizar a aplicação para usar o sistema de módulos.
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