La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso Programación en Java

Presentaciones similares


Presentación del tema: "Curso Programación en Java"— Transcripción de la presentación:

1 Curso Programación en Java
Tema 9 APPLETS

2 APPLET,s Y APLICACIONES
Hay dos formas de programar y ejecutar procesos en Java, en modo aplicación y en modo applet. Una aplicación se caracteriza por definir un método que sirve de punto de entrada al programa, es el método main(). Del conjunto de clases que forman la aplicación, una de ellas debe ser la clase principal y definir el método main(). Una aplicación puede usar todos los recursos disponibles del computador; en ese sentido, es local respecto al computador en que "corre". La popularidad y penetración profesional de Java se debe a la portabilidad y a que ha sido diseñado para la programación y ejecución por internet (también a la gratuidad). La máxima expresión de la portabilidad, "escribir una vez, ejecutar mil veces", se encuentra en los applets. La finalidad de los appletes es que los usuarios puedan acceder, ejecutar software desde cualquier computador dotado de conexión a internet. En los últimos años Java ha desarrollado la metodología Java Web Start (arranque de Java desde la web) para la ejecución de aplicaciones desde internet.

3 CONCEPTOS de APPLET,s Los applets, inicialmente pequeñas aplicaciones, se incrustan dentro de las páginas web. Pueden llevar a cabo múltiples tareas: mostrar animaciones, cargar sonidos, conectar con una base de datos, .... Los applets son objetos de clases que derivan de la clase JApplet (también, de la clase Applet). La ejecución de un applet la realiza el navegador (browser) empleado por el usuario (Netscape, Internet Explorer, ...). El JDK incorpora un "visor" de applets, es el appletviewer. Permite probar el applet; además, con el se tiene la certeza de coincidencia de versión. Los applets tienen limitaciones, menos privilegios de ejecución que las aplicaciones, en pos de la seguridad. Para utilizar un applet hace falta un documento HTML.

4 DOCUMENTO HTML La página HTML (HiperText Markup Language) indica al navegador los applets que debe cargar y donde debe ubicarlos dentro de la página web Un documento HTML está formado por etiquetas (tags o marcadores) que indican acciones a realizar. La etiqueta necesaria para utilizar un applet tiene que indicar al navegador lo siguiente: Dirección (URL) donde se encuentran los archivos de clases. Tamaño y situación del applet en la página web La etiqueta <applet> (también la etiqueta <object>, tiene igual significado) se utiliza par incrustar un applet en una página HTML. <applet> permite establecer unos atributos para especificar el applet que va a ejecutar la máquina virtual java del navegador, y características como son el tamaño de la ventana. También, se puede poner parámetros con información necesaria para la ejecución del applet. Además de la etiqueta <applet>, la página web puede tener cualquier otro elemento HTML: tipos de letras, gráficos, ...

5 ETIQUETA APPLET <APPLET
code = MiApplet.class obligatorio, el archivo con bytecode archive = MiArchivo.jar codebase = dirección donde se encuentra el applet, asume path actual alt = "texto alternativo si no puede visualizarse el applet" name = " MI Applet" width = obligatorio height = > obligatorio <param name = "parametro1" value ="valor asociado a parametro1"> <param name = "parametro2" value ="valor asociado a parametro2"> </APPLET> El atributo archive especifica el archivo comprimido en el que se encuentran todas las clases, imagenes, sonidos, ..., necesarios para la ejecución del applet. El navegador carga el documento HTML; al encontrarse la etiqueta < APPLET code = ... busca la clase y descarga el archivo .class de la dirección indicada en codebase.

