Applets: Applicazioni Java in pagine Web



Documenti analoghi
Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Appunti di Informatica 1

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

APPLICAZIONI & APPLET

Panoramica: che cosa è necessario

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

L algoritmo di ricerca binaria. Daniele Varin LS Ing. Informatica Corso di Informatica teorica Docente: prof. Paolo Sipala

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Tale attività non è descritta in questa dispensa

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Eclipse. Avviare un progetto e compilare un semplice programma

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Java: la libreria delle classi

Le command line di Java

Struttura di un programma Java

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Breve introduzione al Javadoc

Application Server per sviluppare applicazioni Java Enterprise

Applets. Java. Restrizioni delle applets. Restrizioni delle applets

Java: Compilatore e Interprete

GERARCHIE RICORSIVE - SQL SERVER 2008

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Scrivere un programma in Java

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Test di unità con JUnit4

Modulo 4: Ereditarietà, interfacce e clonazione

Esercitazione 4 JDBC

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

Corso Eclipse. Prerequisiti. 1 Introduzione

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmare in Java. Olga Scotti

CAPITOLO 1 PREREQUISITI DI INSTALLAZIONE SOFTWARE RICAMBI CAPITOLO 2 PROCEDURA

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Codifica: dal diagramma a blocchi al linguaggio C++

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Introduzione all uso di Eclipse

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Installazione del Software. per lo Sviluppo di Applicazioni Java

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Strumenti per la programmazione

Capitolo 4 Pianificazione e Sviluppo di Web Part

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Configurare TPTP in Eclipse e testare un applicazione

Introduzione. Installare EMAS Logo Generator

Il calendario di Windows Vista

SOMMARIO... 3 INTRODUZIONE...

Eclipse - Nozioni Base

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Ambienti di Sviluppo

2 - Introduzione al linguaggio Java

File, Modifica, Visualizza, Strumenti, Messaggio

19. LA PROGRAMMAZIONE LATO SERVER

15 operazioni con winzip 8.1

Creare un sito Multilingua con Joomla 1.6

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

I package: librerie sw in R

Programmazione a Oggetti Lezione 10. Ereditarieta

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Concetto di Funzione e Procedura METODI in Java

HTML 6. I frame. Sintassi di base. I frame e DOCTYPE FRAME. ...head... <FRAMESET lista_attributi> <FRAME SRC= URL lista_attributi>

MAGAZZINO FISCALE (agg. alla rel )

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Servizio Feed RSS del sito CNIT

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Studio Legale. Guida operativa

Il web server Apache Lezione n. 3. Introduzione

Getting Started. Walter Cazzola. Dipartimento di Informatica e Comunicazione Università degli Studi di Milano

Algoritmi di Ricerca. Esempi di programmi Java

Progetto di Ingegneria del Software 2. SWIMv2

Dropbox. Quando qualcuno ci invita a condivide con noi una cartella, veniamo avvisati via mail.

Programmazione in Java Parte I: Fondamenti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Arduino: Programmazione

Il Programma... 3 I moduli... 3 Installazione... 3 La finestra di Login... 4 La suite dei programmi... 6 Pannello voci... 10

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Esercitazione n 4. Obiettivi

Il linguaggio HTML - Parte 4

IL MIO PRIMO SITO: NEWS

PHP e MySQL. Guida scaricata da

WEBGATE400 ACTIVEX CONTROL. Manuale Programmatore

Prova di Laboratorio di Programmazione

Parola chiave extends

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

INDICE. IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO...

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Corso sul linguaggio Java

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at] .

La gestione dei risultati: ZOTERO, un programma gratuito

Guida informatica per l associazione #IDEA

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

Programmazione ad oggetti

Funzioni in C. Violetta Lonati

Esercizi di JavaScript

Transcript:

