Applets Java

¿Qué es un applet?

Un applet es una clase estándar de Java que permite insertar aplicaciones en Java dentro de página HTML, que se ejecutan en el navegador al ser descargadas por la red.

Aplicaciones vs. Applets

La diferencia respecto a las aplicaciones es la manera de ejecutarse, mientras que una aplicación se inicia al realizar la llamada a su método main (), las applets tienen un ciclo de vida un poco más complejo. Para su ejecución es necesaria la creación de una página HTML que indique al navegador qué es lo que hay que cargar y cómo hay que ejecutarlo. Para ello, se utiliza en la página HTML un conjunto de TAGs, como se muestran a continuación: <HTML> <APPLET CODE = “nombreMiApplet.class”    [NAME = “unNombre   WIDTH = tamañoAlto   HEIGHT = tamañoAncho </APPLET>

Características de los Applets

– Los applets no tienen método main() que comience la ejecución. – Los ficheros de Java compilados (*.class) se descargan a través de la red desde un servidor hasta el navegador, en cuya Java Virtual Machine se ejecutan. – Los Applet pueden incluir ficheros de imágenes y sonidos que se descargaran a través de la Red. – Los applets no tienen ventana propia: se ejecutan en la ventana del navegador (en un “panel” incrustado en la página HTML, puesto que la clase Applet desciende de la clase Panel) – Los Applets tienen importantes restricciones de seguridad, que se chequean al llegar al navegador. – Con muy poco trabajo adicional (casi exclusivamente añadir un método main() que cree una ventana e introduzca en ella el applet) podremos convertir applets en aplicaciones.

Restricciones de Seguridad de los Applets

Los applets son fragmentos de código que inherentemente representan un peligro para el sistema porque se cargan a través de una red y en la mayoría de las ocasiones no podemos certificar su procedencia. El control de seguridad está implementado por el navegador, protegiendo al sistema de lo siguiente: – Ejecutar otro programa externo. – Entrada/salida de ficheros – Llamadas a métodos nativos – Intentos de abrir sockets con cualquier otro sistema, a excepción del que proporcionó el applet. La finalidad de estas restricciones es prevenir que los applets puedan violar la privacidad del sistema o dañar un sistema remoto, restringiendo el acceso a los ficheros locales, evitar que el applet pueda ejecutar código no verificado por la JVM, y la restricción de los sockets es para prevenir la comunicación con otros programas. JDK1.2 proporciona los medios necesarios para especificar un dominio protegido particular o entorno de seguridad, donse se puede ejecutar un determinado applet. Jerarquía de la clase Applet Todas las applets heredan de la clase java.applet.Applet, la cual es una subclase de java.awt.Panel.

La jerarquía de clases Applet y el AWT es la siguiente:

Figura. Jerarquía de clases Apple y el AWT
A partir de la clase Component se heredan los métodos gráficos y de los eventos, mientras que la capacidad de añadir elementos de interface de usuario se heredan de la clase Container

Métodos clave de un Applet

Las aplicaciones inician su ejecución con el método main(), sin embargo en los applets no es así. Cuando el constructor finaliza su tarea, el navegador llama al método init() para realizar la inicialización básica del applet. Una vez init() ha finalizado, el navegador llama al método start() y el applet es visible en nuestro navegador. Los dos métodos init() y start() se ejecutan completos antes de que el applet esté “vivo”, y por esto no se pueden utilizar para programar el comportamiento de ejecución del applet.

Descripción de los Métodos

init() – Esta función es llamada al crearse la applet. Las clases derivadas deben sobrecargar este método para llevar a cabo todas las labores de inicialización (cambiar el tamaño de la ventana, inicializar valores de variables, etc…) destroy() – Esta función es llamada cuando el applet no se va a utilizar más. Las clases derivadas deberían sobrecargarlo para hacer una limpieza final, o matar cualquier thread que quede activo. start() – Se llama cuando el applet se hace visible después de haber sido inicializada y cada vez que se hace visible después de haber estado oculta, se minimiza la ventana o se vuelve a la página del applet desde otra página. Este método debería de sobrecargarse para comenzar una animación, sonido public void start() {   musicClip.play();   } stop() – El método stop() se invoca cada vez que el applet se vuelve invisible. Esto ocurre al minimizar la ventana del navegador, si se cambia de página, etc. Se utiliza para parar las animaciones y liberar recursos de la máquina. public void stop() {   musicClip.stop();   }

El método paint()

Los applets son aplicaciones gráficas por naturaleza, por tanto, aunque es posible utilizar llamadas a System.out.println(), normalmente no se hace, sino que se crea una salida de datos sobre el entorno gráfico. A través del método paint() podremos dibujar en el espacio del applet, y es invocado cuando se muestra la ventana del navegador después de haberla minimizado o iconizado.

El método paint y la clase Graphics

El método paint() necesita como argumento una instancia de la clase java.awt.Graphics este argumento es siempre el contexto gráfico del panel donde está el applet y donde se van a llevar a cabo todas las operaciones de dibujo o de escritura. import java.awt.*;   import java.applet.Applet; public class HolaDeNuevo extend Applet {   public void paint (Graphics g) {        g.drawString (“Hola de nuevo”, 25, 25); //coordenadas   }   }

Otros métodos de la clase applet

repaint() – Este método es llamada cuando el applet necesita ser repintado y no debe sobrecargarse update (Graphics g) – Esta función es llamada cuando se necesita actualizar la pantalla limpia el contenido de la pantalla y a continuación llama al método paint() resize (int ancho, int alto) – Cambia el tamaño del applet

Paso de parámetros a un Applet

El paso de parámetros a un applet, se realiza  a través del tag<PARAM> del fichero HTML. <HTML>   <APPLET CODE = “miApplet.class”    WIDTH = 400 HEIGHT = 300>   <PARAM NAME=“NombreParam1” VALUE=“valor”>   <PARAM NAME=“NombreParam2” VALUE=“valor”>   </APPLET>   </HTML> Cada parámetro tiene un nombre y un valor, que se dan ambos en forma de string. Los nombres de parámetros no distinguen entre mayúsculas y minúsculas, pero sí los valores. El applet recuperará los valores de los parámetros a través del método getParameter getParameter (String atr) – Este método carga los valores pasados a la applet vía la marca HTML. El argumento String es el nombre del parámetro que se quiere obtener y devuelve el valor que tenga asignado el parámetro o null en caso de que no tenga. Para usar getParameter se define una cadena genérica y una vez capturado el mismo se utilizan métodos de conversión de tipos al valor adecuado <HTML>   <APPLET CODE = “miApplet.class”    WIDTH = 400 HEIGHT = 300>   <PARAM NAME=“velocidad” VALUE=“50”>   </APPLET>   </HTML>   public class miApplet extends Applet {        int velocidad;        public void init(){   String pv;   pv = getParameter(“velocidad”);   if (pv == null) {   velocidad = 0;   }   else {   velocidad = Integer.parseInt (pv);   }       }        public void paint (Graphics g) {   g.drawString (String.valueOf(velocidad), 20, 20);        }   }
Print Friendly, PDF & Email
X
wpChatIcon