Programación de Applets Applets Un applet es

Anuncio
Applets
!
Un applet es:
!
Programación de Applets
!
!
Programación Orientada a Objetos
Facultad de Informática
!
!
!
Juan Pavón Mestras
Dep. Sistemas Informáticos y Programación
Universidad Complutense Madrid
una pequeña aplicación
accesible en un servidor Internet
que se transporta por la red
se instala automáticamente
se ejecuta in situ como parte de un documento HTML
Un applet puede ejecutarse en:
!
!
un navegador: Netscape, Firefox, Explorer
appletviewer (parte del JDK)
<HTML>
<APPLET CODE="HolaMundoApplet.class" WIDTH=300 HEIGHT=100>
</APPLET>
Juan Pavón Mestras
</HTML>
Programación para Internet con Java
Facultad de Informática UCM, 2004
Cómo se ejecuta un applet Java
Cómo hacer un applet Java
!
Para hacer un applet Java hay que definir:
1.
Intérprete HTML
Una clase Java (nuestro applet) que herede de Applet
• En esta clase se redefinen algunos métodos para especificar qué
hace el applet
1
2.
html
2
2
Una página HTML desde la que se llame al applet
• De la misma manera que una página HTML puede incluir otros
objetos (gráficos, etc.), también applets, con la etiqueta APPLET
clases
gifs
Intérprete Java
3
Servidor Web
Visor gif (gráficos)
Navegador (cliente)
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
3
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
4
Cómo hacer un applet Java
Cómo hacer un applet Java
El applet HolaMundoApplet
> edit HolaMundoApplet.java
editor
Define el método paint()
Clases
Clasesjava
java
(.java)
(.java)
> edit hola.html
bytecodes
(.class)
Fichero
Fichero
HTML
HTML
Navegador o
appletviewer
> appletviewer hola.html
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
5
Applets
!
Juan Pavón Mestras
Facultad de Informática UCM, 2004
import
importjava.applet.Applet;
java.applet.Applet;
import
importjava.awt.Graphics;
java.awt.Graphics;
public
publicclass
classHolaMundoApplet
HolaMundoApplet
extends
extendsApplet
Applet{{
public
publicvoid
voidinit()
init(){{
resize(150,25);
resize(150,25);
}}
public
publicvoid
voidpaint
paint(Graphics
(Graphicsg)g) {{
g.drawString(“Hola
g.drawString(“HolaMundo”,
Mundo”,50,25);
50,25);
}}
}}
Programación para Internet con Java
6
Applet mínimo
Subclase de java.lang.Applet
!
!
!
HolaMundoApplet.java
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>
<TITLE>Hola
HolaMundo</TITLE>
Mundo</TITLE>
</HEAD>
</HEAD>
<BODY>
<BODY>
Saluda
Saludaamigablemente:
amigablemente:
<APPLET
<APPLET
CODE=“HolaMundoApplet.class”
CODE=“HolaMundoApplet.class”
WIDTH=150
WIDTH=150HEIGHT=125>
HEIGHT=125>
</APPLET>
</APPLET>
</BODY>
</BODY>
</HTML>
</HTML>
editor
Invoca el applet
> javac HolaMundoApplet.java
javac
Hola.html
Normalmente sin método main()
Los applets se ejecutan como parte de otro programa
(por ejemplo, en un navegador)
public class AppletMinimo extends java.applet.Applet {
// no hace nada
}
Un applet se programa reescribiendo alguno de
los métodos de la clase Applet
!
<HTML>
<HEAD>
<TITLE>Applet Mínimo</TITLE>
</HEAD>
<BODY>
<APPLET CODE= "AppletMinimo.class" HEIGTH=100, WIDTH=200>
</APPLET>
Aquí no pasa nada.
</BODY>
</HTML>
al menos uno de los siguientes:
• init()
• start()
• paint()
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
7
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
8
Arquitectura de appletviewer
Restricciones de los applets
!
Por razones de seguridad:
!
!
!
!
No pueden leer o escribir en el sistema de archivos del
cliente
No pueden comunicarse con otro servidor de red
distinto al de origen del applet
No pueden ejecutar programas en el sistema cliente
No pueden cargar programas nativos de la plataforma
local
• Algunos navegadores permiten configurar el nivel
de seguridad
• A partir de JDK 1.1 se ofrece soporte para firma
digital
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
9
Ciclo de vida de un applet
!
!
!
!
10
public void init()
Se crea: init()
Puede comenzar a ejecutarse: start()
Puede pararse: stop()
Puede destruirse: destroy()
!
Se llama una sola vez, al crearse el applet:
!
• Estos métodos definen lo que se hace cuando el applet cambia
su estado de ejecución o existencia
!
Programación para Internet con Java
Métodos de los applets
En general un applet pasa por varias fases:
!
Juan Pavón Mestras
Facultad de Informática UCM, 2004
!
!
No se define constructor para los applets (para eso se
utiliza el método init())
Al mostrarse la página por primera vez (entonces se carga el
applet)
O al recargarse la página
Sirve para:
!
Inicializar variables globales al applet
• Por ejemplo, el tamaño del applet
• aunque tiene prioridad el especificado en el HTML, y algunos
navegadores ignoran la operación resize(anchura, altura)
!
!
!
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
11
Examinar los parámetros del applet
Cargar imágenes, sonidos, etc., de la red en memoria
Por defecto no hace nada
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
12
Métodos de los applets
Métodos de los applets
public void start()
!
Se llama cada vez que se visita el applet, para activarlo:
!
!
!
Después de init()
O al revisitar la página (después de haber llamado a stop())
!
Se puede:
!
!
Por defecto no hace nada
Programación para Internet con Java
!
13
!
A continuación puede llamarse a start()
Por defecto no hace nada
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
al descargarse el applet
public void init() {
estado ="Applet cargado";
repaint();
}
public void start() {
estado ="Empezando la ejecución";
repaint();
}
public void stop() {
estado ="Parando el applet";
repaint();
}
matar cualquier hilo de ejecución (thread) activo
cerrar conexiones a red
Por defecto no hace nada
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
14
public void destroy() {
estado ="Preparado para eliminarse";
repaint();
}
public class Simple extends Applet {
String estado;
Para liberar todos los recursos asociados al applet
!
parar los hilos de ejecución paralela
parar la animación y la reproducción de sonidos
import java.applet.Applet;
import java.awt.Graphics;
Se llama cuando no va a usarse más el applet:
!
cuando el applet deja de ser visible (al abandonar la página)
Métodos del ciclo de vida del applet
public void destroy()
!
!
!
Métodos de los applets
!
Se llama para detener la ejecución del applet:
!
crear hilos de ejecución paralela (threads)
comenzar a reproducir música o imágenes
Juan Pavón Mestras
Facultad de Informática UCM, 2004
!
!
Se puede:
!
!
public void stop()
15
Juan Pavón Mestras
Facultad de Informática UCM, 2004
public void repaint() {
System.out.println(estado);
super.repaint();
}
public void paint(Graphics g) {
//Dibuja un rectángulo alrededor del applet
g.drawRect(0, 0, getSize().width - 1,
getSize().height - 1);
//Dibuja el estado
g.drawString(estado, 5, 15);
}
}
Programación para Internet con Java
16
Métodos de los applets
!
Métodos de los applets
Métodos para pintar y tratar acciones
!
!
!
public void paint(Graphics g)
Un applet normalmente pinta algo en la pantalla. Esto se
define con el método paint()
El método repaint() permite indicarle al applet que tiene que
volver a pintarse (por ejemplo porque algo ha cambiado)
Para tratar acciones del usuario (con el ratón o el teclado):
ver el capítulo sobre interfaces de usuario
!
!
!
El área gráfica g representa la ventana del applet en la página
web
paint() es un método de la clase Component, heredado por
Applet
Se llama para refrescar el área de dibujo del applet:
!
!
Después de la inicialización, si la ventana se ha escondido y luego
vuelve al frente, o si se mueve la ventana del navegador
Cuando un hilo de ejecución llama a repaint()
• La modificación de variables debe hacerse bajo synchronized
!
Indica qué hace el applet
!
Dibuja en el área gráfica g
g.drawString(“Hola Mundo”, 25, 25);
!
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
17
Métodos de los applets
!
En general no se reescribe
!
Por defecto, limpia el rectángulo del Component y llama a
paint(g):
cuando hace falta cambiar el contenido gráfico del applet
Por defecto, se comunica con el AWT-Updater para indicarle
la necesidad de llamar a update() para este Component
• Dejar que se ejecute el updater
• Es posible pasar este método y usar paint() directamente
• Algo bruto, no es muy recomendable
Se puede modificar cuando interesa reducir el efecto de
parpadeo producido al limpiar y repintar la pantalla
Juan Pavón Mestras
Facultad de Informática UCM, 2004
18
• No se produce update() hasta que el llamante se duerma,
g.clear();
paint(g);
!
Se llama:
!
Prepara para pintar, y llama a paint(g)
!
!
por la hebra AWT-Updater
• La modificación de variables debe hacerse bajo synchronized
!
Programación para Internet con Java
public void repaint()
Se llama para actualizar la pantalla:
!
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Métodos de los applets
public void update(Graphics g)
!
Por defecto no hace nada
Programación para Internet con Java
19
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
20
La etiqueta APPLET en HTML
La etiqueta APPLET en HTML
<APPLET CODE= WIDTH= HEIGTH= [CODEBASE=] [ALT=] [NAME=]
[ALIGN=] [VSPACE=] [HSPACE=]> <PARAM NAME= VALUE= >
</APPLET>
!
!
!
CODE = “nombreclase.class”
WIDTH
Anchura inicial
HEIGHT
Altura inicial
Atributos opcionales
!
!
!
!
!
CODEBASE = “URL base del Applet”
• Se usa cuando el código del applet no está en el mismo directorio que el
html
NAME = “Nombre del ejemplar”
• Se puede hacer start() de un applet guardado en forma serializada
• Puede servir para comunicar applets de una misma página
ALIGN = LEFT | RIGTH | TOP | TEXTTOP | MIDDLE | BOTTOM
ARCHIVE = “archivo.zip”
ARCHIVE = “archivo.jar”
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
!
21
jar cf OchoReinasApplet.jar java04Tecnicas
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
22
Uso de parámetros del HTML
El applet puede acceder a los parámetros con el método:
! getParameter(String)
En HTML los parámetros para el applet se declaran con la
etiqueta PARAM, y a cada parámetro se le da un nombre
(NAME) y un valor (VALUE):
!
<HTML>
<HEAD>
<TITLE>Applet HolaColega</TITLE>
</HEAD>
<BODY>
<APPLET CODE=HolaColega HEIGTH=100, WIDTH=200>
<PARAM NAME=“nombre” VALUE=“Juan”>
Applet HolaColega
</APPLET>
Ejecutando HolaColega.
</BODY>
</HTML>
Programación para Internet con Java
Para crear el fichero .jar
!
Uso de parámetros del HTML
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Ejemplo:
<applet
code="java04Tecnicas.OchoReinasApplet.class"
archive="OchoReinasApplet.jar"
width=500 height=500
>
Para ver el applet hace falta un navegador habilitado para Java
</applet>
Atributos obligatorios
!
!
!
permite leer un parámetro del applet especificado en el HTML
con el NAME=String (esto es, se devuelve lo que se indica en
VALUE=xxx)
Otros métodos útiles son:
!
getCodeBase()
!
!
!
23
obtiene el URL base del applet
getDocumentBase()
obtiene el documento URL en el que está embebido el applet
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
24
Uso de parámetros del HTML
Uso de parámetros del HTML
!
import java.awt.Graphics;
public class HolaColega extends java.applet.Applet {
String colega;
public void init() {
colega = getParameter(“nombre”);
if ( colega == null ) colega = “colega anónimo”;
}
public void paint(Graphics g) {
g.drawString(“Hola ”+ colega, 10, 0);
}
}
public void init(){
int ancho=400; //valores por defecto
int alto=300;
try{
ancho = Integer.parseInt(this.getParameter("WIDTH"));
alto = Integer.parseInt(this.getParameter("HEIGHT"));
}
catch(NumberFormatException ex){
System.out.println(
"Error en los parámetros WIDTH y HEIGHT");
}
this.setSize(ancho,alto);
}
<APPLET CODE=“HolaColega.class” HEIGHT=100 WIDTH=200>
<PARAM NAME=“nombre” value=“Juan”>
</APPLET>
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
Ejemplo de utilización de parámetros WIDTH Y HEIGHT
25
Métodos de los applets
Juan Pavón Mestras
Facultad de Informática UCM, 2004
!
!
obtiene un clip audio que se puede reproducir con play()
getAppletInfo()
!
getImage(URL)
!
!
Otros métodos
getAudioClip(URL)
!
!
reproduce un clip audio de la red
getParameterInfo()
!
!
Programación para Internet con Java
27
devuelve un array de cadenas que describen los parámetros
que entiende el applet. Hay que implementarlo
showStatus(String)
!
Juan Pavón Mestras
Facultad de Informática UCM, 2004
devuelve una cadena con información sobre el autor, la
versión y el copyright del applet. Hay que implementarlo.
• Es útil por ejemplo para explicar lo que hace el applet o poner el
nombre de su autor
obtiene una imagen que se puede visualizar
play(URL)
!
26
Métodos de los applets
Otros métodos
!
Programación para Internet con Java
Muestra un mensaje de estado en el área reservada para ello
en la ventana del navegador (por ejemplo, abajo a la izquierda)
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Programación para Internet con Java
28
Descargar