JRE e JDK no Linux

JRE e JDK no Linux
A linguagem de programação Java é uma das mais usadas hoje. O segredo é ter a sua sintaxe muito parecida com C, e, principalmente, ter uma flexibilidade de plataformas incrível, usando o conceito de máquinas virtuais. Por isso, um mesmo programa feito em Java pode rodar tanto no Windows como no Linux, por exemplo, desde que tenham uma máquina virtual instalada. O Java também é amplamente usado em dispositivos portáteis, pelos mesmos motivos.

A Sun é a empresa proprietária do Java. Ela disponibiliza, basicamente, duas versões de sua máquina virtual: o JRE (Java Runtime Environment) e JDK (Java Development Kit). O JRE contém a máquina virtual que permite rodar programas feitos na linguagem Java em uma máquina, como por exemplo o famoso mensageiro Mercury e o jSMS, software nacional de envio de mensagens de texto para celulares. Porém, com o intuito de que cada atualização vem com novidades, como mais velocidade, e que nem todos conseguem desfrutar de tal, essa dica visa ajudar a quem quer instalar ou atualizar o Java Runtime Environment no Linux. O JDK, por sua vez, é um pacote para desenvolvedores programarem suas aplicações em Java, possuindo vários utilitários, inclusive compilador e bibliotecas.

Uma das versões mais usadas do Java foi a 1.4.x, que possuía inclusive um visual um pouco (para ser cortez :-P) rústico. Mais para frente a Sun lançou a versão 1.5.0, com várias melhorias em termos de programação e um visual um pouco melhor. Foi lançado em dezembro do de 2006 o Java 1.6.0, conhecido também como Java 6, que trouxe, finalmente, uma integração total com o desktop em termos visuais, e várias melhorias também para quem é programador.

Segundo um dos maiores sites especializados no assunto do país, o JavaFree.org, algumas novidades do java 6 são:

“(…) Depois de dois anos de desenvolvimento, a Sun lançou o Java 6, conhecida também como Mustang. O ciclo de desenvolvimento aberto aos desenvolvedores e o lançamento de releases semanais da nova versão, foi um marco na história do Java. Houve extensiva colaboração entre a Sun e cerca de 330 desenvolvedores, de mais de 160 companhias para garantir compatibilidade, estabilidade, alta performance e transparência.

As novidades acrescentadas ao Mustang foram definidas pela JSR 270, a qual é ligada a outras 11 JSRs implementadas e mais três que foram propostas mas não inclusas. Havia ainda outras JSRs de manutenção de recursos já existentes. As principais alterações – e mais entusiasmantes – ficam por conta da JSR 223 (Scripting na JVM). A versão também traz uma maior integração com acessos ao desktop – até mesmo com o Windows Vista – melhorias nas ferramentas de monitoramento e na parte de banco de dados com JDBC 4.0, e a adição do JavaDB, baseado no Apache Derby.

Apesar de tudo, assim como aconteceu com a versão 5, a adoção deve ser bastante gradual, especialmente por causa da demora de maior parte dos grandes fornecedores em adaptar seus produtos para funcionarem com essa nova versão. Entretanto, a maior parte das aplicações que funcionam com as versões anteriores muito provavelmente funcionará com o Java 6, já que os testes feitos durante o desenvolvimento garantem backward compatibility na grande maioria dos casos. Agora é esperar pelas novidades que virão com o Dolphin (Java 7).

Mustang é o nome para a nova versão 6 de Java, que saiu no final do ano passado. Entre as novidades mais conhecidas estão o suporte a linguagens de script, melhores ferramentas para o monitoramento de aplicações Java e mais integração com o sistema operacional.

E um post recente, Eyal Lupu mostra algumas melhorias menos baladas, mas nem por isso menos importantes. Por exemplo, agora OutOfMemeoryError’s provêem mais informações sobre o erro e o classpath pode usar “*” para indicar todos os jars em um diretorio, muito útil. E o JavaForce publica um artigo sobre navigables, uma nova interface para permitir mais navegação e seleção de elementos dentro de Sets e Maps.

