Guía Java Gentoo
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]
*) 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 |
# java-config --set-system-vm sun-jdk-1.6
Now using sun-jdk-1.6 as your generation-2 system JVM
# 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 |
*=sun-jdk
|
Listado de Código 3.4: Ejemplo de /etc/java-config-2/build/jdk.conf |
*=sun-jdk-1.5
|
Listado de Código 3.5: Ejemplo de /etc/java-config-2/build/jdk.conf |
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
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|