Java

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Java and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎русский • ‎中文(中国大陆)‎
Resources

Java es un lenguaje de programación desarrollado originalmente por Sun Microsystems que utilizan un ejecutable para permitir correr aplicaciones desarrolladas en Java en varias plataformas. Es una opción popular para los desarrolladores que desean crear aplicaciones multiplataforma.

¿Que es Java?

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 múltiples plataformas sin la necesidad de recompilar el código 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 características 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.

Instalando una máquina virtual

Opciones

Gentoo proporciona una variedad de entornos de ejecución de Java (JREs) y kits de desarrollo Java (JDKs). Las opciones actuales incluyen:

Vendor JDK JRE
Open Java SE de IcedTea (anteriormente icedtea6-bin) dev-java/icedtea-bin y dev-java/icedtea-bin
Java 7 SE de Oracle dev-java/oracle-jdk-bin dev-java/oracle-jre-bin
El compilador Java GCC de GNU: GCJ IcedTea (actualmente IcedTea-7) dev-java/icedtea sys-devel/gcc USE="gcj"

Instalar un JRE/JDK

Para instalar el JDK por defecto del perfil lance:

root #emerge --ask virtual/jdk

Para instalar el perfil JRE por defecto lanzar:

root #emerge --ask virtual/jre

Algunos JDKs y JREs, incluyendo los paquetes de Oracle, 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 la variable ACCEPT_LICENSE dentro de /etc/portage/make.conf no será posible instalar el JDK/JRE. Para mayor información de como agregar licencias aceptadas en make.conf puede consultarse el capítulo de licencias del manual de Portage.

Para evitar cualquier restricción de licencias, considérese instalar icedtea-bin, el cual es una implementación abierta de Java del proyecto OpenJDK.

Nota
Tenga en cuenta que cada JDK incluye un JRE. Por tanto no es necesario instalar un JRE si se ha hecho emerge de un JDK.

Instalar la máquina virtual GCJ IcedTea

Importante
gcj es obsoleto y se eliminará en las versiones 7.0 y superiores de GCC. En Gentoo No está disponible a partir de 6.0. Considere esta sección obsoleta.

Se ofrece el código fuente de la máquina virtual IcedTea el cual requiere la compilación por parte de un compilador de bytecodes Java. Esta secuencia de comienzo la puede ejecutar el compilador para Java de GNU. Este compilador está disponible cuando se construye GCC con el ajuste USE gcj. USE flag

Cuando se reconstruye GCC con este ajuste USE habilitado, se puede instalar el paquete dev-java/icedtea. Debido a una incidencia en Portage, los usuarios necesitan en primer lugar instalar explicitamente dev-java/gcj-jdk y dev-java/ant-core si no están ya disponibles.

root #emerge --ask --oneshot dev-java/gcj-jdk dev-java/ant-core
root #emerge --ask dev-java/icedtea:7

Instalando maquinas virtuales con descarga restringida

Algunos JDKs y JREs necesitan unos pasos adicionales para realizar sus configuraciones. Hacer emerge de los paquetes tal y como se realiza normalmente. Si son necesarios pasos adicionales, los ebuilds ofrecerán instrucciones para los usuarios acerca de dónde ir y qué descargar.

Descargar el archivo o archivos indicados en /usr/portage/distfiles. Una vez los archivos están en el lugar indicado, lanzar de nuevo la orden emerge. En este punto la instalación de JRE/JDK se iniciará.

Configurar un JRE sin monitor ni teclado

A veces no hay necesidad de un JRE completo con todas las capacidades (capabilities) de java. Usar java en un servidor no suele requerir ninguna GUI ni ninguna característica gráfica, de sonido o incluso de impresión. Para instalar un JRE simplificad (a veces descrito como sin interfaz), se necesita cambiar algunos ajustes USE para el tipo de JRE seleccionado.

ARCHIVO /etc/portage/package.useCambios necesarios en los ajustes USE
dev-java/icedtea headless-awt -alsa -cups
dev-java/icedtea-bin headless-awt -alsa -cups
dev-java/oracle-jre-bin headless-awt -alsa -cups

Dependiendo del perfil de Gentoo actual, este podría ser el caso. Como es habitual, se pueden comprobar los ajustes USE que se aplican a un determinado paquete lanzado emerge en el modo pretensión:

user $emerge --pretend --verbose virtual/jre

Configurar la máquina virtual de Java

Visión general

Gentoo posee la habilidad de instalar multiples JDKs y JREs sin causar conflictos.

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

Nota
Es posible tambien utilizar eselect para cambiar la máquina virtual del sistema y del usuario. Lea eselect java-vm help.

Estableciendo una maquina virtual por defecto

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

root #java-config --list-available-vms
The following VMs are available for generation-2:
1&41;      IcedTea JDK 7.2.6.3 [icedtea-7]
*&41;      IcedTea JDK 3.0.1 [icedtea-8]
Nota
Las maquinas virtuales marcadas como 'Build Only' pueden contener vulnerabilidades o estar en el final de su ciclo de vida (EOL). Gentoo recomienda no definir estas VMs como las del sistema o las del usuario. Por favor, leer la sección sobre máquina marcada como Build Only para obtener más información.

