Está en la página 1de 68

Applets de Java

V2.0
Octubre 2013
Ferreiras

Ferreiras Applets 1
Previous

Ferreiras Applets 2
HTML5 Tutorial
HTML5 Tutorial
By Jakob Jenkov
http://tutorials.jenkov.com/html5/index.html For selfstudy.
Sorry.
Table of Contents:

HTML5 Introduction HTML5 Semantic Elements


HTML5 DOCTYPE HTML5 header
HTML5 Language HTML5 hgroup
HTML5 Character Encoding HTML5 footer
HTML5 nav
HTML5 Form Fields HTML5 article
HTML5 time
HTML5 Local Storage
HTML5 Geo Location Please start here,
HTML5 Messaging Thanks. Ferreiras.
HTML5 Web Workers

Ferreiras Applets 3
HTML5 Tutorial
Please see:

• HTML5-JAVA, IZArc RAR Archive


in ferreiras´s group

• Or go to:

HTML5 Tutorial
By Jakob Jenkov
http://tutorials.jenkov.com/html5/index.html

The common HTML page structure which the new HTML5


semantic elements are intended to address.

Ferreiras Applets 4
La clase JOptionPane
javax.swing.JOptionPane

showMessageDialog

public static void showMessageDialog( Component parentComponent,


Object message,
String title,
int messageType )
throws HeadlessException

Este método es de mucho interés cuando queremos desplegar un cuadro de


diálogo que muestra un mensaje con un icono por defecto determinado por
el parámetro messageType.

 Favor ver el API completo de esta clase.

Ferreiras Applets 5
La clase JOptionPane
showMessageDialog

Brings up a dialog that displays a message using a default icon determined by the messageType
parameter.

• Parameters:

• parentComponent  Determines the Frame in which the dialog is displayed; if null, or if the
parentComponent has no Frame, a default Frame is used

• message  The Object to display

• title  The title string for the dialog

• messageType  The type of message to be displayed: ERROR_MESSAGE,


INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or
PLAIN_MESSAGE

Ferreiras Applets 6
JOptionPane
Un ejemplo

/*
Dialogo0.java
jdk1.7.0_13

Ferreiras / Java / JOptionPane

Código original en página 179, de “JAVA : How To Program; Deitel-Deitel,


3rd Ed, Prentice Hall, 1995

*/

Ferreiras Applets 7
JOptionPane
Un ejemplo ...

import javax.swing.JOptionPane;

public class Dialogo0 {

public static void main( String fofi[ ] ) {

String salida = "";


nextFila:
for( int fila = 1; fila < 6; ++fila ) {
salida = salida + "\n";

for ( int columna = 1; columna < 11; ++columna ) {


if( columna > fila )
continue nextFila;
salida = salida + "* ";
}
}

// continua en la siguiente diapositiva

Ferreiras Applets 8
JOptionPane
Un ejemplo ...

JOptionPane.showMessageDialog
(
null, salida,
"Uso de sentencia compuesta etiquetada ( goto !! ) ",
JOptionPane.INFORMATION_MESSAGE
);

System.exit(0);

}
}

Ferreiras Applets 9
JOptionPane
Un ejemplo ... Corrida:

Ferreiras Applets 10
Applets de Java

Ferreiras Applets 11
 La utilidad de los principios del
polimorfismo en JAVA tiene un buen
exponente en el uso de la clase JApplet
del paquete javax.swing, la cual tiene
varios métodos predefinidos de los que se
deben sobreescribir uno o mas para la
realización de un applet.

Ferreiras Applets 12
Applets
Un applet de JAVA es un programa de
JAVA que está destinado a ser incorporado
en un documento HTML,
HTML transportado a
través de una red, y ejecutado mediante un
navegador web. También pueden ser visto
localmente con dicho navegador y con el
appletviewer del JDK.

Ferreiras Applets 13
 La versión .class (el java bytecode)
