Java

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Java and the translation is 73% complete.
Resources

Java é uma linguagem de programação originalmente desenvolvida pela Sun Microsystems que utiliza um runtime para executar aplicações Java em diversas plataformas. É uma escolha popular para desenvolvedores que desejam criar aplicações multiplataforma.

O que é Java?

Visão Geral

Java é uma linguagem de programação desenvolvida pela Sun Microsystems. A linguagem é orientada a objetos e projetada para rodar em várias plataformas sem a necessidade de recompilar o código em cada uma delas. Embora Java possa ser compilado como um programa nativo, a maior parte de sua popularidade pode ser atribuída à sua portabilidade, junto com outras características, como gerenciamento automático de memória. Para tornar a independência de plataforma possível, o compilador do Java compila o código Java para uma representação intermediária, chamada "Java bytecode" que roda em uma JVM (Java Virtual Machine) e não diretamente no sistema operacional.

Para executar o Java bytecode, é preciso ter o JRE (Java Runtime Environment) instalado. O JRE fornece bibliotecas principais, uma Máquina Virutal Java dependente da plataforma, plugins para browsers, entre outras coisas. O JDK (Java Development Kit) adiciona ferramentas de programação, como um compilador de bytecode e um debugger.

Linguagens JVM

A Máquina Virtual Java não é utilizada exclusivamente pela linguagem Java. Várias linguagens de programação utilizam a plataforma Java e rodam na JVM. Exemplos incluem: Clojure, Apache Groovy, Kotlin ou Scala.

Instalando uma máquina virtual

As escolhas

Gentoo fornece vários Java Runtime Environments (JREs) e Java Development Kits (JDKs). As opções atuais incluem:

Vendor JDK JRE
IcedTea Open Java SE (antes icedtea6-bin) dev-java/icedtea e dev-java/icedtea-bin
OpenJDK dev-java/openjdk e dev-java/openjdk-bin
Java da Oracle dev-java/oracle-jdk-bin dev-java/oracle-jre-bin
GCJ IcedTea GNU GCC Java (atualmente IcedTea-7) dev-java/icedtea sys-devel/gcc USE="gcj"

Instalando o JRE/JDK

Para instalar o JDK padrão do perfil, execute:

root #emerge --ask virtual/jdk

Para instalar o JRE padrão do perfil, execute:

root #emerge --ask virtual/jre
Aviso
Alguns JDKs e JREs, incluindo os pacotes Oracle, precisam da confirmação da EULA (do inglês Acordo de licença de usuário final). Se sua licença (como por exemplo dlj-1.1) não está na variável ACCEPT_LICENSE (encontrada em /etc/portage/make.conf), então o JDK/JRE não poderá ser instalado. Para mais informações em como adicionar licenças aceitáveis no make.conf, leia o Capítulo de licenças do Manual do Portage.

Para evitar qualquer problema de licença, considere instalar o dev-java/icedtea-bin, uma implementação Java aberta do projeto OpenJDK.

Nota
Esteja ciente que cada JDK inclui também um JRE; instalar um JRE não é necessário se um JDK já está instalado.

Instalando a Máquina Virtual IcedTea GCJ

Importante
gcj está obsoleto e foi removido nas versões 7.0 e superiores do GCC. Está indisponível a partir do GCC 6.0 no Gentoo. Considere esta seção obsoleta.

A máquina virtual IcedTea é fornecida por meio do código fonte and requer a compilação por um compilador bytecode Java. Esse bootstrapping pode ser executado pelo compilador GNU para Java (GCJ). Esse compilador está disponível quando o GCC é montado com a USE flag gcj.

When GCC is rebuilt with this USE flag set, the dev-java/icedtea package can be installed. Because of a Portage bug, users need to install dev-java/gcj-jdk and dev-java/ant-core explicitly first if they are not already present.

root #emerge --ask --oneshot dev-java/gcj-jdk dev-java/ant-core
root #emerge --ask dev-java/icedtea:7

Installing fetch-restricted virtual machines

Some of the JDKs and JREs require a few extra steps in their configurations. Emerge the packages as normal. If additional steps are required the ebuilds will provide instruction for the user on where to go and what to download.

Download the indicated file(s) into /var/cache/distfiles (or the value of DISTDIR). Once the files are in the right directories, rerun the emerge command, at which point the JRE/JDK will be begin to install.

Configurando um JRE headless

Sometimes there is no need for a full JRE with all the capabilities of java. Using java on a server often does not require any GUI, graphical, sound or even printer related features. To install a simplified (sometimes also referred to as headless) JRE, a few USE flags need to be changed for the selected JRE flavor.

FILE /etc/portage/package.useRequired USE flag changes
dev-java/icedtea headless-awt -alsa -cups
dev-java/icedtea-bin headless-awt -alsa -cups
dev-java/oracle-jre-bin headless-awt -alsa -cups

Depending on the current Gentoo profile, this might already be the case. As usual, the USE flag settings that are applicable to a particular package can be checked by running emerge in pretend mode:

user $emerge --pretend --verbose virtual/jre

Configurando a Máquina Virtual Java

Visão Geral

Gentoo tem a capacidade de ter múltiplos JDKs e JREs instalados sem causar conflitos.

Usando a ferramenta java-config com privilégios de root, uma máquina virtual (VM) Java padrão para todo o sistema pode ser configurada. Usuários também podem usar java-config para configurar uma VM personalizada por usuário.

Nota
eselect também pode ser usado para mudar a VM do sistema e do usuário. Veja eselect java-vm help.

Configurando uma máquina virtual padrão

