Pular para o conteúdo principal

Iniciando com o OpenJDK 11 - Parte 1

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:
$ 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
Caso use o Zsh
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc
Feche 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-oracle
Java 11:
$ jenv add /usr/lib/jvm/jdk-11.0.1
Verificando 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.191
Definindo 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:
$ /home/sandro/Downloads/java11
Se você digitar java -version, verá que estamos na versão 8 que é a global. 
Tente compilar o projeto com o maven:
$ mvn clean install
Verá 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.xml
Para que este diretório sempre execute o Java 11, defina a versão local:

jenv local 11.0.1
Agora 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!




Comentários

Postagens mais visitadas deste blog

Guia da certificação Java SE 8 Programmer l

Seja bem-vindo a série de postagens sobre a certificação Java. Como funciona, o que fazer para comprar, marcar o dia da prova e o principal, o que estudar.
IntroduçãoNeste guia dividido em 7 partes, você irá saber o que é cobrado na prova denominada “OCA Oracle Certified Associate Java SE 8 Programmer I. Exam 1Z0-808”, assim como os passos para se registrar no exame e fazer a prova. Algumas dicas para ser mais ágil no momento da prova.
Primeiro detalhe importante é que a prova não tem opção em português (existe uma opção em Espanhol). Então é bom se acostumar com a leitura em inglês para poder interpretar as questões. O site para marcar a prova também é todo em Inglês.
A prova tem 70 questões de múltipla escolha que devem ser respondidas em até 150 minutos. O candidato deve obter no mínimo 65% de acerto para receber a certificação.
Vou procurar dar algumas orientações para quem irá fazer a primeira certificação, assim como os que tem certificação em outras versões do Java e querem se atua…

Guia da certificação Java SE 8 Programmer l - Parte 1: Conhecendo a certificação

Seja bem-vindo a série de postagens sobre a certificação Java. Como funciona, o que fazer para comprar, marcar o dia da prova e o principal, o que estudar.

Para ver o índice da série e as datas das publicações, acesse este link

Parte 1 – Conhecendo a certificação
Nesta primeira parte, vamos navegar pelo site da Oracle Education e da Pearson VUE para conhecer como funciona a certificação e se ambientar. Ambos os site estão em Inglês e como já dito no índice da série, a prova não tem opção em português.
Site da Oracle
O site da Oracle não é um dos melhores em usabilidade. Então se procurar por certificação Java no Google, irá encontrar diversos cursos, livros e blogs falando a respeito da certificação menos o site da Oracle.
Pois bem, abaixo o link direto para informações do exame 1Z0-808 - Java SE 8 Programmer I
https://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-808

Neste link você encontrará as informações detalhadas do exame, tais co…

Guia da certificação Java SE 8 Programmer l - Parte 5: Métodos e encapsulamento

Seja bem-vindo a série de postagens sobre a certificação Java. Como funciona, o que fazer para comprar, marcar o dia da prova e o principal, o que estudar.Para ver o índice da série e as datas das publicações, acesse este link Parte 5 – Métodos e encapsulamento Neste post, vamos nos aprofundar um pouco mais na orientação a objetos e ver como funcionam os métodos, seus modificadores, sobrecarga e um pouco de lambdas. Objetivos do exameCriando métodos que retornam valoresSobrecarga de métodosMétodos estáticosModificadores de acessoEncapsulamentoPassagem de valor e passagem de parâmetroEscrevendo expressões lambda simplesCriando métodos Um método pode conter até sete elementos, sendo que alguns obrigatórios e outros opcionais. No exemplo abaixo o método conhecido de todo programador Java:
public static void main(String[] args) {    System.out.println("hello!!"); }
O método acima contém seis elementos, onde o sétimo seria uma lista de exceções.
public static void main(String[] args) t…