Migracion de Java Applet a Java Web Start

Autor: Jesús R. Colmenares. Centro de Seguridad Informática y Certificación Electrónica (CESICE)-FIIIDT. 

 

RESUMEN

Java es un lenguaje de programación y una plataforma informática comercializada por primera vez en 1995, por Sun Microsystems. Existen muchas aplicaciones y sitios web que no funcionan a menos que tengan Java instalado y cada día se crean más. Java es rápido, seguro y confiable. Desde portátiles hasta centros de datos, desde consolas para juegos hasta súper computadoras, desde teléfonos móviles hasta Internet, Java está en todas partes.

 El código binario de Java, no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel viable incluso, como lenguaje de entrada para un microprocesador físico. Es aquí donde la JVM se muestra como una parte fundamental de la plataforma Java y actúa como un puente que entiende tanto el bytecode como el sistema sobre el que se pretende ejecutar.

Java también cuenta con el plugin de Java el cual es un componente de Java Runtime Environment (JRE), el cual permite a Applets escritos en el lenguaje de programación de Java para ejecutar en varios exploradores. El software del plugin de Java no es un programa autónomo y no se puede instalar de forma independiente. La versión más reciente de Java contiene importantes mejoras para el rendimiento, estabilidad y seguridad de las aplicaciones Java que se ejecutan en su equipo. La descarga y actualización de Java es gratuita y se puede obtener su última versión en java.com.

CONCEPTOS BASICOS:

Máquina Virtual Java.

(En inglés Java Virtual Machine, JVM) Es una máquina virtual de proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el bytecode Java), el cual es generado por el compilador del lenguaje Java.

Applets

Son programas escritos en Java y forman parte de los componentes de una página Web, proporcionan funcionalidades a las páginas creadas en HTML imposibles de ofrecer de otro modo.

Bytecode

El Bytecode Java se encuentra dentro del archivo de extensión class y es el tipo de instrucciones que la máquina virtual Java espera recibir, para posteriormente ser compiladas a lenguaje de máquina, mediante un compilador JIT a la hora de su ejecución. Usualmente es el resultado de utilizar un compilador del lenguaje de programación Java (como javac), pero puede ser generado desde otros compiladores Java Web Start.

Java Web Start,

Permite descargar y ejecutar aplicaciones Java desde la Web, activar las aplicaciones con un simple clic y garantizar que se está ejecutando la última versión de la aplicación. Elimina complejos procedimientos de instalación o actualización.

Introducción

El uso de Applets llegó a ser ampliamente extendido porque proporcionaba la posibilidad de ejecutar código con independencia del sistema operativo usado para visitar una Web. Un usuario podría estar usando Windows o Mac e incluso Linux y vería exactamente lo mismo en cualquiera de estos Sistemas Operativos. Eso sí, todos deben disponer lo que se llama “la máquina virtual de Java (JVM, por sus siglas en inglés). Los applets eran muy populares hace un par de años, pero ahora el mundo de los navegadores cambió y la seguridad se está convirtiendo en un foco principal para todos los principales proveedores de navegadores.

El equipo Java dio su conjunto completo o razones, alternativas, etc. en el documento Migrando desde Java Applets a libre de plugins Java tecnologías.

Con los proveedores de navegadores modernos trabajando para restringir o reducir el soporte de complementos como Flash, Silverlight y Java en sus productos, los desarrolladores de aplicaciones que dependen del complemento de navegador Java deben considerar opciones alternativas. Los desarrolladores que actualmente dependen de los complementos del navegador deberían considerar migrar de Java Applets a la tecnología sin complementos, Java Tecnología Web Start.

La compatibilidad con Java en los navegadores solo es posible mientras los proveedores de navegadores se comprometan a admitir complementos basados en estándares. A fines de 2015, muchos proveedores de navegadores habían eliminado o anunciado plazos para la eliminación del soporte de complementos basado en estándares, mientras que algunos están introduciendo API de extensión patentadas específicas del navegador. En consecuencia, Oracle planea desaprobar el complemento de navegador Java en JDK 9.