Executando o comando java-config com a opção --list-available-vms irá produzir uma lista de todos os JREs a JDKs instalados no sistema. Por exemplo:

root #java-config --list-available-vms
The following VMs are available for generation-2:
1)      IcedTea JDK 7.2.6.3 [icedtea-7]
*)      IcedTea JDK 3.0.1 [icedtea-8]
Note
VMs marcadas como 'Build Only' podem conter vulnerabilidades de segurança e/ou estar no fim de vida (end of life). Gentoo recomenda que essas VMs não sejam selecionadas como VM do sistema ou do usuário. Por favor, veja Build Only VM para mais informações.

O * indica que esta é a JVM ativa atual(system-vm ou user-vm quando configurada). O nome entre colchetes ([]) é o identificador ou ID dessa VM específica. O identificador ou o número para java-config --set-system-vm pode ser usado para definir a VM. O texto seguinte fornece um exemplo de como configurar a VM do sistema.

Configurando a VM do sistema(preferido):

root #java-config --set-system-vm icedtea-7
Now using icedtea-7 as your generation-2 system JVM

Método alternativo: selecione a VM pelo número identificador:

root #java-config --set-system-vm 3
Now using icedtea-7 as your generation-2 system JVM

Como usuário comum, use java-config --set-user-vm.

Note
source-ing the profile for existing shell sessions is not usually needed when changing the user or system VM. The only exception is that variables such as JAVA_HOME will still point to the old location after setting a user VM for the first time or revert back to the system VM.

Build only VM

Some virtual machines are flagged as build-only due to being EOL and/or containing security vulnerabilities. These virtual machines will not automatically be used by Gentoo for the running of applications using Gentoo launchers (run-java-tool script designed for switching VMs), but will still be available for use by Gentoo's build environment as some packages may require them for building. The setting of these virtual machines as either the system or user VM is strongly discouraged as these VMs will then be used when running the /usr/bin/{java,javac,..} executables, as well as used by any packages not using Gentoo's launcher scripts.

Configurando um CLASSPATH padrão

Warning
The options explained in this section should be considered deprecated and will most likely be removed in the future. It is strongly recommended against using these, because Java projects or applications should ideally manage their own classpaths. When choosing to specify a default CLASSPATH, some applications may behave unexpectedly, because classes they were not expecting to be on the classpath.

java-config pode ser utilizado para configurar a CLASSPATH padrão a nível de sistema, como também a CLASSPATH a nível de usuário.

First, list available Java libraries installed on the system to possibly put in the CLASSPATH variable. Here is an example of output:

root #java-config --list-available-packages
[xerces-2] The next generation of high performance, fully compliant XML parsers in the Apache Xerces family (/usr/share/xerces-2/package.env)
[junit] Simple framework to write repeatable tests (/usr/share/junit/package.env)
[bsh] BeanShell: A small embeddable Java source interpreter (/usr/share/bsh/package.env)
[bcel] The Byte Code Engineering Library: analyze, create, manipulate Java class files (/usr/share/bcel/package.env)
[log4j] A low-overhead robust logging package for Java (/usr/share/log4j/package.env)
...

Again, the names in brackets ([]) are the IDs to pass to java-config --set-system-classpath. Here is an example:

root #java-config --set-system-classpath log4j,xerces-2
Nota
O diretório atual (.) não fará parte do classpath do sistema, pois deve ser adicionado ao perfil de login do sistema.

Atualize o ambiente realizando o logout, e em seguida o login ou executando source /etc/profile.

Para usuários, java-config --set-user-classpath irá criar o arquivo ~/.gentoo/java-env-classpath, que deve ser carregado (sourced) no perfil shell.

CODE Carregando a classpath do usuário
if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
       source ${HOME}/.gentoo/java-env-classpath
fi

If desiring a system wide or user default classpath add something like the following to the shell's profile. This is advised against:

root #export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"

Java browser plugins

Importante
O suporte ao plugin Java foi depreciado no JDK 9[1].

The Java browser plugin used to be managed via eselect java-nsplugin. This has now been removed in favor of a simpler out-of-the-box experience. For basic usage, simply emerge the chosen JVM with the nsplugin USE flag enabled. Note that Oracle's plugin is only available for amd64 and x86.

Note
Note that Chromium-based browsers since version 42 and Firefox since version 52 no longer support NPAPI-based plugins[2]. This effectively disables the Java plugin on modern browsers.

For more information, including JVM selection, Web Start, and multilib, see the README installed with icedtea-web.

USE flags for use with Java

Configurando as USE flags

Para mais informações referentes a USE Flags, acesse o capítulo USE flags do Manual Gentoo.

USE flags

  • The java flag adds support for Java in a variety of programs;
  • The nsplugin flag adds support for Mozilla-like browsers (including Firefox). This is needed for viewing Java applets in a Mozilla-like browser;
  • The jce flag adds support for the Java Cryptography Engine;

Following USE flags go in JAVA_PKG_IUSE.

  • The source flag installs a zip of the source code of a package. This is traditionally used for IDEs to 'attach' source to the libraries that are being use;
  • For Java packages, the doc flag will build API documentation using javadoc.

Veja também

Recursos externos

Mais informações podem ser encontradas offline:

  • man java-config
  • java-config --help

Para sugestões ou dúvidas em relação a esse document, por favor envie um e-mail ao time Java Gentoo: java@gentoo.org

Referências

  1. JDK 9 and the Java Plugin, java.com. Retrieved on November 30, 2018
  2. How do I enable Java in my web browser?, java.com. Retrieved on November 30, 2018

This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg,
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.