Las applets (miniaplicación) son programas escritos en Java que sirven para "dar vida" a las páginas Web (interacción en tiempo real, inclusión de animaciones, sonidos...), de ahí su potencia.
Las applets son programas que se incluyen en las páginas Web. Las applets son ejecutadas en la máquina cliente, con lo que no existen ralentizaciones por la saturación del módem o del ancho de banda. Permiten cargar a través de la red una aplicación portable que se ejecuta en el navegador. Para que esto ocurra tan sólo hace falta que el navegador sea capaz de interpretar Java.
A las páginas que contienen applets se las denomina páginas Java-Powered. Las applets pueden ser visualizadas con la herramienta appletviewer, incluido en el JDK de Java.
Las applets no son exactamente aplicaciones Java, ya que presentan las siguientes diferencias respecto a las aplicaciones normales Java:
Como ya se ha dicho las applets tienen una serie de restricciones de programación que las hacen "seguras".
Estas restricciones de seguridad son especialmente importantes, ya que evitarán que se cargue por error una applet que destruya datos de la máquina, que obtenga información restringida, o que produzca otros daños inesperados.
Las applets no dejan de ser "ejecutables" que funcionan dentro de una aplicación, como puede ser un visualizador de páginas Web (browser). Este ejecutable puede obtenerse de una red, lo que significa que hay código posiblemente no fiable que se ejecuta dentro de la aplicación.
Java tiene muchas salvaguardas de seguridad que minimizan el riesgo de la ejecución de applets, pero estas salvaguardas también limitan a los programadores de applets en su capacidad de programación.
El modelo de seguridad para las applets en Java trata una applet como código no fiable ejecutándose dentro de un entorno fiable. Por ejemplo, cuando un usuario instala una copia de un navegador Web en una máquina se está fiando de que su código será funcional en el entorno. Normalmente los usuarios tienen cuidado de qué instalan cuando proviene de una red. Una applet, por el contrario, se carga desde la red sin ninguna comprobación de su fiabilidad.
El lenguaje Java y las applets son escritos para que eviten las applets no fiables.
Estas salvaguardas son implementadas para verificar que los códigos de byte de las clases de los applets, no rompen las reglas básicas del lenguaje ni las restricciones de acceso en tiempo de ejecución. Sólo cuando estas restricciones son satisfechas se le permite a la applet ejecutar su código. Cuando se ejecuta, se le marca para señalar que se encuentra dentro del intérprete. Esta marca permite a las clases de tiempo de ejecución determinar cuándo a una fracción del código se le permite invocar a cierto método. Por ejemplo, una applet está restringida en los hosts en los que se puede abrir una conexión de red o en un conjunto de URLs a las que puede acceder.
En su conjunto estas restricciones constituyen una política de seguridad. En el futuro, Java tendrá políticas más ricas, incluyendo algunas que usen encriptación y autentificación para permitir a las applets una mayor capacidad.
La actual política de seguridad afecta a los recursos que una applet puede usar, cuyos principales puntos son:
Se anticipa en cualquier caso que en el futuro los modelos de seguridad permitirán a las applets autentificadas superar estas restricciones.