La tecnología de complemento en desuso se eliminará por completo del Oracle Java Kit de desarrollo (JDK) y Java Runtime Environment (JRE) en un futuro Java lanzamiento TBD Java. Las aplicaciones Web Start no dependen de un complemento del navegador y no se verán afectadas por estos cambios.

Ventajas del uso del Applet

  • Es fácil de hacer que funcione en FreeBSD, Linux, Microsoft Windows y MacOS, es decir, para que sea multiplataforma.
  • El mismo applet puede trabajar en «todas» las versiones instaladas de Java, al mismo tiempo,
  • Se puede mover el trabajo desde el servidor al cliente, por lo que una solución web más escalable con el número de usuarios / clientes.
  • El applet naturalmente apoya el estado de usuario cambiante, tal como las posiciones de la figura en el tablero de ajedrez.
  • Los desarrolladores pueden desarrollar y depurar un applet directamente simplemente creando una rutina principal (ya sea en la clase del applet o en una clase separada) y llamar a init () y start () del applet, permitiendo así el desarrollo de su favorito Java SE entorno de desarrollo.
  • Una no es de confianza del applet no tiene acceso a la máquina local y sólo se puede acceder al servidor de vino. Esto hace que un applet como mucho más seguro para funcionar de un ejecutable independiente que podría reemplazar. Sin embargo, un applet firmado puede tener acceso completo a la máquina que se está ejecutando si el usuario está de acuerdo.
  • Applets de Java son rápidos, e incluso pueden tener un rendimiento similar al software instalado nativo.

Desventajas del uso del Applet

Un applet de Java puede tener cualquiera de las siguientes desventajas en comparación con otras tecnologías web del lado del cliente:

  • Applets de Java dependen de un entorno de ejecución de Java (JRE), que es un paquete de software bastante complejo y de alto gramaje.
    • Si un applet requiere un JRE más reciente que está disponible en el sistema, o un JRE específico, el usuario que ejecuta la primera vez tendrá que esperar a que la gran JRE descarga se complete.
    • Los navegadores móviles en iOS o Android, no se ejecutan los applets de Java en absoluto.
    • A diferencia de la mayor appletetiqueta, la objectetiqueta tiene soluciones para escribir un documento HTML a través del navegador.
    • No existe una norma para que el contenido de los applets disponibles para los lectores de pantalla. Por lo tanto, los applets pueden dañar la accesibilidad de un sitio web a los usuarios con necesidades especiales.
    • Al igual que con cualquier script del lado del cliente, las restricciones de seguridad pueden hacer difícil o incluso imposible para un applet no confiable para lograr los objetivos deseados.
    • Hay dos tipos de applets con muy diferentes modelos de seguridad: los applets firmados y applets no firmados. A partir de Java SE 7 Actualización 21 (abril de 2013) y los applets web de inicio Aplicaciones los anima a ser firmado con un certificado de confianza, y los mensajes de advertencia aparecen cuando se ejecuta applets firmados. Además de comenzar con Java 7 Actualización 51 applets firmados son bloqueados por defecto; que Un applet firmado también puede ser más peligroso para ejecutarse directamente en el servidor donde se encuentra alojada porque mientras que la base de código le permite hablar con el servidor, se ejecuta dentro de la misma puede evitar el cortafuego. Un applet puede también tratar los ataques de denegación de servicio en el servidor donde se encuentra alojada, pero por lo general las personas que manejan el sitio web también gestionar el applet, haciendo de este irrazonable. Las comunidades pueden resolver este problema a través de la revisión de código fuente o applets se ejecutan en un dominio específico.
  • El applet no firmado también puede tratar de descargar malware alojado en el servidor de origen. Sin embargo, sólo podía almacenar dicho archivo en una carpeta temporal (como lo son los datos transitorios) y no tiene medios para completar el ataque mediante la ejecución de la misma.
  • Un applet firmado contiene una firma que el explorador debe comprobar a través de una, independiente de forma remota funcionamiento del servidor de autoridad de certificación. La producción de esta firma implica herramientas especializadas y la interacción con los mantenedores de servidor de la autoridad. Una vez que se verifica la firma, y el usuario de la máquina actual también aprueba, un applet firmado puede conseguir más derechos, llegando a ser equivalente a un programa independiente ordinaria. La razón es que el autor del applet se conoce ahora y será responsable de ningún daño deliberado. Este enfoque permite a los applets pueden utilizar para muchas tareas que de otra manera no son posibles por un script del lado del cliente. Sin embargo, este enfoque requiere una mayor responsabilidad por parte del usuario, para decidir a quién él o ella confía. Las preocupaciones relacionadas incluyen un servidor de la autoridad no responde, la evaluación equivocada de la identidad del firmante al emitir certificados, y los editores de applet conocidos todavía hacer algo que el usuario no aprobaría. De ahí que los applets firmados aparecido desde Java 1.1 en realidad puede tener más problemas de seguridad.
    • Autofirmado. Applets con firma, que son los applets firmados por los propios desarrolladores, lo que potencialmente puedan suponer un riesgo de seguridad; plugins de Java proporcionan una advertencia al solicitar autorización para un applet de firma automática, ya que el funcionamiento y la seguridad del applet está garantizado sólo por el desarrollador en sí, y no ha sido confirmado de forma independiente. Tales certificados de firma propia que por lo general sólo se utiliza durante el desarrollo antes de su liberación en la confirmación de terceros de la seguridad no es importante, pero la mayoría de los desarrolladores applet buscar la firma de terceros para garantizar que los usuarios confíen en la seguridad del applet.