es vinculada a un documento HTML y
enviada a través de la Web. La JVM
incorporada en el navegador ejecutará el
applet una vez que este llegue a su
destino. Para los fines de la ejecución en
el navegador o en el appletviewer, el
método main() no tiene importancia.

Ferreiras Applets 14
Un applet de JAVA es un programa de JAVA que está destinado a ser incorporado en un
documento HTML, transportado a través de una red, y ejecutado mediante un navegador web.

Ferreiras Applets 15
 La clase que define un applet es public
y extends la clase JApplet, la cual es parte
de javax.swing;

 El método paint Esta en java.awt y su firma es


public void paint(Graphics g). Es la forma en
que un applet despliega información en la pantalla,
sea texto, una linea, un fondo coloreado o una
imagen. Debe ser sobreescrito.

Ver mas en http://java.sun.com/products/jfc/tsc/articles/painting/

Ferreiras Applets 16
 La clase Graphics Es de particular interés
en un applet. Esta en java.awt; Un objeto
Graphics define un contexto gráfico con el
cual podemos interactuar; Como siempre
vamos a necesitar usar un objeto Graphics
en paint, siempre se deberá importar la clase
Graphics dentro del código del applet.

Ferreiras Applets 17
 Un applet tiene un ciclo de vida1 En el
cual, después de que el applet tiene la
capacidad de interactuar con el navegador, se
invoca, automáticamente, la secuencia de
métodos init(), start() y paint(), en
ese orden. Estos métodos son obtenidos de la
clase JApplet. Otros métodos que se esperan
estén disponibles son stop() y destroy(),
entre otros mas.

1: Para mas detalles de lo que ocurre antes de invocar la secuencia init(), start() y paint() ver en la
pagina 381, del libro "The Class of Java, Pravin M. Jain, Pearson, 2011 “, el subtema 21.2 LIFE-CYCLE
OF AN APPLET. Excelente explicación.

Ferreiras Applets 18
 Por default Estos métodos son suplidos por
la clase JApplet “vacíos”, para ser
sobreescritos por el programador, usando los
principios del polimorfismo, según las
necesidades particulares al applet que
desarrolla. No todos los métodos indicados
tienen que ser sobreescritos. Solo los
requeridos.

Ferreiras Applets 19
 En la documentación de java,
suplida por Oracle en su pagina web

http://download.oracle.com/javase/6/docs/api/

Seleccionando en el marco de la izquierda Java™


Platform Standard Ed. 6, All Classes  JApplet,
Obtenemos información de los métodos init(),
start(), stop(), destroy() y paint() como
indicamos a continuacion.

Ferreiras Applets 20
init
public void init()

Called by the browser or applet viewer to inform this applet that it has been loaded
into the system. It is always called before the first time that the start method is
called.

A subclass of Applet should override this method if it has initialization to perform.


For example, an applet with threads would use the init method to create the
threads and the destroy method to kill them.

The implementation of this method provided by the Applet class does nothing.

Ferreiras Applets 21
start
public void start()

Called by the browser or applet viewer to inform this applet that it should start its
execution. It is called after the init method and each time the applet is revisited in
a Web page.

A subclass of Applet should override this method if it has any operation that it


wants to perform each time the Web page containing it is visited. For example, an
applet with animation might want to use the start method to resume animation,
and the stop method to suspend the animation.

Note: some methods, such as getLocationOnScreen, can only provide meaningful


results if the applet is showing. Because isShowing returns false when the
applet's start is first called, methods requiring isShowing to returntrue should be
called from a ComponentListener.

The implementation of this method provided by the Applet class does nothing.

Ferreiras Applets 22
stop
public void stop()

Called by the browser or applet viewer to inform this applet that it should stop its
execution. It is called when the Web page that contains this applet has been
replaced by another page, and also just before the applet is to be destroyed.

A subclass of Applet should override this method if it has any operation that it


wants to perform each time the Web page containing it is no longer visible. For
example, an applet with animation might want to use the start method to resume
animation, and the stop method to suspend the animation.

The implementation of this method provided by the Applet class does nothing.