E estas, segundo o site, são as principais novidades do “Mustang”. Para ver todo o change-log do Java 6, ou ver a notícia original, entre em:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/enhancements/

Em 2007, a Sun liberou o código fonte da futura versão da plataforma de desenvolvimento e da máquina virtual do Java, apelidando-o de Java 7 “IcedTea”. Com isso, apesar de vários programas ainda não funcionarem nele, agora o IcedTea aparece empacotado sob licença de software livre em repositórios como o do Fedora, que antes não possuíam o Java (somente o GCJ). Veja um trecho da descrição deste aplicativo pelo próprio projeto Fedora (http://docs.fedoraproject.org/release-notes/f8/pt_BR/sn-Java.html):

“(…) O IcedTea é uma versão de aproveitamento do código OpenJDK da Sun, que substitui partes comprometidas/empenhadas (encumbered) do OpenJDK por Software Livre. O IcedTea fornece um ambiente mais completo e compatível que o GCJ, incluindo suporte para contrução e execução de bytecodes com níves acima de 1.6. Os usuários do IcedTea deve estar ciente de algumas ressalvas: não há suporte a ppc ou ppc64 – usuários de ppc e ppc64 devem continuar a usar o GCJ; não há suporte para as API’s de som do Java; estão faltando alguns poucos algoritmos de criptografia.”

Bom, de tanta versão, qual usar? Vale lembrar que muitíssimo aplicativos permanecem em funcionamento somente com o JRE 1.5, como os sites de vários bancos. Eu, particularmente, sugiro a instalação da última versão (IcedTea) juntamente com a 1.5, deixando esta última somente para o navegador (instala-se somente o plugin desta versão). As diferentes versões permanecem harmoniosamente instaladas.

Sanando outra dúvida, o que realmente é JDK ou Java SDK? Segundo Duli, é o kit de desenvolvimento para java (Sofware Development Kit). Trata-se de um conjunto de softwares para programadores em java que você não precisa instalar se sua intenção for apenas usar os programas feitos em java. Para rodar os programas em java basta instalar o JRE (Java Runtime Environment) (…).

Vamos então ensinar a instalar o JRE e JDK independentemente da distribuição, que possuem, muitas vezes, um atalho disponível em seus gerenciadores de pacotes. Veremos, mais adiante também, como instalar em específico no Ubuntu, Debian e OpenSUSE.

Para começar, vamos baixar o JRE ou JDK no site da Sun. Vou na instalação usar somente o JRE ou JDK como exemplo, porém, o processo de instalação de ambos é similar.

O JDK e JRE 6u3 estão disponíveis no link:

http://java.sun.com/javase/downloads/index.jsp

Clique no botão “Download” abaixo de “Java Runtime Environment (JRE) 6 Update 4” ou “JDK 6 Update 4”. E, para baixar, marque a opção “Accept License Agreement”, a seguir clicando em “jdk-6u3-linux-i586.bin“, ao lado de “Linux self-extracting file” ou “jdk-6u3-linux-i586-rpm.bin“, ao lado de “Linux RPM in self-extracting file”, logo abaixo da categoria “Linux Platform – Java(TM) SE Development Kit 6 Update 3”. No caso, somente baixe a primeira opção se a sua distribuição use pacotes RPM, como o Fedora, OpenSUSE, Mandriva, PCLinuxOS, entre outras.

Para o JRE 6u1, o processo é o mesmo, no mesmo link. Marcando a opção “Accept License Agreement”, abaixo da categoria “Java Runtime Environment (JRE) 6u3, clique em “jre-6u3-linux-i586.bin” ou “jre-6u3-linux-i586-rpm.bin“, também seguindo a dica acima.

Essa versão contém diversos releases, a mais atual enquanto escrevo é a 1.6.0_3.

Para o Java 1.5, o procedimento é similar ao do 1.6, contudo, acessando o link:

http://java.sun.com/javase/downloads/index_jdk5.jsp

E selecionando “Java Runtime Environment (JRE) 5.0 Update 14” ou “JDK 5.0 Update 14”.

O IcedTea ainda não possui arquivos binários para download, contudo, ele já permanece na maioria dos repositórios oficiais de cada distribuição, por agora se tornar livre. Se desejar saber mais sobre o Java 7, acesse:

Após feito o download, vamos para a instalação.

Debian/Ubuntu

A maneira correta de instalar o Java da Sun numa máquina Debian é através do java-package, que constrói o .deb a partir do .bin da Sun, da IBM ou do Blackdown. Dessa forma, outros pacotes que dependem do JRE serão corretamente instalados, além de ficar mais fácil o controle sobre as versões.

Para instalar o java-package em distribuições baseadas no Debian:

# apt-get update

# apt-get install java-package

A seguir, entre no diretório onde está salvo o arquivo binário do Java, baixado no site acima e rode o comando:

# make-jpkg –full-name nomedocriadordopacote –email emaildocriadordopacote JRE.bin

Obviamente, substituindo o JRE.bin/.deb pelo caminho completo do executável/pacote. Um exemplo seria:

# make-jpkg –full-name JulioCBM –email emaildojulio@email.com jre-6u3-linux-i586.bin

O pacote será feito, após a revisão da licença da Sun. Para avançar, pressione Enter, até que a palavra destacada “More” suma do canto inferior esquerdo da tela. Após a extração do binário e a contrução do pacote, na pasta local aparecerá um pacote Debian, e para instalá-lo, use o comando:

# dpkg -i sun-j2re1.6_1.6.0+update3_i386.deb

Note que o nome do arquivo pode variar de acordo com a versão baixada por você disponibilizada no site da Sun. O pacote já se encarregará de fazer os links simbólicos necessários para o funcionamento total da nova versão, uma outra facilidade desse método.

Os pacotes também permanecem nos repositórios Debian e Ubuntu, sendo assim mais fáceis de instalar, apesar de algumas vezes não estarem nas últimas versões. Para isso, rode os comandos:

# apt-get update

# apt-get install sun-java6-jre sun-java5-plugin

Para instalar o Java 1.6 (repare o “java6” no nome do pacote) e o conjunto de plugins (Firefox, etc). Para o Java 1.5, troque o “java6” por “java5” no nome dos pacotes. Para instalar o SDK, troque, no nome do pacote, “jre” por “jdk”:

# apt-get install sun-java6-jdk

Para o IcedTea, o procedimento é semelhante, veja um exemplo:

# apt-get install icedtea-java7-jdk icedtea-java7-plugin

RPM

Já para quem usa sistemas derivados do RedHat, a opção de download “Linux RPM in self-extracting file” instala um RPM que vai fornecer as dependências necessárias.

* Comando para contar dependentes:

$ grep-available -F Depends java-virtual-machine -s Package,Depends | grep ^Package | wc -l

Para tornar o binário executável, use o comando:

# chmod +x jre-6u1-linux-i586-rpm.bin

Rodando o comando abaixo, o próprio instalador se encarregará de aplicar o pacote RPM no sistema:

# sudo ./jre-6u1-linux-i586-rpm.bin

No OpenSUSE, após estes passos, são necessários alguns comandos para integração com o sistema. São eles:

# ln -s /usr/java/latest /usr/lib/jvm/jre-1.6.0-sun

Para criar o link simbólico na pasta correta

# update-alternatives –install “/usr/bin/java” “java” “/usr/lib/jvm/jre-1.6.0-sun/bin/java” 1

Para “cadastrar” o Java 6 como uma JRE no sistema

# update-alternatives –config java

Enfim para configurar e setar ele como padrão.

Rodando o último comando, basta escolher na tela, digitando o número da opção desejada, a JRE que vai ativar como padrão. Veja:

prizm7
No caso do Fedora, o procedimento é semelhante. Veja este passo-a-passo baseado nas instruções de Duli:

# yum install -y compat-libstdc++-33 compat-libstdc++-296
# yum remove -y jre.i586
$ wget -O ~/jre-6u3-linux-i586-rpm.bin http://javadl.sun.com/webapps/download/AutoDL?BundleId=11283
$ chmod +x jre*
# ./jre*

Aceite a licença (yes e enter)

$ rm -rf jre*
# ln -s /etc/alternatives/java /usr/bin/java
# /usr/sbin/alternatives –install /usr/bin/java java /usr/java/default/bin/java 2
$ echo 2 | sudo /usr/sbin/alternatives –config java

Verifique então se a instalação foi bem sucedida:

$ java -version

java version “1.6.0_03”
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)

