Programación Avanzada.
Centro Superior de Informática.
Universidad de La Laguna.
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:
-
Añadir la sentencia import java.applet.*;
-
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)
-
Hacer que la clase principal extienda a la clase Applet
en lugar de a la clase Frame.
-
Reemplazar los constructores de la aplicación por el método
init().
-
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.
-
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:
-
Eliminar la sentencia import java.applet.*;
-
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.
-
Derivar la nueva clase , TestClass,
de la clase Frame o de FrameExitHandling
en lugar de la clase Applet.
-
Escribir un constructor en la nueva clase que contenga el código
que aparece en los métodos init()
y start().
-
Colocar el código de los métodos stop()
y destroy() en el método
windowClosing()
que manipula los eventos que cierran la ventana.
-
Añadir un método main()
como el siguiente:
public static void main(String [] args) {
TestClass f = new TestClass();
//usar el ancho y el alto de la tag <applet>
f.setSize(width, height);
f.setVisible(true);
}
-
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(width, height);
//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 en US CST
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:
Ejercicio 2: Conversión
de la Aplicación Reloj en un Applets.
Modifique el applet del ejercicio uno para que se pueda ejecutar tanto
como una aplicación como un applet.
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.