Final de Plugins de Java

Con los principales navegadores (Internet Explorer, Edge, Chrome y Firefox) restringiendo y reduciendo el soporte de plugins en sus productos no tiene mucho sentido seguir insistiendo en nuevas versiones del plugin de Java. Un producto que requiere de terceros para funcionar, pero esos otros no le dejan funcionar.

Pero tal y como la propia Oracle confirma, la razón detrás de este movimiento reside en que los propios desarrolladores de navegadores han decidido dejar de lado la posibilidad de incrustar Flash, Silverlight, Java y otras tecnologías basadas en plugins.

Hay que destacar que en realidad esta noticia significa el final de los applets de Java. Una tecnología que se popularizo a mediados de los 90, que se terminó por convertir en un peligro para los navegadores y que durante mucho tiempo significó la principal puerta de entrada de malware en los sistemas. No podemos olvidar que Java es un lenguaje, una librería o conjunto de librerías y una plataforma en la que poder compilar y ejecutar código en una máquina virtual, lo que conforman los tres pilares fundamentales de Java.

Oracle adquirió Java en 2010 como parte de la compra de Sun Microsystems. Aunque la fama de ser uno de los vectores de ataque para la instalación de malware y realización de intromisiones viene ya de antes.

Oracle ha anunciado que el plugin de Java desaparecerá de la próxima versión del JDK y JRE (versión 9). Cuando Oracle lanza la versión 9 del Java Development Kit (actualmente prevista para 23 de marzo 2017), El Plug-in va a ser obsoleto y desaparecerá.

Primero Sun y luego su sucesor Oracle, invirtieron tiempo masivo y esfuerzo en apuntar la seguridad del navegador al Plug-in. Pero las vulnerabilidades de Java seguían llegando.

Los desarrolladores que construyeron aplicaciones diseñadas para ejecutarse a través de un navegador plug-in utilizaban la plataforma cruzada NPAPI plug-in estándar API y las ejecutaban en múltiples navegadores, en múltiples plataformas, generando agujeros de seguridad.

Los más nuevos defectos Java incluidos en el kit Blackhole explotan en 2012. Los múltiples defectos Java CERT dijeron al mundo que en 2013. Las fallas que afectaron Java dentro y fuera del explorador, con «los navegadores web utilizando el plug-in de Java… un riesgo particularmente alto». Con cada nueva vulnerabilidad de seguridad, los navegadores decidieron deshacerse del plug-in de Java.

Por último, en 2015, los fabricantes de navegadores de escritorio líder como Google, Mozilla y Microsoft, todos anunciaron planes para dejar de apoyar el estándar NPAPI que los hizo práctico. Se está volviendo cada vez más difícil de ejecutar Java en un navegador de PC.