Para instalar o plugin Java no Firefox, rode o comando abaixo:

# ln -s /usr/java/default/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins/.

E teste se o plugin foi instalado de maneira correta, rodando o comando abaixo:

$ firefox http://www.java.com/en/download/installed.jsp

Clique em “Verify installation”. Se a instalação tiver sido correta, deverá aparecer uma mensagem como esta:

“Congratulations!

You have the recommended Java installed (Version 6 Update 2).”

Já para instalar o 1.5, siga o mesmo procedimento, só trocando os links e nomes de arquivos/pastas pelas versões corretas.

Para instalar o IcedTea é muito fácil, devido á este estar nos repositórios oficiais da distribuição (por ser código livre). Rode, como root:

# yum install java-1.7.0-icedtea

Genérico

Se sua distribuição não usa o sistema Debian nem RPM de gerenciamento de pacotes, você poderá ainda instalar da forma genérica. Para isso, baixe a versão Linux (não a RPM), com um nome semelhante à jre-6u3-linux-i586.bin. Mova-o para a pasta /usr/lib:

# mv jre-6u3-linux-i586.bin /usr/lib

E dê a permissão de executável:

# chmod +x jre-6u3-linux-i586.bin

Execute-o, iniciando a isntalação, com o comando:

# ./jre-6u3-linux-i586.bin

