En informática , Java Web Start (también conocido como JavaWS , javaws o JAWS ) es un marco obsoleto desarrollado por Sun Microsystems (ahora Oracle ) que permite a los usuarios iniciar software de aplicación para la plataforma Java directamente desde Internet mediante un navegador web . La tecnología permite una actualización de versiones sin problemas para aplicaciones distribuidas globalmente y un mayor control de la asignación de memoria a la máquina virtual Java .
Java Web Start se distribuyó como parte de la plataforma Java hasta que se eliminó en Java SE 11, tras su desuso en Java SE 9. Oracle no publicó el código de Java Web Start como parte de OpenJDK y, por lo tanto, OpenJDK originalmente no lo admitía. IcedTea-Web proporciona una implementación de código abierto independiente de Java Web Start que actualmente está desarrollada por la comunidad AdoptOpenJDK , RedHat y Karakun AG, y que se incluye en algunos instaladores de OpenJDK. [1] Además, OpenWebStart proporciona una implementación basada en código abierto que se basa en IcedTea-Web pero ofrece más funciones y opciones de soporte comercial.
A diferencia de los applets de Java , las aplicaciones Web Start no se ejecutan dentro del navegador. De forma predeterminada, se ejecutan en el mismo entorno de pruebas que los applets, con varias extensiones menores, como permitir cargar y guardar el archivo que el usuario selecciona explícitamente a través del cuadro de diálogo de selección de archivos. Solo las aplicaciones firmadas se pueden configurar para tener permisos adicionales.
Web Start tiene la ventaja sobre los applets de que supera muchos problemas de compatibilidad con los plugins Java de los navegadores y las diferentes versiones de JVM . Los programas Web Start ya no son una parte integrada de la página web, sino que son aplicaciones independientes que se ejecutan en un marco separado.
Web Start también puede ejecutar applets sin modificar que estén empaquetados dentro de archivos .jar, escribiendo el archivo JNLP apropiado. Este archivo también puede pasar los parámetros del applet. Dichos applets también se ejecutan en un marco independiente. Es posible que el lanzador de applets no admita algunos casos específicos, como la carga de una clase como recurso.
Al igual que los applets, Java Web Start es multiplataforma .
Con JDK9 , Oracle dejó en desuso varias tecnologías de implementación, incluidos subprogramas y Java Web Start. [2] [3]
En marzo de 2018, Oracle anunció que no incluiría Java Web Start en Java SE 11 (18.9 LTS) y versiones posteriores. Los desarrolladores deberán realizar la transición a otras tecnologías de implementación. [4] Desde entonces han surgido algunas alternativas independientes.
El desarrollador prepara un archivo XML especial con extensión JNLP. Este archivo describe los requisitos de la aplicación, la ubicación del código, los parámetros y los permisos adicionales (si los hay). El navegador descarga este archivo como cualquier otro y (siguiendo su tipo MIME , application/x-java-jnlp-file
) lo abre con la herramienta Web Start. La herramienta Web Start descarga todos los recursos necesarios y ejecuta la aplicación.
Java Web Start ofrece una serie de clases en el paquete javax.jnlp que proporcionan varios servicios a la aplicación. Sun diseñó la mayoría de estos servicios con el objetivo de permitir un acceso cuidadosamente controlado a los recursos (como archivos y el portapapeles del sistema) y, al mismo tiempo, restringir la aplicación a operaciones autorizadas.
Sun introdujo la versión 1.0 de Web Start en marzo de 2001, [5] mientras que la compatibilidad con Windows de 64 bits se agregó solo en Java 6 [6] (posterior a que Java de 64 bits estuviera disponible por primera vez). Dado que J2SE 1.4 Web Start viene como una parte predeterminada de Java Runtime Environment (JRE) llamado javaws
, los administradores de computadoras ya no tienen que instalarlo por separado.
Los programadores suelen hablar del Protocolo de Lanzamiento de Red Java ( JNLP ) de forma intercambiable con el término "Web Start". El protocolo JNLP, definido con un esquema XML , especifica cómo iniciar aplicaciones Java Web Start. JNLP consiste en un conjunto de reglas que definen exactamente cómo implementar el mecanismo de lanzamiento. Los archivos JNLP incluyen información como la ubicación del archivo del paquete jar y el nombre de la clase principal de la aplicación, además de cualquier otro parámetro para el programa. Un navegador configurado correctamente pasa los archivos JNLP a un Entorno de Ejecución de Java (JRE) que a su vez descarga la aplicación en la máquina del usuario y comienza a ejecutarla. El desarrollo de JNLP se llevó a cabo bajo el Proceso de la Comunidad Java como JSR 56. Incluye la versión 1.0 original, la posterior versión de mantenimiento 1.5 y, a partir de 2006 [actualizar], la versión de mantenimiento 6.0 pendiente. [ aclarar ]
Entre las características importantes de Web Start se encuentran la capacidad de descargar e instalar automáticamente un JRE en caso de que el usuario no tenga instalado Java, y la posibilidad de que los programadores especifiquen qué versión de JRE necesita un programa determinado para ejecutarse. El usuario no tiene que permanecer conectado a Internet para ejecutar los programas descargados, ya que se ejecutan desde una caché mantenida localmente . Las actualizaciones del software se descargan desde la Web y están disponibles cuando el usuario tiene una conexión a Internet, lo que alivia la carga de implementación.
Cualquier usuario de computadora puede utilizar JNLP simplemente instalando un cliente JNLP (el más común es Java Web Start). La instalación puede ocurrir automáticamente de modo que el usuario final vea cómo el iniciador del cliente descarga e instala la aplicación Java cuando se ejecuta por primera vez.
JNLP funciona de manera similar a cómo funciona HTTP/HTML para la web. Para mostrar una página web HTML , después de que el usuario hace clic en un enlace web, el navegador envía una URL a un servidor web , que responde con un archivo HTML. A continuación, el navegador solicita los recursos a los que hace referencia este archivo (imágenes, CSS ) y, finalmente, muestra la página una vez que ha recibido suficiente información. La visualización de la página suele comenzar antes de que se hayan descargado todos los recursos; algunos recursos que no son críticos para el diseño de la página (como las imágenes) pueden continuar después.
JNLP refleja este proceso; de la misma manera que un navegador web muestra una página web, un cliente JNLP "muestra" una aplicación Java . Después de que el usuario hace clic en un enlace web, el navegador envía una URL a un servidor web, que responde con un archivo JNLP (en lugar de un archivo HTML) para la aplicación. El cliente JNLP analiza este archivo, solicita los recursos especificados (archivos jar), espera la recuperación de todos los recursos necesarios y luego inicia la aplicación. El archivo JNLP puede enumerar los recursos como "perezosos", lo que informa al cliente JNLP que la aplicación no necesita esos recursos para iniciarse, pero puede recuperarlos más tarde cuando/si la aplicación los solicita.
El siguiente ejemplo muestra un archivo JNLP simple para iniciar el subprograma, especificando la base de código, la fuente, la clase principal y el tamaño de la ventana. Este archivo contiene todas las referencias necesarias y es autosuficiente para iniciar la aplicación. Como no se solicitan permisos, el código se ejecutará en un entorno limitado. JNLP también indica que esta aplicación puede ejecutarse sin conexión (si ya está almacenada en caché) y debe actualizarse como un proceso en segundo plano.
<?xml version="1.0" encoding="UTF-8"?> <jnlp spec= "1.0+" codebase= "http://ultrastudio.org/upload" href= "" > <information> <title> Ejecutar subprograma con Web Start </title> <vendor> Foo Bar Inc. </vendor> <offline-allowed/> </information> <resources> <j2se version= "1.5+" href= "http://java.sun.com/products/autodl/j2se" /> <jar href= "Ray-2.3-4ca60e46-0956-3f22-983c-e3ed986dfd03.jar" main= "true" /> </resources> <applet-desc name= "Applet de diagrama de rayos" main-class= "raydiagramsapplet.Main" width= "300" height= "200" > </applet-desc> <actualizar comprobación= "fondo" /> </jnlp>
Para reducir el tamaño de una aplicación Java Web Start, Sun Microsystems introdujo en Java 1.5.0 un sistema de compresión llamado Pack200 , que puede comprimir un archivo jar grande a una novena parte de su tamaño original si sólo contiene clases Java. [7]
Java Web Start ha sido compatible con Pack200 desde su primera aparición, pero inicialmente esta función requería la cooperación del lado del servidor y una cierta cantidad de experiencia para su configuración. Cuando Sun presentó Java SE 6u10, la compatibilidad con Pack200 pasó a estar disponible sin necesidad de un soporte especial del servidor. Los diseñadores de aplicaciones pueden habilitar o deshabilitar esta función dentro de los archivos JNLP.
En conexiones lentas, Pack200 ofrece un aumento de rendimiento en el tiempo de inicio de la aplicación y el tiempo de descarga.
De forma predeterminada, las aplicaciones Java Web Start se ejecutan de forma "restringida", lo que significa que no tienen acceso a algunos recursos del sistema, como los archivos locales. Pero los editores pueden eliminar estas restricciones firmando sus aplicaciones Web Start con la jarsigner
herramienta que viene con el JDK .
El proyecto de código abierto IcedTea ofrece una implementación alternativa de JNLP en IcedTea-Web . A partir de la versión 1.7.2, también funciona en versiones más nuevas sin soporte oficial de JWS. [8]
Para ejecutar aplicaciones basadas en Java Web Start después del lanzamiento de Java 11, la empresa Karakun AG ha lanzado la herramienta de código abierto OpenWebStart, basada en IcedTea-Web. [9] La herramienta incluye toda la funcionalidad de IcedTea-Web y agrega características extendidas, como instaladores nativos para Mac OS, Windows y Linux. IcedTea-Web fue creado con el apoyo de RedHat y AdoptOpenJDK . [10]
Oracle no incluirá Java Web Start en Java SE 11 (18.9 LTS) y versiones posteriores. Oracle comenzará a alentar a los desarrolladores y usuarios de aplicaciones a que abandonen Java Web Start y alentará a los consumidores no comerciales a que eliminen de sus escritorios cualquier instalación de Oracle JRE no utilizada o no compatible.