¡Esta es una revisión vieja del documento!


Java

Java es un lenguaje de programación multipropósito que funciona sobre una máquina de ejecución virtual (“runtime”). Es en general tan cool como Python excepto que es más pesado.

Ver produccion§Java para notas sobre las versiones de Java soportadas en Producción.

Información Oficial

  • Java Documentation: –

Instalar

Para instalar Java en sí en un equipo depende de la configuración del sistema operativo:

Linux (Debian y similares):

La mayoría de las distribuciones vienen con OpenJDK que es un entorno abierto de Java que viene con JDK y JRE en dos formas: una consola virtual (“headless”) y un entorno GUI. Es de licencia libre.

Dependiendo de la versión de Debian / Ubuntu distintas versiones de OpenJDK están disponibles. A fecha de última edición de este documento, la versión en Debian Stable es ``openjdk-11``.

Para instalar la versión por defecto:

apt install default-jre-headless
apt install default-jre # también parte gráfica
apt install openjfx # Algunos complementos dependiendo de la versión

Para instalar otra versión de Java, ésta debe estar primero disponible en el repositorio. Con esto es posible instalarla por su nombre y número de versión, por ejemplo:

apt install openjdk-8-jre-headless # o jdk-headless, etc

Debian y Ubuntu usan update-alternatives para gestionar distintas instalaciones de Java, siempre y cuando todas vengan desde la paquetería de Debian. Por ejemplo, es posible listar las versiones de Java instaladas con:

usuario@maquina $ update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
/usr/lib/jvm/oracle-java8-jre-amd64/bin/java

La versión de Java que corre actualmente por defecto se puede confirmar con

java --version

Para ejecutar un jar con una versión diferente de Java, es cosa de cargar en el entorno la ruta de su ejecutable correcto antes de invocar. Hay, en general, dos maneras de hacer esto:

a) Agregar la ruta a JAVA_HOME y su binpath a PATH durante la invocación

usuario@maquina $ JAVA_HOME=/usr/lib/jvm/oracle-java8-jre-amd64 PATH=${JAVA_HOME}/bin:${PATH} java -version
 
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

b) Encapsular a) en un script ejecutable

Sea oracle-java-8 el siguiente script (con las rutas también extraídas desde update-alternatives):

#!/bin/sh
JAVA_HOME=/usr/lib/jvm/oracle-java8-jre-amd64
PATH=${JAVA_HOME}/bin:${PATH}
java $@

Dados privilegios de ejecución, ahora es posible invocar el jar con:

usuario@maquina $ oracle-java-8 -version
 
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

c) Crear un enlace simbólico a la versión deseada (requiere root)

root@maquina $ ln -s /usr/lib/jvm/oracle-java8-jre-amd64/bin/java oracle-java-8
root@maquina $ oracle-java-8 -version
 
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

La paquetería de Helpcom de Facturación Electrónica usa este mecanismo para hacer disponible Java 7u21 requerido por los sistemas de facturación. Ver cliente/postinst.

Windows

La distribución mayor es Java de Oracle pero partiendo en 2018 han hecho retroactiva su licencia comercial para Java >= 1.8, significando que Helpcom (y los clientes) deben pagar una suscripción para poder utilizar el Java de Oracle. Se recomienda usar en vez de eso una de las siguientes fuentes:

Facturación Electrónica es el único proyecto exento de este requerimiento hasta que ytorres oficialice lo contrario. Se está usando Java JDK 7u21 (desahuciado) hasta que se encuentre una ruta de actualización a OpenJDK 9.

Es responsabilidad de cada aplicación setear las variables necesarias para iniciar con la versión de JAVA correcta, léase JAVA_HOME y PATH, sin causar conflictos con el resto. Esto puede hacerse por ejemplo colocando un archivo .bat como responsable de lanzar la aplicación.

Desarrollo

El entorno de desarrollo soportado por Debian es NetBeans, el cual está disponible como el paquete netbeans. Web oficial. Versión 9.x de archivo.

También está disponible Eclipse, pero es preferible instalarlo desde su página web oficial debido a que la versión en Debian Stable (y en Ubuntu 16) está más de un año atrasada. Web de descargas.

Debian y sus distros similares incluyen un compilador de dos fases para Java que permite crear tanto paquetes class como binarios de Linux, llamado javac. Para instalarlo es necesario instalar el paquete -headless correspondiente a la distribución de OpenJDK utilizada: por ejemplo en openJDK 9, openjdk-9-headless.

Tópicos

2018/11/21 14:47Luis Machuca Bezzaza

Notas

Versión de Java para un Usuario Específico

Si se tiene varias versiones de Java instaladas en un equipo, es posible forzar a un software a utilizar una versión de Java específica cambiando las variables de entorno del usuario con que ejecuta, para apuntar JAVA_HOME y PATH a la ruta deseada. Por tanto, es recomendado que el proyecto corra con su propio usuario específico de modo de no tener que cambiar el entorno de Java de un usuario de sistema.

Por ejemplo, si deseamos correr el proyecto mijava del usuario usuario1 (en /home/usuario1/mijava), para que use la versión de Java 8 en /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java, modificamos el archivo $HOME/.profile como sigue:

# ... al final del archivo
PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin:$PATH
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/

Cerramos sesión y volvemos a entrar con el usuario. Podemos confirmar que ahora la versión de Java marcada es la correcta con java -version:

usuario1@host $ echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64/jre
 
usuario1@host $ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1-b13)

Desde este punto podemos correr nuestro proyecto normalmente:

usuario1@host $ java -jar mijava/mijava.jar

f1/java.1593202953.txt.gz · Última modificación: 2020/06/26 20:22 por lmachuca
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0