Conforme a instalação caminha, responda “yes” às perguntas e licenças. O instalador extrairá todos os arquivos, e depois dda conclusão, faça um link, para padronizar a versão instalada:

# ln -s jre1.6.0_03 java

Rode, assim como dito acima, os comandos para configuração do JRE 1.6 na máquina:

# ln -s /usr/java/latest /usr/lib/jvm/jre-1.6.0-sun

# update-alternatives –install “/usr/bin/java” “java” “/usr/lib/jvm/jre-1.6.0-sun/bin/java” 1

# update-alternatives –config java

Para o Java 1.5, o procedimento é semelhante, somente trocando os links e nomes de arquivos/diretórios. Já para o 1.7, ainda não é possível efetuar os passos desta maneira, visto que ele ainda não possui binários para download. Mas como disse, muito provavelmente sua distribuição deve tê-lo empacotado.

Agora veja uma outra dica por Saulo Vieira. utilize-a somente se, após a seção “Finais”, abaixo, não funcionar corretamente.

“Assim quando for instalar outras versões não terei que sair configurando o Java em vários locais, basta remover o link JDK e criar um outro link de mesmo nome porém apontando para uma nova versão.

Para o Java funcionar, temos que configurar as variáveis de ambiente no arquivo profile localizado dentro do diretório etc. Vamos ver os passos:

Abra o arquivo usando o seu editor de textos preferido (vi, kedit ou o gedit). No exemplo, utilizaremos o gedit:

# gedit /etc/profile


Depois de aberto vá ao final do arquivo e crie adicione as seguintes linhas:

export JAVA_HOME=/usr/lib/java
export CLASSPATH=JAVA_HOME/lib/:$CLASSPATH
export PATH=$JAVA_HOME/bin/:$PATH
export MANPATH=$JAVA_HOME/man:$MANPATH


Salve as modificações e feche o arquivo.

