Java Network Launching Protocol
# Java Network Launching Protocol

Java Network Launching Protocol (JNLP) es una especificación usada por Java Web Start. Esta especificación permite tener centralizado en un servidor web un programa evitando los problemas de distribución e instalación.

## Qué hace

Al instalar cualquier aplicación normalmente se dan una serie de pasos:

* Se descarga de Internet o se introduce en un medio extraíble (disco compacto, DVD, memoria USB, etc.)
* Se instala.
* Se ejecuta.

El programa javaws permite hacer esto de un modo más fácil y transparente para el usuario, ya que podemos realizar estos pasos simplemente pinchando sobre un enlace mientras estamos utilizando nuestro navegador, de modo que descarga, instalación y ejecución se realizan de modo transparente al usuario.

JavaWS no usa applets, ya que descarga aplicaciones Java normales y necesita, por tanto, de una máquina virtual. Además, viene incluido en el Java Runtime Environment (JRE) de Java desde la versión 1.4.

## Cómo funciona

Cualquier enlace JNLP al iniciar el proceso de ejecución pide autorización al usuario. Además, las aplicaciones pueden estar firmadas (firma electrónica) para asegurar el remitente de la aplicación de modo que pueden seguir el modelo de seguridad de la plataforma Java 2 para asegurar la integridad de los datos que obtenemos a través de la red, de forma que no se produzcan ataques de tipo Man in the Middle, DNS cache poisoning, o corrupción de datos.

## Estructura de un archivo JNLP

Un archivo JNLP es un XML especialmente formado compuesto por:

* Una cabecera XML típica:

Donde "conjunto de caracteres" puede ser cualquier conjunto válido: utf-8, ISO-8859-1...

* Una ruta predeterminada para que los archivos puedan ser llamados desde una ruta relativa.
* Una o más etiquetas information en el que se colocan varias informaciones (ver ejemplo).
* Una etiqueta security (con información variada).
* Una etiqueta resources (con información variada).
* Una etiqueta application-desc con la clase predeterminada a ejecutar.

## Ejemplo

El siguiente es un breve ejemplo de un archivo típico JNLP. No incluye todas las posibles opciones.