Applets: Applicazioni Java in pagine Web Gli applets sono dei particolari programmi Java studiati per essere eseguiti all'interno delle pagine web. Dal punto di vista dell'utente di un browser (Explorer, Netscape, Firefox,...), gli applet non sono altro che delle zone rettangolari della pagina. Al loro interno viene visualizzato il risultato dell'esecuzione di un programma Java. Dal punto di vista del programmatore, gli applets non sono altro che dei pannelli (JPanels) che vengono inseriti in una pagina invece che in una finestra (Jframe). L'unica differenzarispetto ai pannelli normali, è la presenza di 4 metodi, che vengono eseguiti dal browser, per inizializzare e distruggere un applet. Gli applet funzionano perchè i browsers incorporano una Java Virtual Machine. Insomma quando installate un browser che supporta Java, installare anche una JVM completa. Questo è uno dei motivi per cui i browsers sono molto grandi. Recentemente sia Microsoft che Netscape (e derivati: Mozilla, Firefox) non incorporano più una loro Java Virtual Machine, ma installano in automatico la JVM scaricandola dal sito della SUN. Applet Html page Browser (Explorer, Firefox,...) Applet Java Virtual Machine

La classe JApplet La classe da prendere come riferimento per fare un applet è la classe Japplet. Ecco la sua gerarchia di estensioni: java.lang.object extended by java.awt.component extended by java.awt.container extended by java.awt.panel extended by java.applet.applet extended by javax.swing.japplet Metodi importanti Come si vede eredita le funzioni di un java.awt.panel, dunque si comporta come un panel. Come per il Panel, per disegnare in un applet basta fare overriding del metodo paint: public void paint(graphics g) Inoltre, come già detto, ci sono 4 metodi da implementare che permettono la gestione da parte del browser. Ecco al loro descrizione di seguito (presa dal libro di testo): Method init( ) start( ) stop( ) destroy( ) Operation Automatically called to perform first-time initialization of the applet, including component layout. You ll always override this method. Called every time the applet moves into sight on the Web browser to allow the applet to start up its normal operations (especially those that are shut off by stop( )). Also called after init ( ). Called every time the applet moves out of sight on the Web browser to allow the applet to shut off expensive operations. Also called right before destroy( ). Called when the applet is being unloaded from the page to perform final release of resources when the applet is no longer used