El "*" indica cual es la JVM 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. Se puede utilzar el ID o el número en java-config --set-system-vm para definir la máquina virtual. El siguiente texto ofrece un ejemplo de cómo establecer la maquina virtual para todo el sistema.

Estableciendo la maquina virtual manualmente (modo preferido):

root #java-config --set-system-vm icedtea-7
Now using icedtea-7 as your generation-2 system JVM

Método alternativo: seleccionar la máquina virtual por número:

root #java-config --set-system-vm 3
Now using icedtea-7 as your generation-2 system JVM

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

Nota
Normalmente no se necesita hacer source del perfil para las sesiones ya existentes del intérprete de órdenes cuando se cambia de usuario o de máquina virtual del sistema. La única excepción es que las variables como JAVA_HOME todavía apuntarán a la localización anterior después de ajustar por primera vez una máquina virtual de usuario o volver a la máquina virtual del sistema.

Maquina virtual marcada como Build Only

Algunas maquinas virtuales están 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 (El guión run-java-tool se diseñó para cambiar entre MVs), sin embargo seguirán disponibles para los entornos de compilación de Gentoo ya que algunos paquetes pueden necesitarlas para ser compiladas. No se recomienda configurar estas maquinas virtuales tanto para usuario como para el sistema ya que en este caso se utilizarán al lanzar los ejecutables /usr/bin/{java,javac,..} y también serán utilizadas por cualquier otro paquete que no utilice los lanzadores de Gentoo.

Estableciendo un CLASSPATH por defecto

Advertencia
Las opciones explicadas en esta sección debe ser consideradas como obsoletas y es probable que sean removidas en el futuro. Se recomienda encarecidamente evitarlas ya que cada proyecto o aplicación Java debe administrar sus propias rutas a las clases (classpaths). Cuando se decida especificar un valor por defecto CLASSPATH por defecto, algunas aplicaciones podrían comportarse de forma inesperada a causa de código no esperado en la ruta a las clases.

java-config 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 instaladas en el sistema para posiblemente incluirlas en la variable CLASSPATH. Se muestra un ejemplo de la salida:

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

Los nombres dentro de las llaves ([]) son los identificadores que se deben pasar a java-config --set-system-classpath. Acá un ejemplo:


root #java-config --set-system-classpath log4j,xerces-2
Nota
El directorio actual (.) no sera parte del classpath del sistema, ya que el mismo debe ser agregado al perfil de inicio de sesión del sistema.

Actualizar el entorno reiniciando la sesión o tecleando source /etc/profile

Para los usuarios, java-config --set-user-classpath creará ~/.gentoo/java-env-classpath, que se podría lanzar desde perfile del intérprete de órdenes.

CÓDIGO Lanzar un classpath especifico del usuario
if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
       source ${HOME}/.gentoo/java-env-classpath
fi

Si desea un classpath para todo el sistema o por defecto para el usuario agregue algo como lo siguiente al perfil del intérprete de órdenes. No se recomienda lo siguiente:

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

Complementos Java para el Navegador Web

El plugin Java para el navegador Web se solía gestionar a través de eselect java-nsplugin. Esto se ha eliminado en favor de una experiencia más sencilla y preparada para ser utilizada. Para un uso básico, simplemente haga emerge de la JVM elegida con el ajuste USE nsplugin habilitado. Observe que el plugin de Oracle únicamente está disponible para amd64 y x86.

También tenga en cuenta que los navegadores Web basados en el proyecto Chromium ya no ofrecen soporte para plugins basadas en NPAPI debido a que se eliminó el código en septiembre de 2015. La lista de navegadores soportados está mermando pero aún incluye Firefox desde la versión 46.

Para más información, incluyendo la selección de JVM, Web Start y multilibrería, leer el fichero README instalado con icedtea-web.

Ajustes USE para su uso con Java

Establecer los ajustes USE

Para más información en relación a los ajustes USE, consultar el capítulo correspondiente del manual de Gentoo.

Ajustes USE

  • El ajuste java añade soporte para Java en algunos programas
  • El ajuste nsplugin añade soporte para los navegadores de Mozilla (incluyendo Firefox). Esto es necesario para ver applets de Java en un navegador tipo Mozilla
  • El ajuste jce añade soporte para el motor criptográfico de Java

Los siguientes ajustes USE van en JAVA_PKG_IUSE.

  • El ajuste source instala un fichero zip de los fuentes de un paquete. Esto se utilizaba tradicionalmente en los IDEs para 'adjuntar' fuentes la las librerías que se estaban utilizando.
  • Para los paquetes Java, el ajuste doc construirá la documentación del API utilizando javadoc.

Ver también

Recursos externos

Se puede encontrar más información fuera de línea:

  • man java-config
  • java-config --help

Para aportar sugerencias o realizar preguntas acerca de este documento, por favor envíe un mensaje de correo electrónico al equipo Java de Gentoo: java@gentoo.org


This article is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg, Joshua Saddler (nightmorph)
They are listed here as the Wiki history does not allow for any external attribution. If you edit the Wiki article, please do not add yourself here; your contributions are recorded on the history page.