Gentoo Logo

Guía Java Gentoo

Contenido:

1.  ¿Qué es Java?

Resumen

Java es un lenguaje de programación desarrollado por ingenieros de Sun Microsystems. Es un lenguaje orientado a objetos y diseñado para la ejecución en múltiples plataformas sin requerir la recompilación del código fuente para cada plataforma. Aunque Java puede ser compilado como un programa nativo, se le puede atribuir una buena parte de su popularidad a su portabilidad y otras características como la recolección de basura. Para hacer posible la independencia de plataforma, el compilador de Java compila el código Java a una representación intermedia denominada "bytecode Java" el cual se ejecuta en un JRE (Java Runtime Environment, Entorno de Ejecución Java) y no directamente en el Sistema Operativo.

Para poder ejecutar "bytecode" Java, hace falta tener instalado un entorno de ejecución Java o JRE (por Java Runtime Environment). El JRE proporciona unas librerías básicas, una máquina virtual Java para la plataforma instalada y plugins para navegadores, entre otras cosas. Un kit de desarrollo Java o JDK (por Java Development Kit) agrega herramientas para programación, como un compilador para bytecode y un depurador ("debugger").

2.  Instalando una máquina virtual

Las opciones

Gentoo proporciona numerosos entornos para ejecución (JREs) y entornos para el desarrollo (JDKs). Entre las opciones actuales tenemos:

Origen JDK JRE
El SE abierto de Java IcedTea (anteriormente icedtea6-bin) dev-java/icedtea-bin
Java 7 SE de Oracle dev-java/oracle-jdk-bin dev-java/oracle-jre-bin
Java 6 SE de Sun dev-java/sun-jdk dev-java/sun-jre-bin
El SE Java de IBM dev-java/ibm-jdk-bin dev-java/ibm-jre-bin

Instalar un JRE/JDK

Para instalar el JDK predeterminado de su perfil, puede ejecutar emerge virtual/jdk. O para instalar el JRE predeterminado de su perfil ejecute emerge virtual/jre.

Algunos JDKs y JREs, incluyendo los paquetes que originan de Sun, requieren la aceptación de un Acuerdo de Licencia para Usuario Final, conocido también por sus siglas en inglés EULA. Si la licencia (por ejemplo, dlj-1.1) no está listada en ACCEPT_LICENSE en /etc/portage/make.conf, entonces no podrá instalar el JDK/JRE. Para más información acerca de como añadir licencias aceptables a make.conf, por favor lea el manual de Portage.

Para evitar molestias con licencias restrictivas, considere instalar icedtea-bin, el cual es una implementación abierta de Java del proyecto OpenJDK.

Nota: Un JDK incluye también un JRE, así que si instala un JDK no debería tener que instalar un JRE.

Instalando máquinas virtuales con restricciones de descarga

Como mencionamos anteriormente, algunos JDK y JRE requieren que uno salte varios aros antes de poder instalar. Sencillamente haga emerge a estos paquetes de la manera acostumbrada. Los ebuilds le indicarán a dónde ir y qué descargar. Algunos de los JDKs y JREs requieren algunos rodeos antes de ser instalados. Simplemente haga emerge de los que paquetes que normalmente instalaría. Los ebuilds le indicarán qué debe hacer y qué debe descargar.

Debe descargar el(los) fichero(s) indicado(s) a /usr/portage/distfiles. Una vez allí, vuelva a ejecutar la orden emerge y los JRE/JDK empezarán a ser instalados.

3.  Configurar su máquina virtual

Introducción

Gentoo permite tener instalados múltiples JDKs y JREs sin que esto cause conflictos.

Si tiene acceso como superusuario, puede usar la herramienta java-config puede establecer la configuración por defecto del sistema. Los usuarios también pueden usar java-config para establecer su configuración personal.

Nota: También puede usar eselect para cambiar la máquina virtual del sistema y del usuario. Vea eselect java-vm help.

Establecer una máquina virtual predeterminada

La orden java-config --list-available-vms producirá una lista de los JREs y JDKs instalados en el sistema. A continuación se muestra un ejemplo de la salida de esta orden:

Listado de Código 3.1: Listar las máquinas virtuales disponibles

