Java/es

Esta guia tiene como objetivo explicar el funcionamiento de Java con Gentoo Linux.

Visión general
Java es un lenguaje de programación desarrollado por ingenieros de Sun Microsystems. El lenguaje es totalmente orientado a objetos y diseñado para ser ejecutado en multiples plataformas sin la necesidad de recompilar el codigo para cada una de ellas. Aunque Java puede ser compilado como un lenguaje nativo, mucha de la popularidad de Java se atribuye a su portabilidad, junto con otras caracteristicas como recolección de basura. Para hacer posible esta independencia de plataforma, el compilador de Java compila el codigo Java hacia una representación intermedia denominada "Java bytecode" que es ejecutado en un JRE (Java Runtime Environment) y no directamente sobre el sistema operativo.

Para ejecutar Java bytecode, es necesario tener un entorno JRE (Java Runtime Environment) instalado. Un JRE proporciona bibliotecas centrales, una maquina virtual de Java dependiente de plataforma, y extensiones para navegadores web entre otras cosas. Por otro lado un JDK (Java Development Kit) agrega herramientas de programación, tales como compilador de bytecode y un depurador de codigo.

Opciones
Gentoo proporciona una variedad de entornos de ejecución (JREs) y kits de desarrollo (JDKs). Entre las opciones actuales, existen:

Instalando un JRE/JDK
Para instalar el JDK por defecto en el perfil instalado, basta con ejecutar. O para instalar el JRE por defecto se puede ejecutar.

Algunos JDKs y JREs, incluyendo los paquetes de Sun, requieren que el usuario acepte un Acuerdo de Licencia de Usuario o Eula. En el caso que esta licencia (por ejemplo dlj-1.1) no este incluida en ACCEPT_LICENSE dentro de no sera posible instalar el JDK/JRE. Para mayor información de como agregar licencias aceptadas en pude consultarse el Manual de Portage.

Para evitar cualquier restriccion de licencias, considerese instalar, el cual es una implementación abierta de Java del proyecto OpenJDK.

Instalando maquinas virtuales con descarga restringida
Algunos JDKs y JREs requieren que el usuario siga algunos links antes de ser instalados. En este caso el emerge debe ser ejecutado de forma normal. Asi, los ebuils proveeran las instrucciones necesarias acerca de donde ir y realizar las descargas.

Los archivos indicados deben ser colocados en. Luego, el comando emerge puede ser ejecutado nuevamente y es en este punto que la instalación de JRE/JDK iniciara.

Visión general
Gentoo posee la habilidad de instalar multiples JDKs y JREs sin causar conflictos.

Utilizando la herramienta  es posible establecer una configuración para todo el sistema (requiere acceso como root). Los usuarios normales tambien pueden utilizar  para establecer su propia preferencia.

Estableciendo una maquina virtual por defecto
Al ejecutar el comando  es posible obtener un listado de todas las JREs y JDKs instaladas en el sistema. La salida es similar a la siguiente:

El "*" indica cual es la maquina virtual activa (system-vm o user-vm cuando ha sido configurada). El nombre dentro de las llaves ([]) es el identificador de la maquina virtual en particular. Puede ser utilizado el ID o el numero en. Por ejemplo, para establecer la maquina virtual del sistema.

Estableciendo la maquina virtual manualmente (modo preferido):

La misma puede ser seleccionada también por numero:

Así también, como usuario regular puede utilizarse.

Maquina virtual marcada como Build Only
Algunas maquinas virtuales estar marcadas como build-only ya sea por estar en el fin de su ciclo de vida de soporte y/o por contener vulnerabilidades de seguridad. Estas máquinas virtuales no serán utilizadas automáticamente por Gentoo para aquellas aplicaciones en ejecución utilizando los lanzadores de Gentoo, sin embargo seguirán disponibles para los entornos de compilación de Gentoo ya que algunos paquetes pueden necesitarlas para ser compiladas. Configurar estas maquinas virtuales tanto para usuario como para el sistema es no recomendada ya que en este caso serán utilizadas al ejecutar los ejecutables y serán utilizadas por cualquier otro paquete que no utilice los lanzadores de Gentoo.