Scrivere un applet Per scrivere un applet basta scrivere una classe che estende JApplet ed implementare i 4 metodi richiesti: import javax.swing.japplet ; public class SimpleApplet extends JApplet { public void init() { System.out.println("Initializing...") ; public void start() { System.out.println("Starting...") ; public void stop() { System.out.println("Stopping...") ; public void destroy() { System.out.println("Destoying...") ; public void paint(graphics g) { g.drawline(10,20,50,60) ;

Eseguire un applet Come si potrà notare, un applet non ha un metodo main. Ma come lo si esegue? Prima di tutto si deve scrivere il codice per una pagina web mostra quell'applet, poi bisogna caricare la pagina con un browser. Il tag <APPLET> Per inserire un applet in una pagina HTML si usa il tag <APPLET>. Che segue la seguente sintassi: <APPLET CODE="classname" WIDTH="larghezza" HEIGHT="altezza"> </APPLET> dove classname è il nome della classe da caricare, mentre larghezza ed altezza sono le dimensioni che l'applet avrà nella pagina web. Esitono altri due parametri: ARCHIVE="nome_archivio.jar". Specifica che la classe da caricare non si trova in un file ma all'interno di un archivio "jar" (simile allo zip). Vedremo l'uso dei jar più avanti. NAME="applet_name". Serve a dare un nome all'applet. Utile per far comunicare applets tra loro, come vedremo più avanti. L'applet dell'esempio che stiamo vedendo si può visualizzare tramite una pagina html minimale come questa: <HTML> <APPLET CODE="SimpleApplet" WIDTH="400" HEIGHT="300"> </APPLET> </HTML> Eseguire in un browser Per eseguire l'applet basta caricare la pagina creata con un browser che abbia la Java Virtual Machine installata. Per vedere l'output testuale dell'applet i browser mettono generalmente a disposizione un'opzione chiamata più o meno Mostra la console di Java. In questo modo, ogni volta che parte un applet Java, viene aperta una finestra di testo che visualizza l'output che normalmente si vede sul prompt dell'ms-dos. Il comando appletviewer Esiste anche la possibilità di vedere gli applets senza dover fare uso di un browser. Tra i comandi installati con il jdk c'è appletviewer. Questo comando prende come parametro una pagina html, ma supporta solo il tag applet. Quando invocato, inserisce l'applet in una finestra ed esegue i metodi init, start, stop e destroy come se fosse un browser. Ad esempio > appletviewer test.html

Parametri di un applet Per passare i parametri ad un applet si usa nell pagine html il tag <PARAM>, che segue la sintassi: <PARAM NAME = "nome_parametro" VALUE = "valore"> Ad esempio: <PARAM NAME="color" VALUE="ff0055"> <PARAM NAME="message" VALUE="ciao"> Leggere i parametri Per leggere i parametri si usa il metodo public String getparameter(string parameter_name ) Il metodo prende in input il nome del parametro e restituisce il valore inserito nella pagina web. Se il parametro non esiste viene restituito null. Esempio Color color ; public void init() { // prendo il parametro colore, mi aspetto un intero in esadecimale String color_string = getparameter("color") ; if(color_string!=null) { System.out.println("Setting color to: "+color_string) ; int color_hex = Integer.parseInt(color_string,16) ; this.color = new Color(color_hex) ; else { this.color = Color.black ;

L'interfaccia AppletContext L'interfaccia java.applet.appletcontext permette di avere informazioni sul contesto di esecuzione di un appet. Per esempio permette di avere i riferimenti agli altri applets in esecuzione in una pagina, o di caricare una nuova pagina web nel browser. Per avere il riferimento all'appletcontext basta invocare il metodo: public AppletContext getappletcontext() Riferimento ad altri applets Tramite il metodo: public Applet getapplet(string name) si può avere il riferimento ad una altro applet in esecuzione nella stessa pagina web. Il nome dell'applet deve essere quello specificato dal parametro NAME del tag APPLET. Il metodo: public Enumeration getapplets() restituisce un'enumerazione di tutti gli applets all'interno della stessa pagina. Show Document Il metodo più utile di applet context è: public void showdocument(url url, String target) Che carica un determinato URL (http://...) e lo mostra nella zona specificata da target. Il parametro url è un'istanza della classe java.io.url, che rappresenta appunto un indirizzo URL. Il parametro target specifica dove caricare il nuovo documento (dalla documentazione Java): Target Argument "_self" "_parent" "_top" "_blank" name Description Show in the window and frame that contain the applet. Show in the applet's parent frame. If the applet's frame has no parent frame, acts the same as "_self". Show in the top-level frame of the applet's window. If the applet's frame is the top-level frame, acts the same as "_self". Show in a new, unnamed top-level window. Show in the frame or window named name. If a target named name does not already exist, a new top-level window with the specified name is created, and the document is shown there. Questo è molto utile, per esempio, per creare i famosi menù in Java. Esempio URL google_address = new URL( http://www.google.it ) ; applet_context.showdocument(google_address, _blank ) ; Vedere applet/simpleapplet.java e applet/test.html

Applet vs Stand-Alone Application E' possibile, con un piccolo accorgimento, far si che un applet funzioni anche senza bisogno di un browser o del comando appletviewer. E' sufficiente creare nell'applet un metodo main che viene invocato quando l'applicazione viene lanciata come applicazione stand-alone. public static void main(string args[]) { // istanzio l'applet JApplet SimpleApplet = new SimpleApplet(); // ustanzio la finestra che lo conterrà JFrame frame = new JFrame("SimpleApplet stand-alone"); // Se premo la X della finestra chiude tutta la virtual machine frame.setdefaultcloseoperation(jframe.exit_on_close); // aggiungo l'applet nella finestra frame.getcontentpane().add(applet); // imposto dimensioni // (potrebbero essere diverse da quelle specificate nel file html) frame.setsize(100,50); // inizializzo e faccio partire l'applet applet.init(); applet.start(); // isualizzo la finestra frame.setvisible(true); Vedere applet/simpleapplet.java e applet/test.html

Gli archivi JAR In Java è possibile impacchettare una serie di classi e files in archivi da distribuire come singoli files. Questo è molto utile se l'applicazione che stiamo sviluppando ha molte classi. Il formato di compressione utilizzato da Java è chiamato Jar. Il nome deriva probabilmente dal fatto che, mentre il Java è una bevanda si beve normalmente in tazzina, un'insieme di classi lo si mette in una caraffa (Jar appunto). Il comando Jar Il comando jar si trova nella stessa directory dei comandi java, javac e appletviewer. La sua sintassi è descritta invocando il comando jar senza parametri: Usage: jar {ctxu[vfm0mi] [jar-file] [manifest-file] [-C dir] files... Options: -c create new archive -t list table of contents for archive -x extract named (or all) files from archive -u update existing archive -v generate verbose output on standard output -f specify archive file name -m include manifest information from specified manifest file -0 store only; use no ZIP compression -M do not create a manifest file for the entries -i generate index information for the specified jar files -C change to the specified directory and include the following file If any file is a directory then it is processed recursively. The manifest file name and the archive file name needs to be specified in the same order the 'm' and 'f' flags are specified. Example 1: to archive two class files into an archive called classes.jar: jar cvf classes.jar Foo.class Bar.class Example 2: use an existing manifest file 'mymanifest' and archive all the files in the foo/ directory into 'classes.jar': jar cvfm classes.jar mymanifest -C foo/.

Esempio: PictureApplet (vedere la directory jar nei sorgenti) Caricare risorse Voglio creare un applet che visualizza un'immagine. Se so di voler caricare durante l'esecuzione un file che si trova dentro un jar, non posso usare i normali metodi di caricamento; devo caricare delle risorse. Lo stesso metodo permette di caricare files non archiviati. Per avere il riferimento ad una risorsa si usa il metodo getresource della classe Class Loader. Per avere il riferimento ad un class loader si usa il metodo.getclassloader() della classe Class; cha a sua volta si prende con il metodo getclass(). In sintesi: ClassLoader cl = this.getclass().getclassloader() ; URL file_url = cl.getresource("pc-airbag.jpg") ; Il riferimento è un URL, che può essere usato come parametro di molti metodi al posto del nome del file da caricare. Ad esempio per caricare le immagini, nel Toolkit c'è una versione di createimage apposta. In sintesi: Toolkit tk = Toolkit.getDefaultToolkit() ; Image immagine = tk.createimage(file_url) ; Creare il jar Compilo la classe (o le classi): > javac PictureApplet.java Impacchetto tutto in un jar: > jar cf pa.jar PictureApplet.class PC-Airbag.jpg Notare che le classi possono stare in packages; in tal caso le classi vanno invocate specificando anche il nome del package (package.classe). Anche i files possono stare in sotto-directories: in tal caso bisogna specificare tutto il path relativo al package di default (ex. immagini/pc-airbag.jpg ). Vedere il jar Per controllare che il jar contenga tutto quello che serve invoco: > jar tf pa.jar META-INF/ META-INF/MANIFEST.MF PictureApplet.class PC-Airbag.jpg Non vi preoccupate della directory META-INF, non ci serve. Eseguire come applicazione Proviamo prima di tutto ad eseguire il nostro programma come applicazione. Devo dire al comando java di usare quel jar come uno dei posti in cui cercare le classi: si usa l'opzione -classpath: > java -classpath pa.jar PictureApplet In pratica il jar viene automaticamente decompresso (in memoria) e le sue classi vengono caricate. Eseguire come applet Bisogna creare il file html con il tag applet. In più serve il parametro ARCHIVE per specificare che tutto l'applet si trova nell'archivio pa.jar: <APPLET CODE="PictureApplet" ARCHIVE="pa.jar" WIDTH="400" HEIGHT="300"> </APPLET> Dopodichè possiamo eseguire l'applet da browser o con il comando appletviewer: > appletviewer PictureApplet.html