APPLICAZIONI & APPLET



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

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le 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

L interfaccia grafica in Java

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

Programmazione Java: Interfacce grafiche (GUI)

Grafico della parabola

Appunti di Informatica 1

Java: Compilatore e Interprete

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

Tale attività non è descritta in questa dispensa

Aggiornamento programma da INTERNET

Corso Eclipse. Prerequisiti. 1 Introduzione

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Breve guida a Linux Mint

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

FPf per Windows 3.1. Guida all uso

Manuale Operativo per la firma digitale

Installazione del software Fiery per Windows e Macintosh

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

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

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

Programmazione Orientata agli Oggetti in Linguaggio Java

Capitolo 4 Pianificazione e Sviluppo di Web Part

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

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

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

Struttura di un programma Java

Manuale Operativo per la firma digitale

Istruzioni per la configurazione di IziOzi

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Panoramica: che cosa è necessario

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

MANUALE UTENTE. Computer Palmare WORKABOUT PRO

Eclipse. Avviare un progetto e compilare un semplice programma

Opuscolo Outlook Express

NOME 0 PROVIDER DOMINIO istruzione.it

Guida all installazione di Fiery proserver

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Guida all utilizzo della Piattaforma per la staffetta di Scrittura Creativa Manuale pratico per docenti e tutor

appunti delle lezioni Architetture client/server: applicazioni server

Corso basi di dati Installazione e gestione di PWS

Mac Application Manager 1.3 (SOLO PER TIGER)

Progetto SOLE Sanità OnLinE

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Manuale Terminal Manager 2.0

Programmare in Java. Olga Scotti

Programmazione in rete e laboratorio

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

progecad NLM Guida all uso Rel. 10.2

Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta

Flow!Works Manuale d uso

InitZero s.r.l. Via P. Calamandrei, Arezzo

Configurare TPTP in Eclipse e testare un applicazione

SolidWorks Education Edition 2012 Istruzioni per l'installazione

Impostare il browser per navigare in sicurezza Opzioni di protezione

Alla scoperta della nuova interfaccia di Office 2010

I satelliti. Accesso Remoto

Strumenti per la programmazione

hiclot Manuale utente del software

Alessandro De Luca. Lezione, 13 maggio 2015

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

SendMedMalattia v Manuale d uso

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

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA

1 Introduzione Installazione Configurazione di Outlook Impostazioni manuali del server... 10

Java: la libreria delle classi

SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE

Telematica II 17. Esercitazione/Laboratorio 6

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

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

Gestione Risorse Umane Web

GERARCHIE RICORSIVE - SQL SERVER 2008

Progettazione : Design Pattern Creazionali

Moodle Guida rapida per docenti

Gui Gu d i a d ra r p a i p d i a V d o a d f a one Int fone In e t r e net rnet Box Key Mini

Applets. Java. Restrizioni delle applets. Restrizioni delle applets

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

INSTALLAZIONE DEL NUOVO SERVIZIO VPN VIRTUAL PRIVATE NETWORK (sistemi Windows e Android)

GUIDA UTENTE PRIMA NOTA SEMPLICE

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Manuale NetSupport v Liceo G. Cotta Marco Bolzon

CdL in Medicina Veterinaria - STPA AA

Transcript:

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 (?) applicazione da eseguirsi dentro un browser Internet grafica portabile ed eseguibile ovunque modello di sicurezza sandbox (Java 1.0) modello di sicurezza più evoluto (Java2)

APPLET Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet Porta dinamicità alle pagine "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, JRE e JDK installano il "Java Plug in", che consente al browser di usare un interprete Java esterno (aggiornato)

APPLET In quanto applicazione non autonoma, un'applet: non deve creare un frame principale, perché usa la finestra del browser che la ospita 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.

APPLET In quanto applicazione non autonoma, un'applet: non deve creare un frame principale, perché usa la finestra del browser che la ospita non ha un main, perché la sua vita è dipendente dalla pagina Infatti, in Applet cui è deriva visualizzata direttamente da Panel, quindi è essa stessa un è organizzata intorno a 4 metodi standard: pannello AWT (non un JPanel però) 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.

APPLET 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.

SWING: GERARCHIA DI CLASSI Object In rosso: classi AWT In blu: classi Swing Component Container Attenzione: una JApplet non è un JPanel Window Panel JComponent Frame Dialog Applet JPanel 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

import java.applet.*; import java.awt.*; import javax.swing.*; ESEMPIO 1 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); } }

import java.applet.*; import java.awt.*; import javax.swing.*; ESEMPIO 1 public class Applet1 extends JApplet { Font f = new Font("Times", Font.BOLD, 36); Nota: il metodo è paint(), non paintcomponent() perché una JApplet non è un JPanel. public void paint(graphics g) { g.setfont(f); g.setcolor(color.red); g.drawstring("ciao mondo!", 100, 50); } } Non implementa nessuno dei 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 > </APPLET> </BODY> </HTML> Dimensioni finestra (frame) dell'applet Classe dell'applet