Ferreiras Applets 23
destroy
public void destroy()

Called by the browser or applet viewer to inform this applet that it is being
reclaimed and that it should destroy any resources that it has allocated.
The stop method will always be called before destroy.

A subclass of Applet should override this method if it has any operation that it


wants to perform before it is destroyed. For example, an applet with threads
would use the init method to create the threads and the destroymethod to kill
them.

The implementation of this method provided by the Applet class does nothing.

Ferreiras Applets 24
paint
public void paint(Graphics g)

Paints the container. This forwards the paint to any lightweight components that
are children of this container. If this method is reimplemented, super.paint(g)
should be called so that lightweight components are properly rendered. If a child
component is entirely clipped by the current clipping setting in g, paint() will not
be forwarded to that child.

Overrides:
paint in class Component

Parameters:
g - the specified Graphics window

The default behavior of the method paint in class JApplet is to do nothing.

Ferreiras Applets 25
 La aplicación en la cual un applet se
ejecuta es conocida como un "applet
container". Es responsabilidad del "applet
container" cargar la o las clases de applet,
crear una instancia del applet y administrar su
ciclo de vida. El JDK incluye un "applet
container" llamado appletviewer que permite
probar los applets antes de integrarlos en una
pagina Web. Un navegador Web ejecuta los
applets por medio de un Plug-In JAVA.
Ver definición en el
siguiente slide.
Ferreiras Applets 26
 A plug-in is A set of software components
that adds specific abilities to a larger software
application.
application If supported, plug-ins enable
customizing the functionality of an application.
application
For example,
example plug-ins are commonly used in
web browsers to play video, scan for viruses,
and display new file types. Well-known plug-
ins examples include Adobe Flash Player,
QuickTime, and Microsoft Silverlight.

From: http://en.wikipedia.org/wiki/Plug-in_(computing)

Ferreiras Applets 27
 El JDK incluye un "applet container"
llamado appletviewer que permite probar los
applets antes de integrarlos en una pagina
Web. Un navegador Web ejecuta los applets
por medio de un Plug-In JAVA.

 Cuando un navegador web


compatible con Java se carga una página
web que contiene un applet, el applet se
descarga en el navegador y es ejecutado.

Ferreiras Applets 28
 En el código HTML en la página web
que carga el navegador web, WIDTH y
HEIGHT especifican las dimensiones, en
pixeles, del applet dentro del navegador.
Las dimensiones WIDTH X HEIGHT
máximas mas comunes para diseñar
applets son 800X600 . Otras podrían ser
1600X900, 1024X768, 1600X900.

Ferreiras Applets 29
 Un típico
monitor de
hoy ( 2011)
tiene estas
dimensiones

Ferreiras Applets 30
 Configuraciones típicas de pantalla

Physical pixel size on a 17 inch display for various


display settings

Width, pixel Height, pixel


total pixels
pixels width pixels height
pixels per in2
(in.) (in.)

640 0.019 480 0.018 307200 2775


800 0.015 600 0.015 480000 4336
1024 0.012 768 0.012 786432 7104
1152 0.011 864 0.010 995328 8991

Recuperado de http://www.precisioninfo.com/index.php?doc_id=63

Ferreiras Applets 31
 Ejemplo de applet:

/*
JApplet0.java
jdk1.7.0_13

Ferreiras / Java / Applet

Mostrar mediante un Applet el mensaje " Hola !!, Animo, Animo..."

*/

import java.awt.Graphics; // para usar objetos Graphics


import javax.swing.JApplet; // para un Apple que hereda de JApplet
import java.awt.Font; // Para usar un objeto Font

Ferreiras Applets 32
El profesor tiene que
// JApplet0.java / jdk1.7.0_13 hacer un esfuercito
adicional en la
public class JApplet0 extends JApplet { explicación de estos
elementos Applets
public void paint( Graphics g ) {

// llamar version del metodo paint() de la clase base


super.paint( g ); // paint() es heredado por JApplet de java.awt.Container

// dibujar una cadena en la coordenada x 25 y coordenada y 25

g.setFont(new Font( "Arial Bold", Font.BOLD, 28));


g.drawString( " Hola !!, Animo, Animo...", 25, 25 );

}
}

