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.
Antes de comenzar
Instalaciones existentes
Para las instalaciones existentes, aunque no haya instalado algo de
Java antes, asegúrese de seguir (por ahora solo en inglés) la Guía de Actualización
Java.
Instalaciones nuevas
Las instalaciones nuevas no requieren preparación previa.
3.
Installando 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 |
| Kit Java Blackdown |
dev-java/backdown-jdk |
dev-java/blackdown-jre |
| Kit Java Sun |
dev-java/sun-jdk |
dev-java/sun-jre-bin |
| Kit Java IBM |
dev-java/ibm-jdk-bin |
dev-java/ibm-jre-bin |
| Kit de desarrollo J2SE de BEA WebLogic |
dev-java/jrockit-jdk-bin |
Como opción por defecto usamos la dupla Blackdown JRE/JDK, ya que es
libre (gratuita) y está disponible sin el fastidio de registrarse.
registro.
Los JRE y JDK de Sun, IBM y BEA son generalmente más veloces, pero
obtenerlos es un poco más trabajoso, pues uno está obligado a leer y
aceptar sus licencias antes de descargar (adicionalmente, IBM requiere
registrarse).
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.
En eventos recientes, Sun ha cambiado la licencia de sus JDK y JRE a
unos términos muchos más amistosos para las distribuciones Linux. Como
resultado, los lanzamientos de Sun a partir de la versión 1.5 son
libremente descargables, sin molestias adicionales.
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.
Debe descargar el(los) fichero(s) indicado(s) a
/usr/portage/distfiles. Una vez allí, vuelva a ejecutar
el comando emerge y los JRE/JDK empezarán a ser instalados.
4.
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
El comando 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 ese comando:
Listado de Código 4.1: Listar las máquinas virtuales disponibles |
# java-config --list-available-vms
The following VMs are available for generation-2:
1) Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2) Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
3) Blackdown 32bit JRE 1.4.2.03 [emul-linux-x86-java-1.4.2]
4) Sun 32bit JRE 1.5.0.08 [emul-linux-x86-java-1.5]
5) Kaffe 1.1.7 [kaffe]
*) Sun JDK 1.5.0.08 [sun-jdk-1.5]
|
El asterico * 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 el
comando java-config --set-system-vm. A continuación, un ejemplo
de cómo establecer la MV del sistema:
Listado de Código 4.2: Establecer la MV del sistema |
# java-config --set-system-vm blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
# java-config --set-system-vm 6
Now using sun-jdk-1.5 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.
|
MV de preferencia
Cuando esté instalando paquetes de Java, la MV puede y será cambiada
si fuese necesario.
Debido a la amplia variedad de MVs disponibles, no tenemos los
recursos para probar y verificar que todos los paquetes funcionen con
todas ellas. Así que para asegurar que todo paquete instale sin
problemas, hemos definido una lista de MVs
predeterminadas/soportadas por arquitectura. Puede encontrarlas en
/usr/share/java-config/config/jdk-defaults.conf. Cuando
esté instalando un paquete Java y este detecte una de las máquinas
virtuales en aquel fichero, usará automáticamente dicha MV en vez de
la MV del sistema.
El cambio de MV al momento de instalar paquetes también es necesario
cuando, por ejemplo, su MV del sistema está configurada como una MV
1.4 y el paquete que está instalado necesita una MV 1.5. Al instalar
el paquete se usará la MV 1.5 preferida dejando intacta su elección de
la máquina virtual del sistema.
Por supuesto, en Gentoo todo se trata acerca de elegir, así que puede
hacer caso omiso de las opciones predeterminadas en
/etc/java-config-2/build/jdk.conf y tener control total
sobre cuál MV será usada. Algunos ejemplos:
Listado de Código 4.3: Ejemplo de /etc/java-config-2/build/jdk.conf |
*=sun-jdk
|
Listado de Código 4.4: Ejemplo de /etc/java-config-2/build/jdk.conf |
*=sun-jdk-1.5
|
Listado de Código 4.5: Ejemplo de /etc/java-config-2/build/jdk.conf |
1.3=sun-jdk-1.4 ibm-jdk-bin
1.4=blackdown-jdk
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. Los fallos
reportados que mencionen el uso de una MV no soportada tendrán baja
prioridad si no se informan con MV soportadas.
|
5.
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 5.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-3.1 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. Anecdóticamente 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 sintáxis de Java 1.5.
|
| Compilador Eclipse para Java |
ecj-3.1 |
=dev-java/eclipse-ecj-3.1* |
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
sintáxis de Java 1.5.
|
6.
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 del comando:
Listado de Código 6.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 6.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 shell.
Listado de Código 6.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
shell, aunque le aconsejamos no hacerlo.
Listado de Código 6.4: Establecer el classpath |
# export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"
|
7.
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 7.1: Visualizando los plugins disponibles |
# eselect java-nsplugin list
[1] sun-jre-bin-1.5
[2] blackdown-jre-1.4.2
|
En este ejemplo, el plugin del navegador seleccionado es
sun-jre-bin.
Listado de Código 7.2: Seleccionando un plugin |
# eselect java-nsplugin set sun-jre-bin-1.5
|
Verifique que el plugin correcto ha sido seleccionado:
Listado de Código 7.3: Verificando el plugin correcto |
# eselect java-nsplugin list
[1] sun-jre-bin-1.5 current
[2] blackdown-jre-1.4.2
|
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.
Para usar un plugin de 32 bits, debe instalar
emul-linux-x86-java activando el parámetro USE nsplugin.
Listado de Código 7.4: 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 7.5: Viendo cuales plugins estan disponibles |
# eselect java-nsplugin list
Available 32-bit Java browser plugins
[1] emul-linux-x86-java-1.4.2
[2] emul-linux-x86-java-1.5
|
Aunque debe seleccionar un navegador de 32 bits (como
mozilla-firefox-bin) para usar con el plugin de 32 bits, la
versión de 64 bits de konqueror usa la máquina virtual Java de
manera directa, así que es posible usar la versión de 64 bits de
blackdown con este navegador, sin más configuración que hacer.
Ahora seleccione el plugin adecuado para el navegador de 32 bits:
Listado de Código 7.6: 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 7.7: Verificando los plugins correctos |
# eselect java-nsplugin list
Available 32-bit Java browser plugins
[1] emul-linux-x86-java-1.4.2 current
[2] emul-linux-x86-java-1.5
|
8.
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.
9.
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 está registrado bajo los términos de
la licencia
Creative Commons - Reconocimiento / Compartir Igual
|