TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet



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

APPLICAZIONI & APPLET

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

Classi astratte. Master in Web Technology e Security luglio - settembre Interfacce

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

Corso sul linguaggio Java

Introduzione al package grafico Swing

Programmazione Java: Interfacce grafiche (GUI)

L interfaccia grafica in Java

Java: Compilatore e Interprete

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

Eventi di azione. // con interfaccia per eventi di azione

Appunti di Informatica 1

Tale attività non è descritta in questa dispensa

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Grafico della parabola

Corso Eclipse. Prerequisiti. 1 Introduzione

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

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

Capitolo 4 Pianificazione e Sviluppo di Web Part

appunti delle lezioni Architetture client/server: applicazioni server

Programmazione in rete e laboratorio

Alessandro De Luca. Lezione, 13 maggio 2015

Struttura di un programma Java

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Installazione del software Fiery per Windows e Macintosh

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

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:

Strumenti per la programmazione

Programmazione Orientata agli Oggetti in Linguaggio Java

Applets. Java. Restrizioni delle applets. Restrizioni delle applets

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

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

Alcuni Design Pattern in Java

Istruzioni per la configurazione di IziOzi

Java: la libreria delle classi

Telematica II 17. Esercitazione/Laboratorio 6

FPf per Windows 3.1. Guida all uso

Parola chiave extends

Prova di Laboratorio di Programmazione

GESTIONE DEI PROCESSI

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

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

MANUALE UTENTE. Computer Palmare WORKABOUT PRO

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Eclipse. Avviare un progetto e compilare un semplice programma

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

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

NOME 0 PROVIDER DOMINIO istruzione.it

developed by Emanuele De Carlo

Progettazione : Design Pattern Creazionali

! Programmazione strutturata. ! OO: TDA, scambio messaggi, eredità, polimorfismo, OO in Java. ! Rassegna API. ! Documentazione Javadoc delle API

Breve guida a Linux Mint

progecad NLM Guida all uso Rel. 10.2

Gestione Risorse Umane Web

Interazioni col mondo: eventi

Programmazione a Oggetti Lezione 10. Ereditarieta

SolidWorks Education Edition 2012 Istruzioni per l'installazione

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Panoramica: che cosa è necessario

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo

Mac Application Manager 1.3 (SOLO PER TIGER)

Manuale Terminal Manager 2.0

Soluzione dell esercizio del 2 Febbraio 2004

Corso basi di dati Installazione e gestione di PWS

Corso Eclipse. Prerequisiti. 3 Window Builder

Gestione degli eventi in Java

Programmare in Java. Olga Scotti

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Gestione Rapporti (Calcolo Aree)

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Guida all installazione di Fiery proserver

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

MAUALE PIATTAFORMA MOODLE

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

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

19. LA PROGRAMMAZIONE LATO SERVER

CIT.00.IST.M.MT.02.#7.4.0# CRS-FORM-MES#142

SendMedMalattia v Manuale d uso

Transcript:

Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet Prof. Franco Zambonelli Lucidi realizzati in collaborazione con Ing. Enrico Denti - Univ. Bologna Anno Accademico 2001-2002 Denti, Zambonelli Le Applet Java - 1

APPLICAZIONI & APPLET Java è un ottimo linguaggio per costruire applicazioni anche non per Internet anche non grafiche ma si è diffuso storicamente, e trae forza, dal concetto di applet come piccola (almeno all inizio dei tempi) applicazione da eseguirsi dentro un browser Internet grafica portabile ed eseguibile ovunque modello di sicurezza sandbox Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet Porta dinamicità alle pagine HTML "statiche" Viene eseguita dal browser, che quindi deve incorporare un interprete Java Attenzione alla versione! Molti browser supportano tuttora solo Java 1.1 Per essere flessibili, il JDK installa il "Java Plug in", che consente al browser di usare un interprete Java esterno (più aggiornato) Denti, Zambonelli Le Applet Java - 2

APPLET In quanto applicazione non autonoma, un'applet: non deve creare un frame principale, perché usa la finestra del browser che la ospita (in effetti, Applet deriva direttamente da Panel e quindi è essa stessa un pannello) non ha un main, perché la sua vita è dipendente dalla pagina in cui è visualizzata è organizzata intorno a 4 metodi standard: init(), che gioca il ruolo del costruttore start() e stop(), chiamati dal browser ogni volta che occorre avviare /fermare l'applet destroy(), invocato quando il browser viene chiuso. Esistono due versioni di Applet: la classe Applet dell'awt standard (da Java 1.0 in poi) la classe JApplet di Swing (da Java 1.1.6 in poi) Attenzione: se si usano componenti Swing, occorre necessariamente usare JApplet una Applet con componenti Swing non viene disegnata correttamente Denti, Zambonelli Le Applet Java - 3

