Programación Avanzada.
Centro Superior de Informática.
Universidad de La Laguna.
2001-2002


Ejecución de un Programa como un Applet y como una Aplicación.

Conversión de Aplicaciones a Applets.

Sabemos que se imponen ciertas limitaciones a los applets por razones de seguridad. Por ejemplo, los applets no pueden acceder a ficheros locales. Si la conversión de aplicaciones a applets no viola las restricciones de seguridad impuestas por los applets, se pueden seguir los siguientes pasos para convertir una aplicación en un applet:
  1. Añadir la sentencia import java.applet.*;
  2. Crear un fichero HTML con la etiqueta <applet> que invoque al applet. Si en la aplicación se pasan parámetros por la línea de comandos, añadirlos con la etiqueta <param> y usar en el método init() el siguiente método para capturarlos:
public String getParamenter(String)
  1. Hacer que la clase principal  extienda a la clase Applet en lugar de a la clase Frame.
  2. Reemplazar los constructores de la aplicación por el método init().
  3. Eliminar el método main(). Generalmente este método, contine las sentencias que crean el marco (Frame). El applet automáticamente se muestra en el espacio delimitado por los argumentos width y heigh de la etiqueta <applet>. Este paso es opcional. si se deja el método main() intacto, dicho método simplemente es ignorado.
  4. Puesto que los applets no tienen Bara de Título, se ha de eliminar la llamada al método setTitle() si existe. Los applets no soportan menús, así pues, se han de reemplazar por botones o por otra clase de componentes de interfaces de usuario (si se utilizaban menús en la aplicación).

Conversión de un Applets a una Aplicación.

Las clases Fame y Applet tienen muchas cosas en común. Ambas son subclases de la clase Container. Entonces, todas las componentes de interfaces de usuarios, los directores de trazado y la manipulación de eventos son iguales para ambas clases. Sin embargo, los marcos en las aplicaciones, son invocados por el intérprete Java mientras que los applets son llamados por un navegador Web. En general, se puede convertir un applet en una aplicación, siguiendo los siguientes pasos:
  1. Eliminar la sentencia import java.applet.*;
  2. Eliminar el fichero HTML en el que se invoca al applet. Si el applet tiene parámetros en el fichero HTML, hay que manipularlos desde la línea de comandos.
  3. Derivar la nueva clase , TestClass, de la clase Frame o de FrameExitHandling en lugar de la clase Applet.
  4. Escribir un constructor en la nueva clase que contenga el código que aparece en los métodos init() y start().
  5. Colocar el código de los métodos stop() y destroy() en el método windowClosing() que manipula los eventos que cierran la ventana.
  6. Añadir un método main() como el siguiente:

  7.  
      public static void main(String [] args) {
        TestClass f = new TestClass();
          //usar el ancho y el alto de la tag <applet>
         f.setSize(Nro_del_ancho_en_HTML, Nro_del_alto_HTML);
         f.setVisible(true);
      }
  8. Puesto que las applets no tienen Barra de Título, añadirle una al marco usando setTitle().

Ejecución de un Programa como un Applet y como una Aplicación.

Se puede implementar un método main() en un applet y ejecutar el applet como una aplicación o ejecutarla como un applet usando el mismo programa. Suponga que se tiene un applet llamado TestApplet. Para que dicho programa se pueda ejecutar como una aplicación, todo lo que hay que hacer es añadir un método main() en el applet como el siguiente:
public static void main(String [] args) {
  //crear un objeto f de la clase Frame
  Frame f = new FrameExitHandling("Titulo");
  //crear una instancia de TestApplet.
  TestApplet ta = new TestApplet();
  //añadir la instancia del applet al marco
  f.setLayout(new BorderLayout());
  f.add("Center", ta);
  //usar el ancho y el alto de la tag <applet>
   f.setSize(Nro_del_ancho_en_HTML, Nro_del_alto_HTML);
  //llamar a init() y a start()
  ta.init();
  ta.start();
  //hacer visible el marco
   f.setVisible(true);
}
Puesto que la clase Applet es una subclase de Panel se puede añadir a un Marco (Frame). Se pueden llamar a los métodos init() y start() del applet si se van a ejecutar desde una aplicación.

Ejercicio 1: Conversión de la Aplicación Reloj en un Applet.

En este ejercicio se propone convertir la aplicación Java que mostraba el la hora y la fecha actuales en un applet.
A dicha aplicación se le pasaban el idioma, el país y la zona horaria  como argumentos en la línea de comandos, por ejemplo:

                  >java Reloj es SP WET

En un applet  estos argumentos se han de especificar en el fichero HTML que contine el código del applet.
Cree un fichero reloj.html  que contenga las etiquetas <applet> y <param>.
A continuación siguiendo los pasos propuestos en los apartados anteriores, transforme la aplicación Reloj.java en un applet RelojApplet.java.
El programa ha de sobreescribir el método init(), de manera que contenga el código del método main() y del constructor de la aplicación.
Usar el método getParameter() para recoger los parámetros idioma, país y zona horaria del fichero HTML.
Puesto que el tamaño de la zona de visión del applet nunca cambia, el programa ha de obtener el ancho y el alto desde el fichero HTML en el método init() e inicializar el radio y el centro del reloj.  Nótese que estas operaciones eran realizadas en el método paint() de la aplicación, puesto que se podía cambiar el radio y el centro del reloj cuando se cambiaba de tamaño el marco.

La salida del applet usando el appletviewer será similar a la siguiente:

ejecucion con appletviewer

Ejercicio 2: Conversión del Applet Reloj en un Applet/Aplicación.

Modifique el applet del ejercicio anterior para que se pueda ejecutar tanto como una aplicación como un applet. Para ello añada el método main tal y como se indica al comienzo del guión.

La salida del applet/aplicación usando el appletviewer será similar a la del ejercicio anterior. Además, será posible ejecutarla desde la línea de comandos ejecutando:

>java Reloj es SP WET

En este caso la salida será similar a :
ejecucion como aplicación

 


Bibliografía.

[1] Y. Daniel Liang. "Introduction to Java Programming". QueE&T. 1999
[2] S. Davis. "Aprenda Java ya". McGraw-Hill. Microsoft Press. 1996.
[3] J. Gosling,  H. McGilton. "The Java Language Enviroment". A White Paper. Sun Microsystems. Java Soft. 1996.
[4] D. Flanagan. "Java en pocs Palabras". McGrawHill-O'Reilyy. 1998.
[5] J.F. Macary, C. Nicolas. "Programación Java". Eyrolles.