# java-config --list-available-vms
The following VMs are available for generation-2:
1)      IcedTea-bin 1.10.4 [icedtea-bin]
2)      Sun JDK 1.5.0.20 [sun-jdk-1.5] (Solo Build)
*)      Sun JDK 1.6.0.16 [sun-jdk-1.6]

Nota: Las máquinas virtuales marcadas con Solo Build pueden contener vulnerabilidades en la seguridad y/o ser EOL (End Of Life). Gentoo recomienda no configurarlas como máquinas virtuales de sistema o usuario . Por favor, lea Máquinas Virtuales Solo Build para más información.

El asterisco * indica que ésta es la máquina virtual activa (la del sistema o la del usuario cuando está configurada). El nombre entre corchetes ([]) es el alias, o identificador para esa máquina virtual (MV). Puede usarse el alias o el número identificador con la orden java-config --set-system-vm. A continuación, un ejemplo de cómo establecer la MV del sistema:

Listado de Código 3.2: Establecer la MV del sistema

(Mediante alias (opción preferida))
# java-config --set-system-vm sun-jdk-1.6
Now using sun-jdk-1.6 as your generation-2 system JVM
(Mediante el número identificador)
# java-config --set-system-vm 3
Now using sun-jdk-1.6 as your generation-2 system JVM

Como usuario normal puede utilizar java-config --set-user-vm.

Nota: Ya no tiene que regenerar el perfil con source activar las actualizaciones hechas a la MV del sistema o del usuario.

Máquinas Virtuales Solo Build

Algunas máquinas virtuales están marcadas como Solo Build ya que no son mantenidas (EOL: End Of Life) y/o contienen vulnerabilidades de seguridad. Estas máquinas virtuales no serán usadas automáticamente por Gentoo para correr aplicaciones que usen los lanzadores de Gentoo pero seguirán disponibles para ser usadas por el entorno de construcción (Build) ya que algunos paquetes pueden necesitarlas para ser construidos. El ajuste de estas máquinas virtuales para su sistema o usuario está muy desaconsejado ya que estas máquinas virtuales serán usadas cuando se lancen los ejecutables /usr/bin/{java,javac,..} y también serán usados por cualquier paquete que no use los guiones de lanzamiento de Gentoo.

MV para construcción preferidas

Cuando esté instalando paquetes de Java, la MV usada para la construcción puede en ocasiones ser diferente de la que está definida como MV del sistema.

Esta MV es necesaria cuando, por ejemplo, la máquina virtual de su sistema está ajustada a la MV 1.6 y el paquete que está instalando requiere una MV 1.5. Mientras está haciendo emerge, se seleccionará y usará la MV 1.5, dejando la máquina virtual elegida para su sistema intacta.

Para definir la MV cuand es necesario cambiarla, hemos creado una lista de máquinas virtuales por defecto/soportadas para cada arquitectura. Puede encontrarlas en /usr/share/java-config-2/config/jdk-defaults.conf.

Puede hacer caso omiso del ajuste predeterminado (e incluso de la MV seleccionada a nivel de sistema) en /etc/java-config-2/build/jdk.conf y tener control total sobre la MV que será usada para la construcción. Algunos ejemplos:

Listado de Código 3.3: Ejemplo de /etc/java-config-2/build/jdk.conf

(Siempre quiero usar sun-jdk, es decir, sun-jdk-1.4 para 1.4, sun-jdk-1.5 para 1.5, etc)
*=sun-jdk

Listado de Código 3.4: Ejemplo de /etc/java-config-2/build/jdk.conf

(Use siempre sun-jdk-1.5 donde sea posible, excepto cuando se requiera explícitamente de una MV 1.4 ó 1.3)
*=sun-jdk-1.5

Listado de Código 3.5: Ejemplo de /etc/java-config-2/build/jdk.conf

# Para 1.3 prefiero sun-jdk 1.4, pero cuando no esté disponible, use ibm-jdk-bin.
# Para 1.5, use sun-jdk 
1.3=sun-jdk-1.4 ibm-jdk-bin
1.5=sun-jdk

