¿Qué es un Applet en Java?

Java applets
Imagen © Flickr usuario Silveira Neto

Un applet es un programa escrito en Java y que forma parte de los componentes de una página de Internet. Los applets han sido usados para proporcionar funcionalidad a páginas de Internet que no puede ser satisfecha usando únicamente HTML. La idea de los applets es que sean lo suficientemente pequeños como para proporcionar una funcionalidad específica y claramente definida.

El uso de applets en Java llegó a ser muy conveniente ya que el código es independiente del sistema operativo en que se esté corriendo el navegador, sin importar si se trata de una PC con Windows, una Mac o una computadora con alguna de las variantes de Linux.

El código de un applet es ejecutado por el navegador mismo, usando lo que se llama la máquina virtual Java (JVM, por sus siglas en inglés: Java Virtual Machine).

El uso de Java applets inició junto con el lenguaje Java (1995) y se volvió popular durante los años que le siguieron. Incluso se escribieron applets para lograr funcionalidad que más tarde se implementó con CSS y DHTML. Una de las críticas más grandes que han tenido tanto applets como el lenguaje Java mismo es relacionado a seguridad y las vulnerabilidades que han sido explotadas en su código. Esto ha traído como resultado que los navegadores modernos bloquean versiones antiguas de Java e incluso las versiones más modernas de Edge y de Chrome ya no traen habilitada la ejecución de applets por default y son cada vez más los navegadores con esta tendencia. Con la proliferación de HTML5, el uso de applets ha declinado y, a pesar de los esfuerzos de Oracle, es una tecnología que tiende a desaparecer.

Algunos ejemplos de la funcionalidad para la que se utilizan applets son:

  • Funciones especializadas, como por ejemplo, applets para calcular el valor del ángulo inscrito en una circunferencia y circuncentro de un triángulo.
  • Mostrar secuencias de imágenes y agregar efectos visuales.
  • Mostrar imágenes con sonidos y agregar efectos sonoros.
  • Permitir la presentación de gráficos interactivos, reaccionando a acciones que se toman con el mouse sobre el gráfico.
  • Animaciones de textos y efectos especiales sobre los mismos.
  • Crear diagramas y gráficas, como por ejemplo la clásica gráfica de rebanadas de pastel.
  • Juegos sencillos.

Los applets pueden escribirse en cualquier lenguaje de programación que sea compatible con el código que genera Java, como por ejemplo Jython, JRuby, Pascal y Scala, entre otros.

Seguridad en applets: el inicio del fin

Desde inicios de la década de los 2010 se volvió conocido que los hackers explotaban continuamente vulnerabilidades en código Java, convirtiéndose en una carrera circular el arreglar vulnerabilidades y el encontrarlas, hasta que la conclusión en la comunidad fue solucionarlo deshabilitando Java y haciendo un proceso consiente [por los usuarios] el ejecutar código Java, un pequeño inconveniente contra la aterradora alternativa de tener código Java ejecutándose a tus espaladas en páginas web que visitaras. Como ya lo mencioné anteriormente, varios navegadores están optando por bloquear por completo la ejecución de applets y todo parece indicar que será una tendencia pronto adoptada por todo navegador que se precie de tener estándares de seguridad al menos medianos.

El riesgo más grande con Java applets proviene de aplicaciones denominadas unsigned o self-signed:

  • Unsigned.– Son applets que no cuentan con un certificado que las identifique de una fuente confiable. Igualmente se les denomina así si no cuentan con un nombre e información de su creador. Este tipo de anonimato se considera como un riesgo en seguridad muy alto.
  • Self-signed.– Son applets que cuentan con un certificado otorgado por los autores mismos o, en otras palabras, no cuentan con un certificado otorgado por una autoridad reconocida. Este tipo de aplicaciones también son de muy alto riesgo.

Las últimas versiones de Java muestran advertencias cuando se trata de ejecutar un applet de alguno de los dos tipos arriba mencionados e incluso varias plataformas ya no aceptan su ejecución. El tercer tipo de applet es signed, que cuenta con un certificado otorgado por una autoridad reconocida y la información de su creador está disponible.

En general, el riesgo consiste en que las aplicaciones pudieran tener acceso a información personal durante su ejecución. La mayoría de los navegadores modernos ejecutan applets de forma aislada (en su propio sandbox), pero aún así existen riesgos relacionados a la información del proceso mismo en que están involucrados.