Algumas explicações:

  • JAVA_HOME é a variável de ambiente que aponta para o diretorio jre1.5.0_10 que é o diretório home do java. Repare que o caminho passado para ele é /usr/lib/java isso é possível porque o link simbólico java redirecionará para o diretório jre1.6.0_3.
  • Para acessar o comando java de qualquer diretório da minha máquina é preciso que os executáveis do diretório bin dentro de JAVA_HOME estejam disponíveis, conseguimos isso usando a variável PATH, ao qual passamos o diretorio bin (JAVA_HOME/bin/) onde ficam os executáveis do Java.
  • No CLASSPATH ficam as libs do Java que são usadas na hora da compilação de algum arquivo.
  • Já o MANPATH é onde fica o manual do java que poderá ser acessado, por exemplo, por meio de um comando do shell.”

Pacotes prontos

As distribuições Ubuntu, Debian, OpenSUSE, Fedora, e muitas outras já possuem em seus repositórios os pacotes já prontos, sem necessidade de configuração. Para isso, no Ubuntu (versões acima de Feisty) e/ou Debian, basta rodar o comando “apt-get install sun-java6-jre”, para o JRE, ou “apt-get install sun-java6-jdk”, para o JDK, como já dito acima. Você também pode fazer isso por ferramentas gráficas, procurando pelos nomes dos pacotes citados: sun-java6-jre ou sun-java6-jdk. Com isso, todos os procedimentos acima se tornam desnecessários.

No OpenSUSE, basta adicionar o repositório alemão de testes da comunidade:

http://download.opensuse.org/repositories/Java:/addon/openSUSE_Factory/

Se você não sabe adicionar um repositório no OpenSUSE, veja um artigo que explica como fazê-lo:

Artigo: Repositórios no openSUSE 10.3: Instalar programas é algo básico em qualquer distribuição, isso á fato. Mas também é verdade que pouca gente conhece sobre os repositórios do openSUSE – não só os oficiais, mas os mantidos pela comunidade e os alternativos – além de saber sua instalação e acionamento. Vamos dar mais suporte à esta distro, falando sobre os principais repositórios existentes, como adicioná-los e os programas que eles fornecem. Por Júlio César Bessa Monqueiro.
https://www.hardware.com.br/artigos/repositorios-opensuse-10/

E, depois, procurar pelo pacote java-1_6_0-sun, ou similar (procura por “java”), aplicando-o em seguida.

Outras distribuições também podem ter instalação semelhante, porém, nem sempre com a última versão do JRE/JDK.

Finais

Se você tiver mais de uma máquina virtual instalada e quiser optar entre elas para somente uma ser a padrão, rode o comando abaixo, como root:

# update-alternatives –config java

E, para deixar a máquina 1.5 exclusivamente para o Firefox, basta linkar somente ela como plugin, seguindo os passos já citados, e deixando outra mais atual como padrão para rodar aplicações Java no seu sistema.

Depois da configuração, para saber enfim qual versão do Java Runtime Environment está ativa na sua máquina, rode o comando:

$ java -version

Ele voltará todas as informações que necessita:

juliocbm@hercules:~> java -version

java version “1.6.0_03”
Java(TM) SE Runtime Environment (build 1.6.0_03-b06)
Java HotSpot(TM) Client VM (build 1.6.0_03-b06, mixed mode, sharing)

Para testar finalmente, abra um programa qualquer em Java, como o jSMS ou Mercury. Note a diferença visual dos mesmos, antes e depois, principalmente no GNOME, onde o Java possui maior integração.

Veja o jSMS num GNOME, sob JRE 1.5.0:

prizm6
E, a absurda diferença, com o JRE 1.6.0:

prizm5
E já no JRE 1.7, o IcedTea (o visual é semelhante ao do 1.6, contudo, muda na tela abaixo por causa dos temas do GNOME diferentes, para ilustrar a integração com o ambiente):

img

Como disse, as diferenças não são apenas visuais, muita coisa por dentro mudou, para melhor. O Java é uma plataforma que sempre terá muitos adeptos, e suas máquinas virtuais estarão em constante evolução. E o Guia Do Hardware acompanhará para você 😉

Agradecimentos ao Saulo Vieira, do JavaFree.org, e ao Alessandro Rogerio Couto Raulino (roger_2), do fórum UbuntuPT

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X