Aviso: No es obligatorio editar este fichero. Si cambia estas opciones para usar una MV no soportada, es posible que rompa algo. Debido a la amplia variedad de MV disponibles, no disponemos de recursos para probar y verificar que cada paquete funcione en todas ellas. Los fallos reportados con una MV no soportada tendrán menor prioridad que las reportadas presentes en las MV soportadas.

4.  Compiladores

El compilador estándar Java usado es javac, el cual viene en cada JDK. Aparte de configurar la MV utilizada en tiempo de compilación, también es posible configurar qué compilador se usará. Esencialmente, puede definir una lista de preferencias para especificar qué compilador será usado en /etc/java-config-2/build/compilers.conf.

Listado de Código 4.1: /etc/java-config-2/build/compilers.conf

# If the ebuild supports it
# it will check the COMPILERS var front to back and
# use the first compiler that is installed

COMPILERS="ecj-X.Y jikes javac"

Algunos compiladores no ofrecen soporte a todos los posibles argumentos de -target y -source. Por lo tanto, cada compilador en la lista es chequeado para ver si soporta el -source/-target deseado. javac funcionará en todos los casos, así que si no se encuentra un compilador adecuado, éste será usado en cambio.

A continuación se proporcionan más detalles sobre cada compilador:

Nombre Alias Paquete Descripción
javac javac N/D Este es el compilador por defecto que será usado y viene en cada JDK.
jikes jikes dev-java/jikes Jikes fue desarrollado originalmente por IBM. Anécdoticamente es, en general, más rápido que javac. Observe, sin embargo, que es más pedante y fallará en ciertos casos donde javac no tiene problemas. Todavía no soporta la sintaxis de Java 1.5.
Compilador Eclipse para Java ecj dev-java/eclipse-ecj ECJ es el compilador usado por el kit de desarrollo de software Eclipse. Es pleno de características y además muy rápido. Ofrece soporte a la sintaxis de Java 1.5.

5.  Establecer el CLASSPATH predeterminado

Aviso: Las opciones explicadas en esta sección deben ser consideradas como obsoletas y probablemente serán eliminadas en el futuro. Recomendamos encarecidamente no usarlas, porque sus proyectos o aplicaciones Java deberían manejar sus propios "classpaths". Si elige especificar un CLASSPATH predeterminado, algunas aplicaciones podrían comportarse de modo inesperado ya que las clases que no se suponen ahí, lo estarán en el "classpath".

java-config también puede ser usado para establecer el CLASSPATH predeterminado del sistema, así como, el CLASSPATH predeterminado para un usuario específico.

Primero, querrá listar las bibliotecas Java disponibles instaladas en su sistema y que puede querer colocar en su CLASSPATH. A continuación un ejemplo de la salida de la orden:

Listado de Código 5.1: Listar las clases

# 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)
...

Nuevamente, los nombres entre corchetes ([]) son los identificadores a pasar como argumentos a java-config --set-system-classpath. A continuación un ejemplo:

Listado de Código 5.2: Establecer el classpath

# java-config --set-system-classpath log4j,xerces-2

Nota: El directorio actual (.) no será parte del classpath del sistema pues debería ser agregado en el perfil de ingreso de su sistema.

Tendrá que actualizar su entorno ya sea reingresando o regenerando el fichero /etc/profile.

Para los usuarios, java-config --set-user-classpath creará ~/.gentoo/java-env-classpath, el cual debería regenerar desde su perfil del intérprete de comandos.

Listado de Código 5.3: Regenerar el classpath específico de un usuario

if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
       source ${HOME}/.gentoo/java-env-classpath
fi

Si realmente quiere un classpath predeterminado para el sistema o el usuario, puede agregar algo como lo siguiente a su perfil del intérprete de comandos, aunque le aconsejamos no hacerlo.

Listado de Código 5.4: Establecer el classpath

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

6.  Plugins Java para los navegadores

Instalando un plugin

Puede instalar un plugin Java para el navegador haciendo emerge a una máquina virtual Java con el parámetro USE nsplugin activado.

Nota: nsplugin no está disponible para todas las arquitecturas. Revise si el soporte para la arquitectura deseada está disponible antes de intentar instalar una MV ejecutando emerge -pv <java-vm>.