Algunas empresas se ven obligadas a ejecutarlo, por aplicaciones heredadas que todavía no se han actualizado o reemplazados, como las aplicaciones de mercado vertical que datan desde el inicio. Así dice BeyondTrust ejecutivo Morey Haber en SearchSecurity de TechTarget, «muchas aplicaciones financieras y de salud son en Java puro y tendrán que adaptarse … aplicaciones heredadas para profesionales como radiólogos o planificadores financieros requerirá navegadores más antiguos, siguen siendo vulnerables, y representan un exponencial riesgo».

De vez en cuando, incluso un sistema empresarial principal aparece en la lista, por ejemplo, en TechNewsWorld, Bromium CTO Simon Crosby cita Oracle ERP 11 como sigue requiriendo Java defectuoso 6 o 7 en el punto final.

Si todavía está atascado con una aplicación que requiere Java en el navegador, usted (o sus proveedores) tiene dos opciones de migración primarios.

  • Se puede utilizar la moderna HTML5 basado en estándares para ofrecer una funcionalidad similar en los navegadores modernos, sin Java. O se puede migrar el código de Java con la tecnología Java Web Start de Oracle.
  • Oracle, por su parte, recomienda a los desarrolladores que consideren migrar los applets de Java a la tecnología Java Web Start.

Una vez que se haya hecho esto, puede ser lanzado fuera del explorador desde un acceso directo del escritorio o un enlace web. Si los intereses de opción últimas TIC, diríjase a Java Web Start en Oracle.

Java no muere se adapta a los tiempos

El plugin Java para navegadores ha incitado verdaderas molestias en el ámbito de la ciberseguridad, y los expertos en este ámbito han dejado claro desde hace años cómo aprovechar las debilidades en Java ha sido clave para muchas infracciones en todo tipo de sistemas.

La desaparición del plugin en el futuro Java 9 tendrá implicaciones, por supuesto: Oracle ya está tratando de hacer que los usuarios y desarrolladores dejen de aprovechar applets Java y utilicen la tecnología Java Web Start en su lugar. La medida es en realidad consecuencia del abandono de plugins por parte de Firefox y Chrome.

La popularidad de Java es evidente según el índice TIOBE de lenguajes de programación más utilizados, pero las críticas también son numerosas y han hecho que incluso en Google ya planteen su sustitución por Dart.

Cuidado porque tanto esa medida como la desaparición del plugin no significa que Java vaya a desaparecer, sino que se transforma para evitar precisamente muchos de los problemas que se le imputan a este eminente lenguaje de programación.

Oracle ha anunciado que los días del plugin de Java para navegadores están contados, con su desaprobación fijada para la próxima versión de Java Development Kit 9 y su retirada prevista para una versión futura.

Los fabricantes de navegadores han estado buscando retirar el uso de la API de Netscape (NPAPI) en los últimos años, y como Chrome, Firefox y otros navegadores ya han eliminado o anunciado que pronto dejarán de darle soporte, esto facilita su desaparición.

Durante su vida, el plugin de Java ha sido un camino común para instalar software malicioso o no deseado a usuarios. Recordando que según el antivirus Karspersky, más de la mitad de los ciberataques (afectando a más de mil millones de PCs) que tuvieron lugar en el 2012 se debieron a este plugin. Los días de otros plugins como Flash, Quicktime o Silverlight, también se cuentan.

