Java

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

Java é uma linguagem de programação, originalmente desenvolvida pela Sun Microsystems, que utiliza uma máquina virtual independente da plataforma que ela roda em cima para executar bytecode Java em tempo real. É 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:

Distribuidor JDK
OpenJDK dev-java/openjdk e dev-java/openjdk-bin
Eclipse Temurin dev-java/openjdk-jre-bin

Instalando o JRE/JDK

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

root #emerge --ask --oneshot virtual/jdk

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

root #emerge --ask --oneshot virtual/jre
Nota
Esteja ciente que cada JDK inclui também um JRE; instalar um JRE não é necessário se um JDK já está instalado.

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.useMudanças necessárias nas USE flags
dev-java/openjdk headless-awt -alsa -cups
dev-java/openjdk-bin headless-awt -alsa -cups

Dependendo do atual perfil Gentoo, isso pode já ser o caso. Como sempre, as USE flags configuradas para um pacote em específico podem ser checadas rodando emerge em mode "pretend":

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.

Configurando uma máquina padrão

O comando eselect pode ser utilizado para mostrar uma lista de todas as instâncias Java instaladas (sejam elas JRE ou JDK). Aqui está um exemplo do resultado do comando:

user $eselect java-vm list
Available Java Virtual Machines:
  [1]   openjdk-8 
  [2]   openjdk-11 
  [3]   openjdk-17
  [4]   openjdk-bin-8  system-vm user-vm

A flag user-vm indica a JVM padrão do usuário. A flag system-vm indica a JVM padrão para o sistema e a máquina de fallback caso a JVM do usuário não esteja configurada. O número entre chaves (por exemplo [1]) é a referência para uma JVM específica. Para configurar uma JVM padrão do sistema:

root #eselect java-vm set system 1

Para selecionar a JVM desejada pelo usuário:

user $eselect java-vm set user 1
Nota
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.

Java browser plugins

Importante
O suporte ao plugin Java foi depreciado no JDK 9[1].
Nota
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 those who need a Java-enabled browser for a specific use case, there is e.g. palemoon/palemoon-bin available in the palemoon overlay, which has long-term support for NPAPI and thus Java plugins up to JDK 8[3].

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

As USE flags seguintes vão em JAVA_PKG_IUSE, veja Gentoo Java USE flags para mais detalhes e outras USE flags específicas para Java:

  • 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.

Solução de problemas

Erros no iniciador de Minecraft

  • Um erro específico em que o minecraft-launcher falha e sofre um crash após alguns segundos, com os error "Alarm" e "SaveToBuffer failed" pode ser resolvido configurando a USE flag threads para net-misc/curl.
  • Executar minecraft-launcher pode produzir o seguinte erro:
user $./minecraft-launcher
[0229/184549.183275:ERROR:sandbox_linux.cc(346)] InitializeSandbox() called with multiple threads in process gpu-process.

Isso pode ser resolvido executando minecraft-launcher com a seguinte opção:

user $MESA_GLSL_CACHE_DISABLE=true ./minecraft-launcher

Veja também

Recursos externos

Mais informações podem ser encontradas offline:

user $man java-config
user $java-config --help

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
  3. Pale Moon future roadmap, palemoon.org. Retrieved on June 28, 2019

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, nightmorph
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.