Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
f1:java [2020/06/26 20:22] lmachucaf1:java [2023/03/02 15:15] (actual) lmachuca
Línea 5: Línea 5:
 Ver [[:produccion]]§Java para notas sobre las versiones de Java soportadas en Producción. Ver [[:produccion]]§Java para notas sobre las versiones de Java soportadas en Producción.
  
-=====Información Oficial=====+===== Instalación en Linux =====
  
-  * Java Documentation:  --+==== Instalar ====
  
-=====Instalar===== +Para instalar **Java** en sí en un equipo depende de la configuración del sistema operativo, aquí se muestra para **Linux (Debian y similares)**:
-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.  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``.+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-17``.
  
 Para instalar la versión por defecto: Para instalar la versión por defecto:
  
-  apt install default-jre-headless +  apt install default-jre-headless  # sólo el CLI 
-  apt install default-jre # también parte gráfica +  apt install default-jre           # también parte gráfica 
-  apt install openjfx # Algunos complementos dependiendo de la versión+  apt install openjfx               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:+Para instalar otra versión de Java, ésta debe estar primero disponible en el repositorio de la distribución. 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   apt install openjdk-8-jre-headless # o jdk-headless, etc
  
-Debian y Ubuntu usan [m][[https://askubuntu.com/questions/233190/what-exactly-does-update-alternatives-do|update-alternatives]][/m] 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:+:!: La manera **recomendada** de instalar una versión de Java más independiente de la distribución es [[https://adoptium.net/es/installation/linux/#_deb_installation_on_debian_or_ubuntu|seguir el proceso de instalación de Temurin (AdoptOpenJDK) Java]] para Debian y Ubuntu. 
 + 
 + 
 +Una vez que haya múltiples versiones instaladas, Debian y Ubuntu usan [m][[https://askubuntu.com/questions/233190/what-exactly-does-update-alternatives-do|update-alternatives]][/m] para gestionar las instalaciones de Java, siempre y cuando todas vengan desde la paquetería de Debian. Por ejemplo, es posible listar las versiones de Java instaladas desde paquetería con:
  
 <code bash> <code bash>
Línea 40: Línea 40:
  
   java --version   java --version
 +
 +==== Ejecutar ====
  
 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: 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+a) (Para el shell actual) Agregar la ruta a ''JAVA_HOME'' y su bin-path a ''PATH'' durante la invocación
  
 <code bash> <code bash>
Línea 53: Línea 55:
 </code> </code>
  
-b) Encapsular a) en un script ejecutable+b) Encapsular a) en un script sourceable
  
-Sea ''oracle-java-8'' el siguiente script (con las rutas también extraídas desde ''update-alternatives''):+Por ejemplo creamos ''$HOME/bin/with-java8.sh'' con las rutas adecuadas, y lo marcamos como ejecutable. El archivo contiene lo siguiente:
  
 <code bash> <code bash>
 #!/bin/sh #!/bin/sh
-JAVA_HOME=/usr/lib/jvm/oracle-java8-jre-amd64 +export JAVA_HOME=/usr/lib/jvm/oracle-java8-jre-amd64 
-PATH=${JAVA_HOME}/bin:${PATH} +export PATH=${JAVA_HOME}/bin:${PATH}
-java $@ +
 </code> </code>
  
-Dados privilegios de ejecución, ahora es posible invocar el jar con:+Dados privilegios de ejecución, ahora es posible invocar el jar con la versión de Java que queremos en un subshell:
  
 <code bash> <code bash>
-usuario@maquina $ oracle-java-8 -version +usuario@maquina $ (. $HOME/bin/with-java8.sh && 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) +
- +
-</code> +
- +
-c) Crear un enlace simbólico a la versión deseada (**requiere root**) +
- +
-<code bash> +
-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 version "1.8.0_121"
Línea 90: Línea 78:
 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 [[factelect>cliente/postinst]]. 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 [[factelect>cliente/postinst]].
  
-**Windows**+===== Instalación 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: 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:
  
-  * [[http://openjdk.java.net/|OpenJDK]]  +  * [[http://openjdk.java.net/|OpenJDK]] para Windows 
-  * [[https://adoptopenjdk.net/|AdoptOpenJDK]] +  * [[https://adoptopenjdk.net/|AdoptOpenJDK]] / Temurin  para Windows
   * ObjBuild (SuSE).   * ObjBuild (SuSE).
  
 **Facturación Electrónica** es el único proyecto exento de este requerimiento hasta que [[user>ytorres]] oficialice lo contrario. Se está usando Java JDK 7u21 (desahuciado) hasta que se encuentre una ruta de actualización a OpenJDK 9. **Facturación Electrónica** es el único proyecto exento de este requerimiento hasta que [[user>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.+Puesto que puede haber múltiples versiones de Java instaladas y Windows no tiene un mecanismo de carga de rutas entre múltiples versiones de un programa, :!: es responsabilidad de cada aplicación y desarrollador setear su entorno propio para iniciar con la versión de JAVA correcta, léase ''JAVA_HOME'' y ''PATH'', sin causar conflictos con el resto de las aplicaciones del sistema que pueden usar otro Java. Esto puede hacerse por ejemplo colocando un archivo ''.bat'' como responsable de actualizar las variables de entorno y lanzar la aplicación.
  
 =====Desarrollo===== =====Desarrollo=====
Línea 116: Línea 104:
  
 =====Notas===== =====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: 
- 
-<code> 
-# ... 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/ 
-</code> 
- 
-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%%'': 
- 
-<code bash> 
-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) 
-</code> 
- 
-Desde este punto podemos correr nuestro proyecto normalmente: 
- 
-<code bash> 
-usuario1@host $ java -jar mijava/mijava.jar 
-</code> 
- 
  
 ---- ----
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