6 EJEMPLO DOCUMENTO HTML
<HEAD> <TITLE>Applet HTML Page</TITLE> </HEAD> <BODY> <H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3> <P> <APPLET codebase="file:/C:/ignacio/JAVA/Ejercicios/EjemApplet/build/classes/" code="EjemApplet.class" width=350 height=200></APPLET> </P> <HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT> </BODY> </HTML> Nota: FONT SIZE= resta 1 al tamaño de fuente HR WIDTH="100%" escribe línea horizontal al 100%(toda la pantalla) H indica que es un tipo de título (hay H1, ...) I estilo de fuente cursiva P define un párrafo (consigue línea en blanco por encima) TITLE título para el navegador

7 CREAR APPLET DESDE NetBeans
Primero se crea un proyecto de la forma habitual: New Project -> Categories: General Projects: Java Class Library Nombre del proyecto: Ejem2Applet En segundo lugar, se crea la(s) clases con new File ... Una de las clases debe ser la clase applet, para lo cual: new File -> Categories: Java Class File Types: Japplet se escribe el nombre del fichero (coincida con el de la clase). Crea un esqueleto, con la declaración de la clase; por ejemplo: public class ParamApplet extends javax.swing.JApplet { ... Consejo: añadir las sentencias import escritas a continuación: import java.awt.*; import javax.swing.*; // paquete con las clases swing de componentes gráficos, entre ellas JApplet public class ParamApplet extends JApplet { ... A continuación, se modifica la clase: métodos init(), start() ...

8 EJECUTAR APPLET DESDE NetBeans
Una vez implementadas las clases que forman el proyecto, y la clase applet, se compila el proyecto. Para ejecutar el applet, se selecciona la clase applet desde el nodo del proyecto, o desde Files. Se hace click con el botón derecho; del menú que se despliega, la opción run file ejecuta el applet. Esta ejecución la realiza el appletviewer. Internamente, netbeans crea un documento html con los tags necesarios en el path build. Por ejemplo, ...\build\ParamApplet.html Si por alguna razón se quiere cambiar el docimento HTML, en el entorno netbeans hay que proceder de la siguiente forma: Copiar el documento original en el path src (donde se encuentra el archivo fuente .java) Editar y modificar el documento html La próxima ejecución del applet aplicará el documento html que se encuentra en el path src, para lo cual netbeans lo mueve desde el path src al path buid.

9 EJEMPLO Se puede probar con alguno de estos dos applets
import java.awt.*; import javax.swing.*; public class ParamApplet extends JApplet { private String saludo; public void init() saludo = "Buenas y frescas noches"; } public void paint(Graphics g) g.drawString(saludo,20, 40); import java.awt.*; import javax.swing.*; public class EjemApplet extends JApplet { public void init() JLabel a = new JLabel ("Hola a todos, menos a uno", SwingConstants.CENTER); JButton b = new JButton("Aceptar"); add(a, BorderLayout.NORTH); add(b,BorderLayout.CENTER); }

10 VISOR DE APPLETS Para visualizar correctamente el applet, se necesita un navegador que implemente la JVM Si una vez cargado el archivo HTML en el navegador no aparece el applet, es problable que el navegador esté empleando su máquina virtual incorporada, y será necesario configurarlo para que utilice el Java Plug-in en su lugar. El visor de applets (appletviewer) solo muestra el applet, no el texto HTML que lo rodea. Si un archivo HTML contiene varias etiquetas <APPLET>, el visor de applets hace que se muestren varias ventanas.

11 JERARQUÍA DE LA CLASE JAppet
Presenta un marco de trabajo de aplicación para construir otras clases. Un applet concreto va a heredar de la clase java.applet.Applet o de la JApplet. javax.swing.JApplet

12 CREACCIÓN DE UN APPLET Un applet es una clase que deriva de la clase Applet (java.applet.Applet). Esta clase es un componente AWT. Para implementar applets también se puede derivar de la clase JApplet (javax.swing.JApplet). La clase JApplet deriva directamente de Applet. JApplet forma parte del paquete swing. Siempre que un applet tenga componenetes de swing ( etiquetas, botones, ...) es preciso que la clase derive de JApplet. La declaración de la clase applet será similar a: import javax.swing.*; import java.awt.*; // puede ser necesario para eventos public class miclaseApplet extends Japplet { ... }

13 CICLO DE VIDA DE UN APPLET (I)
La clase Applet dispone de cuatro métodos que controlan la creación y ejecución de un applet: init(), start(), stop() y destroy(). Estos métodos son heredados por JApplet. La definición de los cuatro métodos en la clase Applet está vacía, no tiene sentencias. public class Applet { public void init() { } // esta es la definición de init() La importancia de los métodos viene dada porque interactúan con el navegador o visualizar del applet.l estable Los métodos se pueden sobrescribir en nuestra clase applet, para dotarles de funcionalidad.

14 CICLO DE VIDA DE UN APPLET (II)
public void init(). El navegador llama a este método en la primera inicialización del applet, cuando el applet es cargado. La redefinición del método se realiza con el fin de: incluir aquellas tareas que en otras clases se implementen en el constructor. incluir las tareas que lleven una cantidad considerable de tiempo. proceso de valores procedentes del tag param del documento html Por ejemplo: public class MiApplet extends JApplet { public void init() double r; String c; c = getParameter("RADIO"); r = Double.parseDouble(c); ... <HTML> ... <APPLET CODE = MiApplet.class WIDTH = "100" HEIGHT = "50" > <PARAM NAME = "RADIO" VALUE = "10.5" >

15 CICLO DE VIDA DE UN APPLET (III)
public void start(). El navegador llama automáticamente al método start() cuando termina la ejecución de init(). También, se llama cada vez que el usuario visualiza el applet en el navegador, esto significa que este método vaya a ser llamado en repetidas ocasiones durante la vida del applet. La redefinición del método se realiza con el fin de poner el código relativo a la página que se está viendo: iniciar el sonido de una sintonia. empezar la animación. iniciar los hilos de ejecución implicados en la página. Una página web puede ser ocultada y volver a ser visible. Cuando vuelve a ser visible se llama de nuevo a start().

16 CICLO DE VIDA DE UN APPLET (IV)
public void stop(). El navegador invoca a stop() cuando el applet se aparta de la vista del navegador. Por consiguiente puede ser llamado repetidas veces durante la vida de un applet. También se llama justo antes de destruir el applet con el método destroy(). La redefinición del método se realiza con el fin de detener las tareas más costosas y así evitar la ralentización del sistema. public void destroy(). Se llama cuando se descarga el applet del navegador. Se llama solo una vez. Se utiliza para liberar los recursos.

17 CICLO DE VIDA DE UN APPLET (V)

18 SEGURIDAD DE UN APPLET Un applet puede ser descargado por un navegador en cualquier ordenador conectado a la red. Si ni hubiera restricciones, un usuario al cargar una página web ejecutaría todos los applets que tuviera y podría dañar su sistema. El entorno restringido de ejecución donde se ejecuta un applet se denomina sandbox. Un applet puede mostrar imagenes, sonidos, obtener una entrada de usuario y enviarla al servidor. Las restricciones generales son las siguientes: No pueden acceder a archivos locales. No pueden ejecutar programas locales (no pueden ejecuta exec(), exit()). No pueden abrir sockets con otras computadoras. No se pueden comunicar con otra computadora, excepto el servidor origen. No pueden obtener información relativa a la computadora local, excepto la versión de Java y del S.O.. Para admitir diferentes niveles de seguridad, se pueden utilizar los applets firmados. Estos llevan consigo un certificado que indica la identidad del usuario.

19 PARAMETROS DE UN APPLET
Los applets pueden utilizar información procedente de la página HTML. Esto se hace utilizando la etiqueta PARAM en la página HTML. Para obtener el valor del parámetro se llama al método getParameter() de la clase Applet. Formato de etiqueta PARAM: <PARAM NAME="nombre" VALUE="valor_asociado"/> Los parámetros siempre se pasan como cadenas. Es decir, la información asociada a VALUE siempre es una cadena. Prototipo de getParameter(): public String getParameter(String nombre); getParameter()si no encuentra el nombre del parámetro devuelve null. getParameter()distingue maýusculas de minúsculas en la cadena nombre.

20 EJEMPLO DE UN APPLET Desde el método init() se leen tres parámetros: titular, tipo de letra y tamaño. Si los parámetros son null, quiere decir que no se han especificado en la página html. El método start() aumenta el tamaño del tipo de letra. El método paint(Graphics g), se llama automáticamente cuando termina la ejecución de start(), recibe el contexto gráfico, si no se redefine dibuja el marco de color gris; en este ejemplo se ha redefinido con el fin de crear un font (tipo de letra y tamaño) y escribir una cadena con ese tipo de letra. A continuación se escribe la clase y un documento html. Clase ParamApplet.java import java.awt.*; import javax.swing.*; public class ParamApplet extends JApplet { private String titular; private String tipoLetra; private int tam;

21 Clase ParamApplet.java
public void init() { titular = getParameter("TITULAR"); if (titular == null) titular = "Lili Vanesa"; tipoLetra = getParameter("FUENTE"); if (tipoLetra == null) tipoLetra = "courier new"; String t = getParameter("SIZE"); if (t == null) t = "11"; tam = Integer.parseInt(t); } public void start() tam++; public void paint(Graphics g) { Font fuente; fuente = new Font(tipoLetra, Font.ITALIC, tam); g.setFont(fuente); g.drawString(titular, 20, 20); }

22 Documento HTML ParamApplet.html
<HEAD> <TITLE>Applet HTML Page</TITLE> </HEAD> <BODY> <H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3> <P> <APPLET codebase="file:/C:/ignacio/JAVA/Ejercicios/ParamApplet/build/classes/" code="ParamApplet.class" width=350 height=200> <PARAM NAME="TITULAR" VALUE="Paloma Tristan"/> <PARAM NAME="FUENTE" VALUE="Binner Gothic"/> <PARAM NAME="SIZE" VALUE="18"/> </APPLET> </P> <HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT> </BODY> </HTML>

23 VISUALIZACÍON DE UN APPLET
El navegador, una vez que carga un applet, llama al método init(), que inicializa la ejecución. Una vez que se completa el método init(), el navegador llama al método start(). Este método es llamado cada vez que se hace visible el applet. Después de que comience la ejecución del método start() se dibuja el applet, para lo cual se llama automáticamente a paint() (void paint(Graphics g)) pasando el contexto gráfico. Por defecto, dibuja una ventana de color gris. Cada vez que se vuelve a visualizar el applet, se llama a start() y también a paint(). Los programadores redefinen el método paint() para realizar los dibujos requeridos con el contexto gráfico que se recibe como parámetro. El método repaint() se utiliza para notificar que el applet se vuelva a dibujar. Llamando a repaint() se tiene la certeza de que se va a ejecutar paint(). repaint() llama automáticamente a update() y le pasa el contexto gráfico. update() borra cualquier dibujo que hubiera en la pantalla y llama a paint(), que de esta forma consigue el contexto gráfico para realizar dibujos, .... Los métodos paint(), repaint() y update() están definidos en la clase base Component, y por ello heredados por la clase applet.

24 CLASE Graphics La clase Graphics (java.awt) es una clase abstracta que proporciona el contexto gráfico. La clase dispone de métodos para dibujar todo tipo de elementos. Graphics al ser clase abstracta no se puede instanciar. El contexto gráfico se obtiene a través de los métodos paint(Graphics g) y update(Graphics g) de la clase Component. Métodos de dibujo de Graphics: void drawString(String cad, int x, int y); (x,y) coordenadas de origen void drawLine(int x1, int y1, int x2, int y2); dibuja una línea void drawRect(int x, int y, int ancho, int alto); dibuja rectángulo void fillRect(int x, int y, int ancho, int alto); llena rectángulo con colora actual void fillRoundRect(int x, int y, int ancho, int alto, int arcoAncho, int arcoAlto); llena rectángulo redondeado void drawOval(int x, int y, int ancho, int alto); dibuja elipse void drawArc(int x, int y, int ancho, int alto, int anguloInicio, int anguloArco); dibuja arco boolean drawImage(Image m, int x, int y, ImageObserver b); ... Graphics2D es una subclase de Graphics que se utiliza para dibujar formas en java 2D.

25 EJEMPLO de contexto gráfico en un applet
Se construye un applet elemental, con el fin de mostrar cómo se visualizan los applet,s. El método init() pone un color inicial de fondo e inicializa un contador. El método start() incrementa el mismo contador y cambia el color del fondo. El método paint() se redefine con el fin de dibujar un rectángulo cuyo tamaño depende del contador, y una figura oval (drawOval()). El método stop() muestra por consola el valor del contador y lo incrementa. Por último, el método destroy muestra en la consola el valor final del contador. El seguimiento de los contadores y de los dibujos deben clarificar el ciclo de vida y la visualización de un applet. GraficoApplet.java import java.awt.*; import javax.swing.*; public class GraficoApplet extends JApplet { Color color; int cont= 0;

26 GraficoApplet.java (II)
public void init() { // lightGray color = new Color(192, 192, 192); setBackground(color); cont++; } public void start() if (cont % 3 == 0) color = Color.BLUE; else if (cont % 3 == 1) color = Color.RED; else color = Color.MAGENTA; ++cont; public void stop() { System.out.println(" Contador = " + (++cont)); } public void paint(Graphics g) g.drawRect(0+cont,0+cont, 20+2*cont, 40+3*cont); g.drawOval(0+cont,0+cont, 20+2*cont, public void destroy() System.out.println (" Fin del applet, Contador = " + (++cont));

27 URL URL es el acrónimo de Uniform Resource Locator. Una URL es la referencia a un recurso (archivo de sonido, imagen, ...) que reside en la web. Por ejemplo: indica al navegador que utilice el protocolo de transferencia de hipertexto aplicándolo a la imagen del archivo iconoUpsam.Gig que se encuentra en La clase URL encapsula las referencias a recursos, es decir encapsula a url,s. Se puede crear un URL pasando una cadena con la url absoluta: URL q = new URL( La clase dispone de mas constructores; uno de ellos especifica la url relativa y el recurso: URL tmp = new URL(urlRelativa, "horarios.inx"); El método de la clase Applet, URL getCodeBase(), devuelve la url del directorio desde el que se carga un applet. El método de la clase Applet, URL getDocumentBase(), devuelve la url de la página html que contiene el applet.

28 IMAGENES Y SONIDOS Los applets pueden mostrar imágenes y reproducir sonidos. Los formatos de imagenes reconocidos son los mas populares: GIF, JPEG o PNG. Los formatos de archivos de audio reconocidos son: AU, WAV, MIDI o AIFF. Normalmente los archivos con estos recursos se especifican en forma de URL. La clase Applet dispone de métodos para cargar imagenes y sonidos. Por seguridad, los archivos con las imagenes o sonidos, deben estar en el mismo servidor donde se encuentra el código del applet. Los métodos son: Image getImage(URL u, String nombre) AudioClip get AudioClip (URL u, String nombre) Ambos métodos devuelven null si no encuentran el recurso. Ejemplo: Image invierno = getImage(getCodeBase(),"imagenes/invierno.gif"); AudioClip son = getAudioClip(getCodeBase(),"cancion/invierno.au"); El método de la clase Applet void play(URL u, String nombre ) , reproduce una archivo de sonido sin cargarlo préviamente.


Descargar ppt "Curso Programación en Java"

Presentaciones similares


Anuncios Google