Ferreiras Applets 33
Código HTML para ejecutar el Applet:

<! JApplet0.html >

<html>
<body>
<applet code = "JApplet0.class" width = "500" height = "45" >
</applet>
</body>
</html>

Ferreiras Applets 34
• Ejecución del Applet usando el appletviewer

C:\Archivos de programa\Java\jdk1.7.0_13\bin>appletviewer JApplet0.html

Ferreiras Applets 35
Ventana 500 X 45,
en que se muestra
• Algunos detalles de interés el Apple. Se Barra de estado:
establece en el Imita la barra de
Y width = "500" HTML. estado que se
X mostrará en la del
navegador mientras
height = "45"

se carga e inicia la
Menú
ejecución del Applet.
del
Apple

Coordenada ( X, Y ), que en este Applet es ( 25, 25 ) a partir de


la cual se muestra la cadena

Área de dibujo: Está


ubicada entre el menú y la
barra de estado e inicia en
la esquina superior
derecha, esto es, en la
coordenadas ( 0, 0 ).

Ferreiras Applets 36
Otro ejemplo de Applet:

/*
JApplet1.java
jdk1.6.0_25

Ferreiras / JAVA / Herencia / Applets

Haciendo un extends a la clase JApplet en javax.swing

*/
El profesor tiene que
import java.awt.Color; hacer un esfuercito
import java.awt.Graphics; adicional en la
import java.awt.Graphics2D; explicación de estos
import java.awt.Rectangle; elementos Applets
import javax.swing.JApplet;