En resumen, esto se debe a que muchos navegadores de flujo principal habían eliminado o planeado eliminar el soporte de complementos basado en estándares, por lo tanto, Oracle quiere que los desarrolladores de [Java migren de Java applets a complementos libres de plugins Java Tecnologías de inicio web.

Oracle publicó un artículo llamado «Migrando de Java Applets a libre de plugins Java technologies» explica en detalle por qué los Applets están siendo desaprobados y formas alternativas de desarrollador debería usar.

Obtención del software de Java Web Start

Java Web Start está incluido en Java Runtime Environment (JRE) desde la versión Java 5.0. Esto significa que, al instalar Java, Java Web Start se instalará automáticamente. El software de Java Web Start se inicia automáticamente, cuando una aplicación Java que utiliza tecnología Java Web Start se descarga por primera vez. El software de Java Web Start almacena en caché toda la aplicación de forma local en la computadora. Por lo tanto, los siguientes inicios son casi instantáneos, ya que todos los recursos necesarios ya están disponibles localmente. Cada vez que inicie la aplicación, el componente de software de Java Web Start comprueba el sitio web de la aplicación para comprobar si existe una nueva versión y, si es así, la descarga e inicia automáticamente.

Ejecución de una aplicación con el software de Java Web Start

Desde un explorador:

  • Haga clic en un enlace de una página web

Desde el icono del escritorio

  • Si utiliza una aplicación con frecuencia, puede crear un acceso directo en el escritorio o en el menú Inicio. Puede que Java Web Start le pregunte si desea crear accesos directos o una entrada en el menú Inicio. Si su respuesta es ‘Sí’, todos los inicios posteriores de la aplicación se pueden iniciar sin un explorador.

Desde un visor de caché de la aplicación Java

  • Java Web Start también proporciona un visor de caché de la aplicación que puede iniciar desde el panel de control de Java. El visor de caché permite iniciar directamente las aplicaciones que ha descargado.

Instrucciones para iniciar desde el visor de caché de la aplicación

  • Vaya a Inicio > Configuración > Panel de control > Haga doble clic en el icono de Java. Se iniciará el panel de control de Java.
    • Haga clic en el separador General.
    • Haga clic en el botón Ver de la sección Archivos temporales de Internet
    • Haga doble clic en la aplicación de la lista que desea iniciar.
    • Panel de control de Java: Visualizador de la memoria caché de aplicaciones

Desde el símbolo del sistema

  • También puede ejecutar una aplicación desde el símbolo del sistema introduciendo javaws jnlp_url donde jnlp_url es una url al archivo jnlp de la aplicación.
  • Vaya a Inicio > Ejecutar > introduzca command
  • Aparece una ventana del símbolo del sistema.
  • Introduzca javaws url_of_jnlp

Ventajas de Java Web Start

  • Transparencia: El usuario únicamente tiene que pinchar un enlace en su navegador y la aplicación se descarga, se instala y se ejecuta de manera automática.
  • Mantenibilidad: ya no es necesario copiar la misma aplicación a todos los usuarios de una red cada vez que se realiza una pequeña modificación en la misma, sino que con actualizarla en el servidor web esto es suficiente para que los usuarios puedan utilizar la última versión de la misma.
  • Control de versiones: Java Web Start se encarga automáticamente de realizar el control de versiones de las aplicaciones, comprueba en el servidor web que no exista una versión más avanzada de la misma, en cuyo caso actualizará la vieja versión por la nueva automáticamente.
  • Independencia del servidor web y del navegador: Java Web Start puede funcionar en cualquier servidor web tan sólo añadiendo el tipo MIME correspondiente a los ficheros con extensión. jnlp.
  • Independencia del sistema operativo.

Referencias

  1. https://www.java.com/es/download/faq/whatis_java.xml
  2. https://es.wikipedia.org/wiki/Bytecode_Java
  3. https://es.wikipedia.org/wiki/M%C3%A1quina_virtual_Java Moving to a Plugin-Free Web
  4. https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free una-al-dia (07/02/2000) Importante agujero en la Máquina Virtual Java de Microsoft
  5. http://unaaldia.hispasec.com/2000/02/importante-agujero-en-la-maquina.html Migrating from Java Applets to plugin-free Java technologies http://www.oracle.com/technetwork/java/javase/migratingfromapplets-2872444.pdf Java 9 Schedule
  6. https://ifgeekthen.everis.com/es/qu%C3%A9-es-java-webstart-y-c%C3%B3mo-utilizarlo#:~:text=Ventajas%20y%20desventajas%20de%20Java,se%20ejecuta%20de%20manera%20autom%C3%A1tica.
  7. https://blogs.oracle.com/java/entry/java_9_schedule_is_out una-al-dia (15/07/2015) Nuevo 0day en Java
  8. http://unaaldia.hispasec.com/2015/07/nuevo-0day-en-java.html

 

Contacto: ramses.wolverine@gmail.com