Iniciando com Java 11 - Parte 1
Este post tem como objetivo ajudar na utilização do Java 11 com o OpenJDK, mas sem precisar remover o Java 8 ou comprometer seu ambiente atual. Vamos trabalhar com as duas versões e migrar as aplicações aos poucos. Assumindo que você já possui um ambiente de desenvolvimento com Java 8 e Maven. Nos exemplos, estarei utilizando o Linux Mint.
Instalando o OpenJDK 11 junto com o JDK 8
A ideia é manter a versão atual do seu Java, instalar o JDK 11 e rodar uma versão ou outra conforme a necessidade do projeto. Veremos como é fácil administrar isso com algumas ferramentas. Quando me referir a Java 11, JDK ou OpenJDK, sempre estarei me referindo ao OpenJDK 11.
Instalação
É comum termos problemas quando temos mais de uma versão do Java na mesma máquina. Para resolver isso, acabamos fazendo vários scripts para alterar o JAVA_HOME, utilizamos o framework alternatives e muitas vezes precisamos reiniciar a sessão do usuário para que as alterações tenham efeito.
Download do OpenJDK:
Instalando o jEnv:
$ wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz $ sudo tar xvf openjdk-11.0.1_linux-x64_bin.tar.gz --directory /usr/lib/jvm/
Depois disso, se rodar o comando "java -version" verá que nada mudou e continuamos com o Java 8:
$ java -version java version "1.8.0_191"Java(TM) SE Runtime Environment (build 1.8.0_191-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)O maven também continua lá com o Java atual:
$ mvn -version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T15:33:14-03:00) Maven home: /opt/maven Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-8-oracle/jre
Para verificar se o Java 11 está ok, basta rodar o comando:
$ /usr/lib/jvm/jdk-11.0.1/bin/java -version
openjdk version "11.0.1" 2018-10-16 OpenJDK Runtime Environment 18.9 (build 11.0.1+13) OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
Pronto! Temos as duas versões do Java na mesma máquina, e agora?
Assumindo que a maioria dos nossos projetos estarão com Java 8 por algum tempo, vamos definir esta versão como a "global" e o Java 11 como a versão "local".
jEnv
jEnv é uma ferramenta de linha de comando para ajudá-lo a esquecer como definir a variável de ambiente JAVA_HOME. É uma a ferramenta que permite configurar versões do Java de forma global ou local.
Assumindo que já temos o Java 8 instalado e configurado utilizando com o maven por exemplo.
Instalando o jEnv:
Esta ferramenta está disponível apenas para Linux e Mac. Para instalar no Linux, siga os passos abaixo (assumindo que tenha o git instalado):
$ git clone https://github.com/gcuisinier/jenv.git ~/.jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc $ echo 'eval "$(jenv init -)"' >> ~/.zshrcFeche o terminal e abra novamente. Execute o comando jenv
Se tudo estiver ok, Deverá exibir a mensagem "jenv" + "versão". Ex: jenv 0.5.1-5-gaf89d78
Caso não funcione, execute o passo 2, para o bashrc em vez do bash_profile
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(jenv init -)"' >> ~/.bashrc
Adicionando as versões do Java ao jEnv:
Java 8:
$ jenv add /usr/lib/jvm/java-8-oracleJava 11:
$ jenv add /usr/lib/jvm/jdk-11.0.1Verificando as versões:
$ jenv versions
system
11.0
11.0.1 (set by /home/sandro/.jenv/version)
1.8
1.8.0.191
Executando
Supondo que você precise manter o Java 8 como padrão para as aplicações legadas e utilizar o Java 11 em determinados projetos ou diretórios.
Definindo a versão global:
$ jenv global 1.8.0.191Definindo a versão local (por diretório):
$ jenv local 11.0.1
Criando um projeto Java 11
Para testar, vamos gerar um projeto Spring Boot para Java 11 e compilar.Acesse https://start.spring.io/
Defina o projeto conforme as especificações acima. Clique em Switch to the full version. Em Java version, selecione Java 11 e gere o projeto. Será feito o download de um arquivo .zip
Crie uma pasta chamada java11. No meu caso, ficou assim:
Se você digitar java -version, verá que estamos na versão 8 que é a global. $ /home/sandro/Downloads/java11
Tente compilar o projeto com o maven:
$ mvn clean installVerá que um erro será gerado:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project java11: Fatal error compiling: invalid target release: 11 -> [Help 1]
O maven requer a versão 11 do Java, pois está configurado no pom.xmlPara que este diretório sempre execute o Java 11, defina a versão local:
jenv local 11.0.1Agora tente compilar o projeto novamente. Deverá compilar com sucesso!
A partir deste momento, não precisaremos mais nos preocupar em configurar o Java no terminal.
Você ainda vai precisar configurar a sua IDE de desenvolvimento para dar suporte também ao Java 11. No caso de estar utilizando o IntelliJ, importe o projeto maven e depois acesse File > Project structure e adicione o Java 11 na plataforma:
Agora você deverá conseguir compilar e rodar o projeto Java 11 pela própria IDE.
Por hoje é só. Instalamos o Java 11 sem comprometer o ambiente que já está funcionando com o Java 8. Instalamos e configuramos a ferramenta jEnv, geramos e compilamos um projeto Java 11. No próximo post, vamos analisar uma aplicação Java 8 e verificar se podemos rodar ela no Java 11.
Caso tenha alguma dúvida ou problema, deixe nos comentários. Bons estudos e até a próxima!
Bom dia ! Já que o Oracle não distribui mais o jre acima da versão 8 do Java, como fazer para utilizar o Openjdk 11 ?
ResponderExcluirA Oracle continua distribuindo a JRE normalmente. Você só não pode usar em produção e versões mais antigas voce deve pagar suporte para receber atualizações. Utilize o próprio OpenJDK(https://openjdk.java.net/) ou o AdoptOpenJDK (https://adoptopenjdk.net/) que é o mesmo JDK/JRE
Excluir