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.

Es posible que algunos compiladores no soporten las opciones -target y -source. Por lo tanto, cada compilador dentro de la lista es probado para ver si soporta las opciones -source/-target deseadas, javac funcionara en todos los casos. Así pues si ninguno otro compilador es encontrado, sera el compilador por defecto.

Más detalles acerca de los compiladores son descritos a seguir:

Estableciendo un CLASSPATH por defecto
también puede ser utilizado para establecer un CLASSPATH por defecto para todo el sistema, así como para especificar un CLASSPATH especifico para un usuario.

Primero, deben listarse todas las bibliotecas Java disponibles en el sistema que pueden ser incluidas en el CLASSPATH. Acá un ejemplo de la salida:

Los nombres dentro de las llaves ([]) son los identificadores que deben ser pasados como parámetro para. Acá un ejemplo:

Es necesario actualizar el entorno reiniciando sesion o ejecutando.

Para usuarios, la instrucción  creara el archivo  sobre el cual debe ejecutarse , preferencialmente desde el perfil del shell.

Ejecutando source en el classpath especifico del usuario

Si realmente se requiere un classpath para usuario o para el sistema, se puede agregar alguna instrucción similar a la siguiente a el perfil de la shell. Sin embargo se advierte que esto no es recomendable.

Instalando un complemento
Para instalar el complemento de navegador web de Java, basta con instalar una máquina virtual de Java con la USE flag  activa.

Portage permite la instalación de múltiples versiones del complemento de Java, sin embargo solo uno puede ser utilizado por el navegador web. Puede verificarse la lista de complementos disponibles ejecutando:

En este ejemplo,  es seleccionado como complemento para el navegador web.

Luego, se verifica si el complemento correcto fue seleccionado:

Java.com proporciona un enlace para verificar el complemento instalado. Adicionalmente, si se esta utilizando un navegador basado en Mozilla, puede verificarse el complemento instalado escribiendo  en la barra de direcciones.

Complementos en sistemas multilib
Si se esta ejecutando un sistema que mezcla bibliotecas de 32 y 64 bits, se pueden utilizar complementos Java de 32 y 64 bits. No entanto, a menos que sea necesario ejecutar aplicaciones de 32 bits, es recomendable utilizar unicamente el complemento de 64 bits en navegadores web de 64 bits.

Existe una amplia variedad de complementos de 64 bits. La dupla JDK/JDE por defecto  y   incluyen complementos de navegador. Basta con instalarlos habilitando la USE flag  USE.

Para utilizar un complemento de 32 bits con un navegador de 32 bits, es necesario instalar  con la USE flag   habilitada.

Luego, deben verificarse cuales complementos están disponibles:

Ahora, debe seleccionarse el complemento correcto para los navegadores web.

Por ultimo, debe verificarse que el complemento correcto haya sido seleccionado:

Estableciendo USE flags
Para más información acerca de las USE flags, puede consultarse el capitulo de USE flags en el manual de Gentoo.

Las USE flags

 * La USE flag java agrega soporte Java a diversos programas
 * La USE flag nsplugin agrega soporte a navegadores basados en Mozilla (incluyendo Firefox). Esta flag debe habilitarse para ver applets Java en navegadores basados en Mozilla.
 * La USE flag source instala un archivo zip con el codigo fuente del paquete. Este código es tradicionalmente usado por los entornos de desarrollo para 'adjuntar' el código de las bibliotecas que estan siendo utilizadas.
 * La USE flag jce agrega soporte para el motor de criptografía de Java.
 * Para paquetes Java, la USE flag doc compila la documentación utilizando para ello javadoc.

Recursos sin conexión a Internet

 * man page de java-config

Recursos en linea

 * La pagina web del Projecto Java (en Ingles).
 * Los archivos de las listas de correo gentoo-java, gentoo-user, y gentoo-dev (en Ingles).
 * #gentoo y #gentoo-java en IRC.
 * el articulo de Wikipedia's acerca de Java.
 * Si tienen alguna otra sugerencia para este documento, pueden enviarlos al equipo Java de Gentoo: (en Ingles).

Agradecimientos
Nos gustaría dar las gracias a los siguientes autores y editores por sus contribuciones a esta guía:


 * Joshua Nichols
 * Karl Trygve Kalleberg
 * Joshua Saddler