Portage permitirá la instalación de múltiples versiones de plugins Java plugins, aunque solo uno será usado por el navegador. Puede revisar la lista de plugins disponibles con:

Listado de Código 6.1: Visualizando los plugins disponibles

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.6
   [2]   icedtea-bin

En este ejemplo, el plugin del navegador seleccionado es sun-jre-bin.

Listado de Código 6.2: Seleccionando un plugin

# eselect java-nsplugin set sun-jre-bin-1.6

Verifique que el plugin correcto ha sido seleccionado:

Listado de Código 6.3: Verificando el plugin correcto

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.6  current
   [2]   icedtea-bin

El sitio java.com proporciona un enlace para verificar el plugin instalado. Además, si está usando un navegador basado en Mozilla, puede verificar el plugin Java escribiendo about:plugins en la línea para direcciones.

Plugins en sistemas con múltiples librerías

Si está usando un sistema multilib con librerías de 64 y 32 bits (por ejemplo, en un AMD64), puede tener instalados ambos plugin Java, de 64 y de 32 bits. A menos que tenga una necesidad imperiosa de ejecutar aplicaciones de 32 bits, le recomendamos usar plugins nativas de 64 bits en navegadores web de 64 bits.

Hay disponibles varias plugins para navegador de 64 bits. La pareja por defecto, sun-jdk y sun-jre-bin, incluyen ambas plugins para navegador. Simplemente haga emerge de una de ellas con el ajuste USE nsplugin activado.

Listado de Código 6.4: Installing a 64-bit plugin

# echo "dev-java/sun-jre-bin nsplugin" >> /etc/portage/package.use
# emerge sun-jre-bin

Para usar un plugin de 32 bits en un navegador de 32 bits, necesitará hacer emerge de emul-linux-x86-java con el ajuste USE nsplugin activado.

Listado de Código 6.5: Instalando un plugin de 32 bits

# echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use
# emerge emul-linux-x86-java

Luego revise cuales plugins estan disponibles:

Listado de Código 6.6: Viendo cuales plugins estan disponibles

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.5
  [2]   emul-linux-x86-java-1.6
Available 64-bit Java browser plugins
  [1]   icedtea-bin
  [2]   sun-jre-bin-1.6

Ahora seleccione el plugin adecuado para su navegador:

Listado de Código 6.7: Seleccionando los plugins

# eselect java-nsplugin set 32bit emul-linux-x86-java-1.5

Verifique que los plugins correctos han sido seleccionados:

Listado de Código 6.8: Verificando los plugins correctos

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.5
  [2]   emul-linux-x86-java-1.6  current
Available 64-bit Java browser plugins
  [1]   icedtea-bin
  [2]   sun-jre-bin-1.6  current

7.  Parámetros USE para usar con Java

Configurar los parámetros USE

Para más información acerca de los parámetros USE, puede consultarse el capítulo acerca de Parámetros USE del Manual Gentoo.

Los parámetros USE

  • El parámetro java agrega soporte para Java en una variedad de programas.
  • El parámetro nsplugin agrega soporte para los navegadores estilo Mozilla (incluyendo Firefox). Necesitará esto para visualizar applets Java en su navegador estilo Mozilla.
  • El parámetro source instalará un fichero zip del código fuente del paquete. Esto es típicamente usado para proporcionar el código fuente del paquete a su IDE.
  • El parámetro jce agrega soporte para el motor criptográfico Java (en inglés: Java Cryptography Engine)
  • El parámetro doc típicamente instalará la documentación de la API, generada por javadoc.

8.  Recursos Adicionales

Recursos fuera de línea

  • Página del manual de java-config
  • java-config --help

Recursos en línea



Imprimir

Página actualizada 24 de julio, 2012

Sumario: Esta guía le dará a conocer Java y le explicará cómo usar Java con Gentoo Linux.

Joshua Nichols
Autor

Karl Trygve Kalleberg
Autor

Joshua Saddler
Editor

José Alberto Suárez López
Traductor

John Christian Stoddart
Traductor

Pablo Pita Leira
Traductor

Andrés Pereira
Traductor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.