Maquina virtual preferida para compilación
Al instalar paquetes Java, la máquina virtual utilizada puede ser diferente de la configurada actualmente como máquina virtual del sistema.

Esta máquina virtual puede ser necesaria en diversas situaciones, por ejemplo si la máquina virtual del sistema esta configurada en nivel de código 1.6 y el paquete que esta siendo instalado requiere la versión 1.5. Al compilar, esta máquina sera seleccionada dejando la selección de system-vm intacta.

Para definir qué máquina virtual está seleccionada cuando un cambio es requerido, se ha creado un listado de maquinas virtuales predefinidas por arquitectura. Este listado puede ser encontrado en.

Estas opciones pueden ser redefinidas (incluyento tambien la máquina virtual seleccionada) en, teniendo así un completo control de cual máquina virtual sera utilizada durante las instalaciones.

Por ejemplo, para utilizar por defecto :

O por ejemplo, utilizar siempre  donde sea posible, excepto cuando 1.4 o 1.3 sean requeridos explícitamente:

O por ejemplo, para utilizar diferentes proveedores para diferentes versiones, como  si una versión 1.3 es requerida, y utilizar   para otros casos:

Compiladores
El compilador predeterminado utilizado para la compilación es, el cual se encuentra incluido en cada JDK. Adicionalmente a configurar la máquina virtual utilizada en tiempo de compilación, también existe la posibilidad de seleccionar cual compilador sera utilizado. Así, es posible definir un listado de preferencias mediante el archivo.

Some compilers don't support all possible -target and -source arguments. Therefore, each compiler in the list is checked to see if it can support the desired -source/-target. javac will work in all cases, so if no other suitable compiler is found, it will be used instead.

More details about each compiler are provided below:

Setting a default CLASSPATH
can also be used to set a system-wide default CLASSPATH, as well a user-specific default CLASSPATH.

First, you will want to list available Java libraries installed on your system that might want to be put in your CLASSPATH. Here is an example of output:

Again, the names in brackets ([]) are the IDs that you have to pass to. Here is an example:

You will have to update your environment by logging out, then in again or sourcing.

For users,  will create, which you should then source from your shell's profile.

Sourcing user specific classpath

If you really want a system wide or user default classpath you can add something like the following to your shell's profile. But we would advise against it.

Installing a plugin
You can install a Java plugin for your web browser by emerging a Java VM with the  USE flag set.

Portage will allow you to install multiple versions of Java plugins, though only one will be used by your browser. You can check the list of available plugins by running:

In this example,  is selected for the browser plugin.

Verify that the correct plugin was selected:

Java.com also provides a link to verify your installed plugin. Additionally, if you are using a Mozilla-based browser, you can verify your Java plugin by typing  into the address bar.

Plugins on multilib systems
If you are running a mixed 64-bit and 32-bit multilib system (for example, on AMD64), you can use 64-bit and 32-bit Java plugins. Unless you have a pressing need to run 32-bit Java applications, we recommend using native 64-bit plugins on 64-bit web browsers.

There are several native 64-bit browser plugins available. The default JDK/JRE pair,  and , both include browser plugins. Just emerge one of them with the  USE flag enabled.

To use a 32-bit plugin on a 32-bit browser, you will need to emerge  with the   USE flag enabled.

Next, check which plugins are available:

Now select the right plugin for your browsers:

Verify the correct plugin was selected:

Setting USE flags
For more information regarding USE flags, refer to the USE flags chapter from the Gentoo Handbook.

The flags

 * The java flag adds support for Java in a variety of programs
 * The nsplugin flag adds support for Mozilla-like browsers (including Firefox). You will need this for viewing Java applets in your Mozilla-like browser.
 * 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 you are using.
 * The jce flag adds support for the Java Cryptography Engine
 * For Java packages, the doc flag will build API documentation using javadoc.

Off-line resources

 * java-config man page

Online resources

 * The Java Project Page
 * The gentoo-java, gentoo-user, and gentoo-dev mailing list archives
 * #gentoo and #gentoo-java on IRC
 * Wikipedia's entry for Java
 * If you have suggestions or questions regarding this document, please email the Gentoo Java team:

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Joshua Nichols
 * Karl Trygve Kalleberg
 * Joshua Saddler