SWING: GERARCHIA DI CLASSI Object Component In rosso: classi AWT In blu: classi Swing Container Window Panel JComponent Frame Dialog Applet JFrame JDialog JApplet COSTRUIRE UN'APPLET Per costruire un'applet (con Swing), occorre: creare una propria classe che estenda JApplet implementare i metodi opportuni (tipicamente, almeno init()) compilare l'applet nel modo standard preparare una pagina HTML che la carichi eseguire l'applet tramite l'appletviewer - oppure - aprire tale pagina con un browser Denti, Zambonelli Le Applet Java - 4

ESEMPIO 1 import java.applet.*; import java.awt.*; import javax.swing.*; public class Applet1 extends JApplet { Font f = new Font("Times", Font.BOLD, 36); public void paint(graphics g) { g.setfont(f); g.setcolor(color.red); g.drawstring("ciao mondo!", 100, 50); // non implementa i metodi init, start, stop ESEMPIO 1 - LA PAGINA HTML <HTML><HEAD> <TITLE> Applet Hello World </TITLE> </HEAD> <BODY> Questo e' cio' che produce la mia applet in un rettangolo 500 x 100 (la scritta e' alle coordinate 500,100 e si riferisce all'angolo inferiore sinistro della stringa): <P> <APPLET CODE="Applet1.class" WIDTH=500 HEIGHT=100 > <!--la classe dell applet e le sue dimensioni--> </APPLET> </BODY> </HTML> Denti, Zambonelli Le Applet Java - 5

ESEMPIO 1 - TEST Compilazione: C:\prova> javac Applet1.java Esecuzione via appletviewer: C:\prova> appletviewer Applet1.html Alternativa: esecuzione via browser Problema: molti browser non supportano ancora Swing Soluzione: usare il Java Plug-in Ma scrivere direttamente la pagina HTML che lo chiama è molto complicato si sfrutta il Convertitore HTML Noi useremo semplicemente l'appletviewer. Denti, Zambonelli Le Applet Java - 6

ESEMPIO 2 Un'applet con tre pulsanti per cambiare il colore di sfondo Il metodo init() fa le veci del costruttore: crea i componenti, installa i listener, etc. Non occorrono in questo caso gli altri metodi Denti, Zambonelli Le Applet Java - 7

ESEMPIO 2 - codice public class Applet2 extends JApplet { JButton redbutton, bluebutton, greenbutton; JTextField messaggio; public void init() { Container c = getcontentpane(); // il contenitore che contiene la applet c.setbackground(systemcolor.window); c.setlayout(new FlowLayout()); redbutton = new JButton("Rosso"); bluebutton = new JButton("Azzurro"); greenbutton = new JButton("Verde"); messaggio = new JTextField(26); messaggio.settext("premere un pulsante"); messaggio.seteditable(false); // i componenti non vanno aggiunti alla applet // ma al contenitore che la contiene c.add(messaggio); c.add(redbutton); c.add(bluebutton); c.add(greenbutton); redbutton.addactionlistener(new Applet2Listener(this, Color.red, messaggio)); bluebutton.addactionlistener(new Applet2Listener(this, Color.cyan, messaggio)); greenbutton.addactionlistener(new Applet2Listener(this, Color.green, messaggio)); (segue la classe Applet2Listener) Denti, Zambonelli Le Applet Java - 8

Il gestore degli eventi: ESEMPIO 2 segue codice class Applet2Listener implements ActionListener { JApplet app; Color colore; JTextField txt; Applet2Listener(JApplet a, Color c, JTextField t){ app = a; colore = c; txt = t; public void actionperformed(actionevent e){ app.getcontentpane().setbackground(colore); txt.settext("premuto il pulsante " + e.getactioncommand()); app.repaint(); La pagina HTML: <HTML><HEAD> <TITLE> Applet 2 </TITLE> </HEAD> <BODY> <APPLET CODE="Applet2.class" WIDTH=300 HEIGHT=100 > </APPLET> </BODY> </HTML> Denti, Zambonelli Le Applet Java - 9

ESEMPIO 3 Un'applet che gestisce un'area di testo: I pulsanti MODIFICA ed ELIMINA sostituiscono il testo selezionato con quello scritto nel campo di testo sotto. Denti, Zambonelli Le Applet Java - 10

ESEMPIO 3 - codice public class Applet3 extends JApplet { JButton deletebutton, editbutton; JTextArea ta; JTextField tf; int pos, endpos; public void init() { Container c = getcontentpane(); // ricordiamo che si opera sul container e non // sulla applet c.setbackground(color.blue); c.setlayout(new FlowLayout(FlowLayout.CENTER,10,10)); deletebutton = new JButton("Elimina"); editbutton = new JButton("Modifica"); ta = new JTextArea("",12,40); tf = new JTextField("",40); c.add(ta); c.add(tf); c.add(editbutton); c.add(deletebutton); Applet3Listener editor = new Applet3Listener(ta,tf); editbutton.addactionlistener(editor); deletebutton.addactionlistener(editor); (segue la classe Applet2Listener) Denti, Zambonelli Le Applet Java - 11

ESEMPIO 3 segue codice class Applet3Listener implements ActionListener { JTextArea area; JTextField riga; Applet3Listener(JTextArea ta, JTextField tf){ area = ta; riga = tf; public void actionperformed(actionevent e){ String azione = e.getactioncommand(); String testodainserire; if (azione.equals("elimina")) testodainserire = ""; else testodainserire = riga.gettext(); int start = area.getselectionstart(); int end = area.getselectionend(); area.replacerange(testodainserire,start,end); area.select(start,start); La pagina HTML: <HTML><HEAD> <TITLE> Applet 2 </TITLE> </HEAD> <BODY> <APPLET CODE="Applet3.class" WIDTH=500 HEIGHT=300 > </APPLET> </BODY> </HTML> Denti, Zambonelli Le Applet Java - 12

APPLET E PARAMETRI Il file HTML può specificare parametri da passare all'applet, nella forma: <APPLET CODE="Applet3.class" WIDTH=500 HEIGHT=300> <PARAM NAME="ascissa" VALUE="123"> <PARAM NAME="ordinata" VALUE="67">... </APPLET> L'applet può recuperarli con il metodo getparameter(nomeparametro), che restituisce una String ESEMPIO 4 L'applet dell'esempio 1 modificata: import java.applet.*; import java.awt.*; import javax.swing.*; public class Applet4 extends JApplet { Font f = new Font("Times", Font.BOLD, 36); public void paint(graphics g) { g.setfont(f); g.setcolor(color.red); g.drawstring(getparameter("frase"), 100, 50); Denti, Zambonelli Le Applet Java - 13

ESEMPIO 4 La pagina HTML dell'esempio 1 modificata: <HTML><HEAD> <TITLE> Applet Parametrica </TITLE> </HEAD> <BODY> <APPLET CODE="Applet4.class" WIDTH=500 HEIGHT=100 > <PARAM NAME="Frase" VALUE="Oh, che bello!"> <!-- NOME e VALORE del parametro --> </APPLET> </BODY> </HTML> Risultato: Denti, Zambonelli Le Applet Java - 14

APPLET: I METODI STANDARD Un'applet è organizzata intorno a 4 metodi: init(), che viene chiamato dal browser quando lancia l'applet per la prima volta fa le veci di un costruttore, legge i parametri, etc. start(), che viene chiamato dal browser ogni volta che l'applet deve essere riavviata (perché torna visibile nella pagina) tipicamente riavvia un'animazione o un thread non occorre implementarlo se non ci sono animazioni o thread da riattivare stop(), che viene chiamato dal browser ogni volta che l'applet deve essere fermata (perché esce dall'area visibile della pagina) tipicamente ferma un'animazione o un thread non occorre implementarlo se non ci sono animazioni o thread da fermare destroy(), che viene chiamato dal browser quando il browser stesso si chiude utile in casi particolari, per liberare i contesti grafici (di norma non occorre implementarlo) Denti, Zambonelli Le Applet Java - 15

DA APPLICAZIONE A APPLET Come convertire un'applicazione in un'applet? eliminare il main che crea il frame: non serve più, il frame è quello del browser sostituire JFrame con JApplet e assicurarsi che la classe sia pubblica, altrimenti l'applet non potrà essere caricata eliminare la chiamata a setsize(): ora le dimensioni del frame sono decise dalla pagina HTML tramite HEIGHT e WIDTH eliminare la chiamata a addwindowlisten-er(): un'applet non può essere chiusa, termina quando l'utente esce dal browser eliminare la chiamata a settitle(): un'applet non ha titolo, è la pagina HTML che lo definisce sostituire il costruttore col metodo init(): in realtà, un'applet può avere un costruttore, ma solo init() può recuperare i parametri tramite getparameter(). Denti, Zambonelli Le Applet Java - 16

APPLET "DOUBLE FACE" Un'applet può essere costruita in modo da poter funzionare anche come applicazione:basta aggiungere un main che svolga le funzioni normalmente svolte dal browser: creare il frame, dimensionarlo con setsize() e fissare il titolo con settitle() impostare un WindowListener per gestire la chiusura della finestra (frame) invocare il metodo init() avviare l'applet chiamando start() Nota: non occorre chiamare il metodo stop(), perché un'applicazione termina quando il suo frame viene chiuso. Denti, Zambonelli Le Applet Java - 17

ESEMPIO 5 Si vuole rendere "double face" l'esempio 2. Occorre creare un main che: crei un oggetto Applet5 crei un JFrame, lo dimensioni, recuperi il Container, e gli aggiunga l'applet avvii l'applet con init(), e mostri il frame. Denti, Zambonelli Le Applet Java - 18

ESEMPIO 5 - codice public class Applet5 extends JApplet {... public static void main(string args[]) { Applet5 applet = new Applet5(); JFrame f = new JFrame( applet.getclass().getname() ); //TITOLO = NOME CLASSE f.setsize(new Dimension(300,100)); f.addwindowlistener( new Terminator() ); Container c = f.getcontentpane(); c.add(applet); applet.init(); // non c'è start(); f.show(); Come applet: appletviewer Applet5.html Come applicazione: java Applet5 Denti, Zambonelli Le Applet Java - 19

APPLET "DOUBLE FACE" UN APPROCCIO ALTERNATIVO Non toccare l'applet già fatta Ma sfruttare l'ereditarietà per definire una nuova classe che erediti dall'applet che interessa contenga il main opportuno Vantaggi: è molto semplice non tocca neanche un file dell'applet originale si può usare sempre, per qualunque applet public class Application2 extends Applet2 { public static void main(string args[]) { Application2 applet = new Application2(); JFrame f = new JFrame( applet.getclass().getname() ); f.setsize(new Dimension(300,100)); f.addwindowlistener( new Terminator() ); Container c = f.getcontentpane(); c.add(applet); applet.init(); // non c'è start(); f.show(); // qui c'è anche la classe Terminator Denti, Zambonelli Le Applet Java - 20

APPLET e SICUREZZA Un'applet non può fare tutto quello che fa una applicazione. Poiché può essere scaricata dalla rete, sarebbe troppo pericoloso permettere a un'applet di fare qualunque cosa. Un'applet è costretta a rispettare un ben preciso modello di sicurezza ("sandbox") è eseguita in una "scatola" da cui non può uscire non può contaminare (o spiare) i dati del computer dell'utente Un'applet di norma non può: accedere al file system locale (neppure per leggere un file) eseguire un altro programma ottenere informazioni sull'utente connettersi via rete a un computer diverso da quello da cui è stata scaricata caricare la libreria Java, chiamare System.exit() Questi vincoli non si applicano all'appletviewer Un'applet, inoltre: può aprire un'altra finestra, ma in essa compare automaticamente un avviso ("Warning: Applet window") Problema: in molte situazioni, questi vincoli sono troppo rigidi rischierebbero di rendere impossibile la costruzioni di applet utili. Denti, Zambonelli Le Applet Java - 21

APPLET FIRMATE Attraverso tecnologie di cifratura, un'applet può essere firmata, ossia a essa può essere allegato un certificato che ne garantisce l'origine. Alle applet firmate, cui si attribuisce maggiore fiducia, l'utente può consentire di svolgere alcune o tutte le operazioni sottoposte a vincolo. Ogni browser può essere configurato per gestire le applet firmate. POLITICHE DI SICUREZZA A partire da Java 2, l'utente può decidere caso per caso quali politiche di sicurezza applicare, con una granularità molto fine Esiste il concetto di policy file, che elenca le politiche locali si può stabilire che una certa applet, proveniente da un ben preciso sito, ha diritti particolari Tale file può essere fornito da chi sviluppa l'applet, o modificato dall'utente con lo strumento PolicyTool. Denti, Zambonelli Le Applet Java - 22