Compilazione: ESEMPIO 1 - TEST C:\prova> javac Applet1.java Esecuzione via appletviewer: C:\prova> appletviewer Applet1.html

ESEMPIO 1 - TEST Alternativa: esecuzione via browser Problema: la Java Virtual Machine fornita con vari browser non supporta Swing! Soluzione: cambiare macchina virtuale, usando il Java Plug-in Il Java Plug-in è installato automaticamente all atto della installazione del JDK o JRE aggiunge un icona nel Pannello di Controllo di Windows mentre il plug-in è attivo, la sua icona è visibile nella barra dei task in basso a destra (a fianco dell orologio).

JAVA PLUG-IN e CONVERTITORE HTML Come si fa a dire al browser di usare il plug-in? DAL JDK 1.4 IN POI non occorre fare nulla, perché l'uso del Java Plug-in è automatico. FINO AL JDK 1.3 INCLUSO, occorreva scrivere in modo speciale la pagina HTML con l applet Poiché scrivere direttamente tale pagina HTML era molto complicato, si usava il Convertitore HTML il Convertitore HTML è una applicazione Java si scarica dal sito Sun prende in ingresso una pagina HTML classica e produce la versione che invoca il Java Plug-in ATTENZIONE: la versione deve coincidere con quella del JRE

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

ESEMPIO 2 public class Applet2 extends JApplet { JButton redbutton, bluebutton, greenbutton; JTextField messaggio; public void init() { Container c = getcontentpane(); 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);...

ESEMPIO 2 public class Applet2 extends JApplet { JButton redbutton, bluebutton, greenbutton; Le azioni vanno fatte non JTextField messaggio; sulla JApplet, ma sul public void init() { Container che la contiene. Container c = getcontentpane(); 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);...

} ESEMPIO 2 I componenti vanno aggiunti non alla JApplet, ma al Container 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)

Il gestore degli eventi: ESEMPIO 2 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(); } Chiede che il pannello AWT venga ridisegnato.

La pagina HTML: ESEMPIO 2 <HTML><HEAD> <TITLE> Applet 2 </TITLE> </HEAD> <BODY> <APPLET CODE="Applet2.class" WIDTH=300 HEIGHT=100 > </APPLET> </BODY> </HTML>

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.

ESEMPIO 3 public class Applet3 extends JApplet { JButton deletebutton, editbutton; JTextArea ta; JTextField tf; int pos, endpos; public void init() { Container c = getcontentpane(); 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);...

ESEMPIO 3 public class Applet3 extends JApplet { JButton deletebutton, editbutton; Ricorda: si opera sul Container JTextArea ta; JTextField tf; che contiene la JApplet, non int pos, endpos; direttamente su essa. public void init() { Container c = getcontentpane(); 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);...

ESEMPIO 3... 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)

ESEMPIO 3 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: ESEMPIO 3 <HTML><HEAD> <TITLE> Applet 2 </TITLE> </HEAD> <BODY> <APPLET CODE="Applet3.class" WIDTH=500 HEIGHT=300 > </APPLET> </BODY> </HTML>

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); } }

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!"> </APPLET> </BODY> </HTML> Nome del parametro Valore del parametro

Risultato: ESEMPIO 4

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. (segue)

(segue) APPLET: I METODI STANDARD 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)

DA APPLICAZIONE A APPLET Come convertire un'applicazione in un'applet? eliminare il main che crea il frame: non serve più, poiché il frame è quello del browser sostituire JPanel 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 (segue)

(segue) DA APPLICAZIONE A APPLET eliminare la chiamata a addwindowlistener(): 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().

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) (segue)

(segue) APPLET "DOUBLE FACE" 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.

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.

ESEMPIO 5 public class Applet5 extends JApplet {... public static void main(string args[]) { Applet5 applet = new Applet5(); JFrame f = new JFrame( Titolo = nome classe 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(); }

ESEMPIO 5 Come applet: appletviewer Applet5.html La finestra dell'applet si riconosce Come applicazione: java Applet5

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

APPLET "DOUBLE FACE" public class Application2 extends Applet2 { public static void main(string args[]) { Application2 applet = new Application2(); JFrame f = new JFrame( "Titolo" ); f.setsize(new Dimension(300,100)); f.addwindowlistener( new Terminator() ); // oppure: setdefaultcloseoperation( ) Container c = f.getcontentpane(); c.add(applet); applet.init(); // non c'è start(); f.show(); } // qui, se occorre, c'è la classe Terminator }

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.

APPLET e SICUREZZA 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

APPLET e SICUREZZA 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.

APPLET e SICUREZZA Ad esempio, come fare se un applet ha assoluta necessità di... salvare dati su file? connettersi a un certo indirizzo in rete? Alcuni trucchi sfruttano il fatto che un applet può connettersi al sito da cui è stata scaricata: si possono salvare il file a lato server, inviando i dati via rete si può connettersi all indirizzo richiesto in modo indiretto, inviando i dati via rete al server.

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.

APPLET FIRMATE Ogni browser può essere configurato:

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 il PolicyTool. http://java.sun.com/docs/books/tutorial/ security1.2/tour1/index.html