Ferreiras Applets 37
public class JApplet1 extends JApplet{

public void paint(Graphics g) {

// Preparar para extender graficos

Graphics2D g2 = (Graphics2D) g;

// Constuir un rectangulo y dibujarlo

Rectangle r1 = new Rectangle(5, 10, 20, 30);


g2.setColor(Color.MAGENTA);
g2.fill(r1);

Ferreiras Applets 38
// Mover el rectangulo 15 unidades a la dereche y 25 unidades abajo

r1.translate(15, 25);

// Dibujar el rectangulo movido


g2.setColor(Color.YELLOW);
g2.fill(r1);

// Mover el rectangulo 15 unidades a la dereche y 25 unidades abajo

r1.translate(15, 25);
g2.setColor(Color.GREEN);
g2.fill(r1);

Ferreiras Applets 39
/*

1) Código HTML

a) Muy simple

<! JApplet1.html >

<applet code = "JApplet0.class" width = "300" height = "400" >


</applet>

Ferreiras Applets 40
b) Mas elegante

<! JApplet1.html >

<html>
<head>
<title> Tres Rectangulos </title>
</head>
<body>
<p> Ejemplo de herencia <i>Haciendo extends a la clase JApplet</i>:
</p>
<applet code = "JApplet0.class" width = "300" height = "400" >
</applet>
</body>
</html>

Ferreiras Applets 41
2) Para correrlo

2.1.) Usando el appletviewer

C:\Program Files\Java\jdk1.6.0_22\bin> appletviewer JApplet1.html

Observese que el appleviewer solo muestra el apple, no muestra


el texto HTML

2.2.) Usando un web browser (chrome )

Abrir el archivo JApplet1.html con el browser [ click !! ]

Muestra ambos, el texto y el applet.

*/

Ferreiras Applets 42
 Corrida desde el appletviewer

Ferreiras Applets 43
 Corrida desde un web browser (chrome)

Ferreiras Applets 44
 Seguridad Los applets tienen normas
estrictas de seguridad que son aplicadas por
los navegadores Web. Esto así porque
cuando un usuario visualiza una página
HTML que contiene un applet, el código del
applet es descargado en la máquina del
usuario.

Ferreiras Applets 45
 Por ejemplo:

Es la reacción del navegador Chrome al


intento de ejecutar el applet cargado
JApplets0.html

Ferreiras Applets 46
 El navegador web descarga el applet sin el conocimiento
del usuario;

 Para combatir el código malicioso, la plataforma java usa


el modelo de seguridad “sandbox”, el cual proporciona un
mecanismo para ejecutar con seguridad el código
descargado:

 El código descargado no puede acceder a los recursos


locales del sistema y un applet puede interactuar
únicamente con el servidor desde el cual fue descargado;

 Si el applet requiere acceso a los recursos locales del


sistema, se puede firmar digitalmente para su autorización a
dichos recursos.

Ferreiras Applets 47
 En general, los applets están restringidos
y no pueden:
 Leer y escribir en el sistema local de archivos;
 Quitar o eliminar los archivos del sistema local de archivos;
 Crear o cambiar el nombre de los directorios en el sistema local de
archivos;
 Listar el contenido del directorio o comprobar la existencia de un
archivo;
 Obtener información de los atributos de los archivos, tal como
tamaño, fecha de modificación, tipo, etc.;
 Crear conexiones de red a otra computadores diferentes a la que es
origen del applet;
 Escuchar o conectarse a través de los puertos en el sistema local;
 Leer o modificar diversas propiedades del sistema local;
 Detener la ejecución del intérprete de Java;
 Cargar librerías locales o invocar ejecutables locales;

Ferreiras Applets 48
 Otro applet de ejemplo
/*
AdditionApplet.java
jdk1.6.0_22

Ferreiras / JAVA / Polimorfismo / Sobreescritura de metodos de JApplet

Ejemplo en Fig. 23.9: AdditionApplet.java en el texto

Java How to Program (early objects, EO)


Paul Deitel, Harvey Deitel,
Prentice Hall,
9 edition, March 7, 2011

Recuperado de:
http://media.pearsoncmg.com/ph/esm/deitel/java_htp9e/code_examples/code_examples.html

*/

Ferreiras Applets 49
// Applet that adds two double values entered via input dialogs.

import java.awt.Graphics; // program uses class Graphics


import javax.swing.JApplet; // program uses class JApplet
import javax.swing.JOptionPane; // program uses class JOptionPane

public class AdditionApplet extends JApplet


{
private double sum; // sum of values entered by user

Ferreiras Applets 50
// initialize applet by obtaining values from user
public void init()
{
// obtain first number from user
String firstNumber = JOptionPane.showInputDialog(
"Enter first floating-point value" );

// obtain second number from user


String secondNumber = JOptionPane.showInputDialog(
"Enter second floating-point value" );

// convert numbers from type String to type double


double number1 = Double.parseDouble( firstNumber );
double number2 = Double.parseDouble( secondNumber );

sum = number1 + number2; // add numbers


} // end method init

Ferreiras Applets 51
// draw results in a rectangle on applet’s background
public void paint( Graphics g )
{
super.paint( g ); // call superclass version of method paint

// draw rectangle starting from (15, 10) that is 270


// pixels wide and 20 pixels tall
g.drawRect( 15, 10, 270, 20 );

// draw results as a String at (25, 25)


g.drawString( "The sum is " + sum, 25, 25 );
} // end method paint
} // end class AdditionApplet

Ferreiras Applets 52
/************************************************************************************
(C) Copyright 1992-2012 by Deitel & Associates, Inc. and
Pearson Education, Inc. All Rights Reserved.

DISCLAIMER: The authors and publisher of this book have used their
best efforts in preparing the book. These efforts include the
development, research, and testing of the theories and programs
to determine their effectiveness. The authors and publisher make
no warranty of any kind, expressed or implied, with regard to these
programs or to the documentation contained in these books. The authors
and publisher shall not be liable in any event for incidental or
consequential damages in connection with, or arising out of, the
furnishing, performance, or use of these programs.
************************************************************************************/

Ferreiras Applets 53
C:\Program Files\Java\jdk1.6.0_22\bin> appletviewer AdditionApplet.html

C:\Program Files\Java\jdk1.6.0_22\bin>

Ferreiras Applets 54
 Applet y aplicación Podemos escribir
un programa java que se pueda ejecutar
como un applet ó como una aplicación con
main(). Para ello, debido a la restricciones
de seguridad impuestas a los applets por
los browser, primero se define el applet. Si
el programa se ejecuta correctamente como
un applet, se puede hacer para que
funcione correctamente como una
aplicación. Sin embargo, lo contrario no
siempre es cierto.
Ferreiras Applets 55
 Por ejemplo:

/*
JAppletApp0.java
jdk1.6.0_25

Ferreiras / JAVA / Polimorfismo / Applets

JAppletApp0 es un applet que se ejecuta ya sea como un applet o una


aplicación independiente. Para funcionar de manera autónoma, se ofrece un
metodo "main ()", que crea un frame y, luego, se crea una instancia del
applet y se agrega a dicho frame.

*/

Ferreiras Applets 56
import java.awt.*;
import javax.swing. *;

public class JAppletApp0 extends JApplet {

public void init() { // Para usar mas abajo, cuando se tire el applet
add( new Button( "Un Button de lujo") );
}

// el metodo main(), solo para correr como aplicación java

public static void main( String args[ ] ) {

// Se crea el frame invisible en el cual se ejecutara el applet

JFrame unFrame = new JFrame("Un applet ejecutado como una” +


“ applicacion");

unFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

Ferreiras Applets 57
// El frame necesita un administrador de diseno ( un layout manager).
// Usamos un objeto GridLayout. Ver mas abajo.
unFrame.setLayout( new GridLayout(1, 0) );
// Maximizará el applet al size del frame.
// Le damos un size al frame, antes de ponerlo visible.
unFrame.setSize(650, 100);

/*
Mostrar el marco en la pantalla (hacerlo visible) antes de llamar al método init
del applet. En algunas implementaciones Java, parte de la información gráfica no
estará disponible hasta que haya un marco. Si el applet utiliza ciertas metodos
gráficos, como getGraphics() de la clase Component, en el método init(), puede
fallar a menos que exista un marco ya creado y que se este mostrando.
*/
unFrame.setVisible(true);

Ferreiras Applets 58
// Se crea el applet como una instancia de JApplet, unJApplet

JApplet unJApplet = new JAppletApp0();

// Se agrega el applet al frame

unFrame.add(unJApplet);

// Se inicializa y se arranca el applet

unJApplet.init(); // Usa el metodo init() antes sobreescrito.


unJApplet.start();

}
}

Ferreiras Applets 59
 Ejecutado como una aplicación java:

C:\Program Files\Java\jdk1.6.0_22\bin> java JAppletApp0

C:\Program Files\Java\jdk1.6.0_22\bin>

Ferreiras Applets 60
 Ejecutado desde el appletviewer:
C:\Program Files\Java\jdk1.6.0_22\bin> appletviewer JAppletApp0.html

C:\Program Files\Java\jdk1.6.0_22\bin>

Ferreiras Applets 61
 Ejecutado desde el navegador Chrome:

Ferreiras Applets 62
 Applet, Servlet, JSP Cuál usar y
Cuándo ? Ver en los siguientes links:

http://www.thirdeyeconsulting.com/javahtml.html

http://www.coderanch.com/t/234694/Applets/java/Applet-vs-Servlet-or-JSP

Ferreiras Applets 63
To be
Continued
Later ..
.
Ferreiras Applets 64
EJEMPLOS

Ferreiras Applets 65
EJERCICIOS

Ferreiras Applets 66
Referencias
• Chapter 23: Applets and Java Web Start; Java: How To Program; Paul
Deitel, Harvey Deitel; Prentice Hall, Ninth Edition, 2012

• JAVA : How To Program; Deitel-Deitel, 3rd Ed, Prentice Hall, 1995

•…

Ferreiras Applets 67
GRACIAS.

Ferreiras Applets 68

También podría gustarte