48
Tecnologie lato Client: Tecnologie lato Client: Applet Applet © 2005 Stefano Clemente Stefano Clemente [email protected]

Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente [email protected]

Embed Size (px)

Citation preview

Page 1: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

Tecnologie lato ClientTecnologie lato ClientAppletApplet

copy 2005 Stefano Clemente

Stefano Clementesclementeeiuniboit

18 Ottobre 2005 Stefano Clemente 2

Riferimenti bibliograficiRiferimenti bibliografici

bull Java Tutorial on-lineminus httpjavasuncomdocsbookstutorialappletindexhtml

bull Downloadable Java Tutorialminus httpjavasuncomdocsbookstutorialdownloadtutorialzip

18 Ottobre 2005 Stefano Clemente 3

IntroduzioneIntroduzionebull Permettono di eseguire del codice Java incluso

nelle pagine webbull Java egrave platform-independent

minusnon crsquoegrave bisogno di sapere quale browser egrave in uso sui client

bull Le pagine web sono piugrave potentibull Si possono fornire programmi agli utenti ma

eseguiti sulle loro macchineminusminor carico per i server

bull devono soltanto trasferire il codice

minusmaggior carico per i client bull devono disporre della potenza di calcolo necessaria per

lrsquoesecuzione dei programmi Java

18 Ottobre 2005 Stefano Clemente 4

IntroduzioneIntroduzionebull Le applet sono soggette ad alcuni limiti percheacute

minus egrave pur sempre codice scaricato da siti remoti

minus devono essere eseguiti su macchine di utenti di qualsiasi tipo

minus egrave indispensabile la sicurezza e la fiducia

minus devono essere applicate alcune restrizioni

minus devono essere eseguite in modo sicuro

bull Lrsquoutente egrave protetto dallrsquoapplet security managerapplet security manager

18 Ottobre 2005 Stefano Clemente 5

IntroduzioneIntroduzionebull Limiti

minus non possono essere utilizzate per ldquospiarerdquo il client ma possono leggere solo alcune informazioni

bull versione di Java utilizzatabull nome e versione del sistema operativobull i caratteri utilizzati come separatori di linea e di filebull il linguaggio e le impostazioni localibull le valute

minus non possono alterare il sistema dellrsquoutenteminus non possono eseguire programmi residenti sul clientminus non possono comunicare con host diversi dal server di origineminus non possono leggerescrivere sul file-system del clientminus le finestre aperte da una applet sono diverse dalle finestre

aperte dalle altre applicazioni

18 Ottobre 2005 Stefano Clemente 6

IntroduzioneIntroduzione

bull Possibilitagrave delle appletminusvisualizzazione di immaginiminusriproduzione di suoniminusricezione di input dallrsquoutente (azioni del

mouse e pressione dei tasti della tastiera)minuslrsquoinput puograve essere inviato al serverminusesecuzione di calcoli complessi

18 Ottobre 2005 Stefano Clemente 7

StrumentiStrumentibull Il programmatore che crea la applet

minusscrive con un editor il programmaminuslo compila utilizzando il Software Development Kit ndash

SDK (javacjavac)minuscrea con un editor la pagina web sorgente

bull Per eseguire la appletminusbisogna disporre di Java Runtime Environment (JRE)minussi scarica la pagina web e il codice dellrsquoappletminussi visualizza la pagina con un browser o con appletviewerappletviewer

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 2: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 2

Riferimenti bibliograficiRiferimenti bibliografici

bull Java Tutorial on-lineminus httpjavasuncomdocsbookstutorialappletindexhtml

bull Downloadable Java Tutorialminus httpjavasuncomdocsbookstutorialdownloadtutorialzip

18 Ottobre 2005 Stefano Clemente 3

IntroduzioneIntroduzionebull Permettono di eseguire del codice Java incluso

nelle pagine webbull Java egrave platform-independent

minusnon crsquoegrave bisogno di sapere quale browser egrave in uso sui client

bull Le pagine web sono piugrave potentibull Si possono fornire programmi agli utenti ma

eseguiti sulle loro macchineminusminor carico per i server

bull devono soltanto trasferire il codice

minusmaggior carico per i client bull devono disporre della potenza di calcolo necessaria per

lrsquoesecuzione dei programmi Java

18 Ottobre 2005 Stefano Clemente 4

IntroduzioneIntroduzionebull Le applet sono soggette ad alcuni limiti percheacute

minus egrave pur sempre codice scaricato da siti remoti

minus devono essere eseguiti su macchine di utenti di qualsiasi tipo

minus egrave indispensabile la sicurezza e la fiducia

minus devono essere applicate alcune restrizioni

minus devono essere eseguite in modo sicuro

bull Lrsquoutente egrave protetto dallrsquoapplet security managerapplet security manager

18 Ottobre 2005 Stefano Clemente 5

IntroduzioneIntroduzionebull Limiti

minus non possono essere utilizzate per ldquospiarerdquo il client ma possono leggere solo alcune informazioni

bull versione di Java utilizzatabull nome e versione del sistema operativobull i caratteri utilizzati come separatori di linea e di filebull il linguaggio e le impostazioni localibull le valute

minus non possono alterare il sistema dellrsquoutenteminus non possono eseguire programmi residenti sul clientminus non possono comunicare con host diversi dal server di origineminus non possono leggerescrivere sul file-system del clientminus le finestre aperte da una applet sono diverse dalle finestre

aperte dalle altre applicazioni

18 Ottobre 2005 Stefano Clemente 6

IntroduzioneIntroduzione

bull Possibilitagrave delle appletminusvisualizzazione di immaginiminusriproduzione di suoniminusricezione di input dallrsquoutente (azioni del

mouse e pressione dei tasti della tastiera)minuslrsquoinput puograve essere inviato al serverminusesecuzione di calcoli complessi

18 Ottobre 2005 Stefano Clemente 7

StrumentiStrumentibull Il programmatore che crea la applet

minusscrive con un editor il programmaminuslo compila utilizzando il Software Development Kit ndash

SDK (javacjavac)minuscrea con un editor la pagina web sorgente

bull Per eseguire la appletminusbisogna disporre di Java Runtime Environment (JRE)minussi scarica la pagina web e il codice dellrsquoappletminussi visualizza la pagina con un browser o con appletviewerappletviewer

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 3: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 3

IntroduzioneIntroduzionebull Permettono di eseguire del codice Java incluso

nelle pagine webbull Java egrave platform-independent

minusnon crsquoegrave bisogno di sapere quale browser egrave in uso sui client

bull Le pagine web sono piugrave potentibull Si possono fornire programmi agli utenti ma

eseguiti sulle loro macchineminusminor carico per i server

bull devono soltanto trasferire il codice

minusmaggior carico per i client bull devono disporre della potenza di calcolo necessaria per

lrsquoesecuzione dei programmi Java

18 Ottobre 2005 Stefano Clemente 4

IntroduzioneIntroduzionebull Le applet sono soggette ad alcuni limiti percheacute

minus egrave pur sempre codice scaricato da siti remoti

minus devono essere eseguiti su macchine di utenti di qualsiasi tipo

minus egrave indispensabile la sicurezza e la fiducia

minus devono essere applicate alcune restrizioni

minus devono essere eseguite in modo sicuro

bull Lrsquoutente egrave protetto dallrsquoapplet security managerapplet security manager

18 Ottobre 2005 Stefano Clemente 5

IntroduzioneIntroduzionebull Limiti

minus non possono essere utilizzate per ldquospiarerdquo il client ma possono leggere solo alcune informazioni

bull versione di Java utilizzatabull nome e versione del sistema operativobull i caratteri utilizzati come separatori di linea e di filebull il linguaggio e le impostazioni localibull le valute

minus non possono alterare il sistema dellrsquoutenteminus non possono eseguire programmi residenti sul clientminus non possono comunicare con host diversi dal server di origineminus non possono leggerescrivere sul file-system del clientminus le finestre aperte da una applet sono diverse dalle finestre

aperte dalle altre applicazioni

18 Ottobre 2005 Stefano Clemente 6

IntroduzioneIntroduzione

bull Possibilitagrave delle appletminusvisualizzazione di immaginiminusriproduzione di suoniminusricezione di input dallrsquoutente (azioni del

mouse e pressione dei tasti della tastiera)minuslrsquoinput puograve essere inviato al serverminusesecuzione di calcoli complessi

18 Ottobre 2005 Stefano Clemente 7

StrumentiStrumentibull Il programmatore che crea la applet

minusscrive con un editor il programmaminuslo compila utilizzando il Software Development Kit ndash

SDK (javacjavac)minuscrea con un editor la pagina web sorgente

bull Per eseguire la appletminusbisogna disporre di Java Runtime Environment (JRE)minussi scarica la pagina web e il codice dellrsquoappletminussi visualizza la pagina con un browser o con appletviewerappletviewer

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 4: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 4

IntroduzioneIntroduzionebull Le applet sono soggette ad alcuni limiti percheacute

minus egrave pur sempre codice scaricato da siti remoti

minus devono essere eseguiti su macchine di utenti di qualsiasi tipo

minus egrave indispensabile la sicurezza e la fiducia

minus devono essere applicate alcune restrizioni

minus devono essere eseguite in modo sicuro

bull Lrsquoutente egrave protetto dallrsquoapplet security managerapplet security manager

18 Ottobre 2005 Stefano Clemente 5

IntroduzioneIntroduzionebull Limiti

minus non possono essere utilizzate per ldquospiarerdquo il client ma possono leggere solo alcune informazioni

bull versione di Java utilizzatabull nome e versione del sistema operativobull i caratteri utilizzati come separatori di linea e di filebull il linguaggio e le impostazioni localibull le valute

minus non possono alterare il sistema dellrsquoutenteminus non possono eseguire programmi residenti sul clientminus non possono comunicare con host diversi dal server di origineminus non possono leggerescrivere sul file-system del clientminus le finestre aperte da una applet sono diverse dalle finestre

aperte dalle altre applicazioni

18 Ottobre 2005 Stefano Clemente 6

IntroduzioneIntroduzione

bull Possibilitagrave delle appletminusvisualizzazione di immaginiminusriproduzione di suoniminusricezione di input dallrsquoutente (azioni del

mouse e pressione dei tasti della tastiera)minuslrsquoinput puograve essere inviato al serverminusesecuzione di calcoli complessi

18 Ottobre 2005 Stefano Clemente 7

StrumentiStrumentibull Il programmatore che crea la applet

minusscrive con un editor il programmaminuslo compila utilizzando il Software Development Kit ndash

SDK (javacjavac)minuscrea con un editor la pagina web sorgente

bull Per eseguire la appletminusbisogna disporre di Java Runtime Environment (JRE)minussi scarica la pagina web e il codice dellrsquoappletminussi visualizza la pagina con un browser o con appletviewerappletviewer

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 5: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 5

IntroduzioneIntroduzionebull Limiti

minus non possono essere utilizzate per ldquospiarerdquo il client ma possono leggere solo alcune informazioni

bull versione di Java utilizzatabull nome e versione del sistema operativobull i caratteri utilizzati come separatori di linea e di filebull il linguaggio e le impostazioni localibull le valute

minus non possono alterare il sistema dellrsquoutenteminus non possono eseguire programmi residenti sul clientminus non possono comunicare con host diversi dal server di origineminus non possono leggerescrivere sul file-system del clientminus le finestre aperte da una applet sono diverse dalle finestre

aperte dalle altre applicazioni

18 Ottobre 2005 Stefano Clemente 6

IntroduzioneIntroduzione

bull Possibilitagrave delle appletminusvisualizzazione di immaginiminusriproduzione di suoniminusricezione di input dallrsquoutente (azioni del

mouse e pressione dei tasti della tastiera)minuslrsquoinput puograve essere inviato al serverminusesecuzione di calcoli complessi

18 Ottobre 2005 Stefano Clemente 7

StrumentiStrumentibull Il programmatore che crea la applet

minusscrive con un editor il programmaminuslo compila utilizzando il Software Development Kit ndash

SDK (javacjavac)minuscrea con un editor la pagina web sorgente

bull Per eseguire la appletminusbisogna disporre di Java Runtime Environment (JRE)minussi scarica la pagina web e il codice dellrsquoappletminussi visualizza la pagina con un browser o con appletviewerappletviewer

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 6: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 6

IntroduzioneIntroduzione

bull Possibilitagrave delle appletminusvisualizzazione di immaginiminusriproduzione di suoniminusricezione di input dallrsquoutente (azioni del

mouse e pressione dei tasti della tastiera)minuslrsquoinput puograve essere inviato al serverminusesecuzione di calcoli complessi

18 Ottobre 2005 Stefano Clemente 7

StrumentiStrumentibull Il programmatore che crea la applet

minusscrive con un editor il programmaminuslo compila utilizzando il Software Development Kit ndash

SDK (javacjavac)minuscrea con un editor la pagina web sorgente

bull Per eseguire la appletminusbisogna disporre di Java Runtime Environment (JRE)minussi scarica la pagina web e il codice dellrsquoappletminussi visualizza la pagina con un browser o con appletviewerappletviewer

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 7: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 7

StrumentiStrumentibull Il programmatore che crea la applet

minusscrive con un editor il programmaminuslo compila utilizzando il Software Development Kit ndash

SDK (javacjavac)minuscrea con un editor la pagina web sorgente

bull Per eseguire la appletminusbisogna disporre di Java Runtime Environment (JRE)minussi scarica la pagina web e il codice dellrsquoappletminussi visualizza la pagina con un browser o con appletviewerappletviewer

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 8: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 8

HTML il tag appletHTML il tag appletltAPPLETgtltAPPLETgt

AttributiCODE=ltfile_java_classgt CODEBASE=ltURI_base_dei_file_classgt WIDTH=ltlarghezza_appletgt HEIGHT=ltaltezza_appletgt ARCHIVE=ltfile_archivigt

bull In HTML 40 egrave sconsigliato lrsquouso del tag applet che si intende sostituire con il piugrave generico tag ltobjectgtltobjectgt

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 9: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 9

AppletApplet

bull Ogni applet viene implementata mediante la creazione di una sottoclasse della classe AppletApplet

bull La gerarchia dellrsquoereditarietagrave della classe Applet egrave mostrata nella figura accanto

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 10: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 10

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoappletbull Caricamento dellrsquoapplet

minus viene creata unrsquoistanza della classe che controlla lrsquoapplet (sottoclasse di AppletApplet)

minus lrsquoapplet si inizializzaminus lrsquoapplet comincia la sua esecuzione

bull Quando si abbandona la pagina lrsquoapplet si arresta e quando si ritorna nella pagina lrsquoapplet si riavviaminus anche per riduzione a icona e ripristino della finestra

bull Alcuni browser permettono allrsquoutente di ricaricare lrsquoapplet il che si traduce inminus arresto dellrsquoappletminus pulizia finale ndash lrsquoapplet rilascia le risorse che detieneminus caricamento dellrsquoapplet

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 11: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 11

Il ciclo di vita dellrsquoappletIl ciclo di vita dellrsquoapplet

bull Uscita dal browserminusarresto dellrsquoappletminuspulizia finale ndash lrsquoapplet rilascia le risorse che detiene

bull Riassumendo gli eventi del ciclo di vita dellrsquoapplet sonominusinizializzazioneminusavviominusarrestominuspulizia finale

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 12: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 12

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 13: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 13

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 14: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 14

Esempio 1Esempio 1

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 15: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 15

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1bull Lrsquoapplet Esempio1 egrave una sottoclasse della classe

Applet classbull Ridefinisce quattro metodi della classe Applet

minus init ndash per inizializzare lrsquoapplet ogni volta che viene caricata o ricaricata

minus start ndash per avviare lrsquoesecuzione in seguito al caricamento o a una nuova visita da parte dellrsquoutente

minus stop ndash per arrestare lrsquoesecuzione in seguito a chiusura del browser o abbandono della pagina da parte dellrsquoutente

minus destroy ndash per la pulizia finale in seguito a arresto dellrsquoapplet

bull Non egrave sempre necessario ridefinire i metodiminus es applet che non fanno altro che disegnarsi

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 16: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 16

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull Il metodo init dovrebbe essere ridefinito quando lrsquoinizializzazione egrave da eseguire una sola volta e non richiede dei tempi eccessivi

bull Alcuni browser chiamano il metodo init piugrave volte dopo il caricamento dellrsquoapplet

bull Il metodo start dovrebbe essere ridefinito quando lrsquoapplet deve eseguire qualcosa dopo lrsquoinizializzazioneminusIl metodo start puograve

bull eseguire il lavoro dellrsquoapplet (non molto bello)bull avviare dei thread per lrsquoesecuzione del lavoro (meglio)

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 17: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 17

Commenti sullrsquoesempio 1Commenti sullrsquoesempio 1

bull La maggior parte delle applet che ridefiniscono il metodo start dovrebbero ridefinire anche il metodo stopminusIl metodo stop sospende lrsquoesecuzione dellrsquoapplet e

quindi non impegna risorse se lrsquoutente non visualizza la pagina (es animazione)

bull La maggior parte delle applet non hanno bisogno di ridefinire il metodo destroy percheacute il metodo stop fa solitamente giagrave tutto il necessario Viene ridefinito per rilasciare risorse aggiuntive

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 18: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 18

Metodi di DrawingMetodi di Drawingbull Nellrsquoesempio 1 la ridefinizione del metodo

paint definisce il modo in cui lrsquoapplet visualizza dei messaggi

bull I metodi che unrsquoapplet puograve ridefinire per la visualizzazione sonominuspaint ndash metodo principale per la visualizzazione di

informazioniminusupdate ndash utilizzato in combinazione con paint per

migliorare le prestazioni

bull Sono ereditati dalla classe Applet che li eredita a sua volta dalla classe Component dellrsquoAbstract Window Toolkit (AWT)

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 19: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 19

EventiEventi

bull Dalla classe Component egrave ereditato anche un insieme di metodi per la gestione degli eventiminusactionminusmouseDownminushandleEvent ndash ldquoqualsiasi eventordquo

bull Per gestire un evento bisogna ridefinire il relativo metodo nellrsquoapplet

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 20: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 20

Esempio 2Esempio 2

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 21: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 21

Metodi per aggiunta componenti Metodi per aggiunta componenti interfaccia utenteinterfaccia utentebull AWT fornisce anche le seguenti componenti per

lrsquointerfaccia utenteminus Bottoni (javaawtButton) minus Single-line text field (javaawtTextField) minus Checkbox (javaawtCheckbox) minus Larger text display e aree di editing (javaawtTextArea) minus Etichette (javaawtLabel) minus Liste (javaawtList) minus Liste pop-up (javaawtChoice) minus Slider e scrollbar (javaawtScrollbar) minus Aree di disegno (javaawtCanvas) minus Menu (javaawtMenu javaawtMenuItem

javaawtCheckboxMenuItem) minus Contenitori (javaawtPanel javaawtWindow e sottoclassi)

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 22: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 22

Metodi per lrsquouso delle componenti Interfaccia Utente

bull addadd minusAggiunge la componente

bull removeremove minusRimuove la componente

bull setLayoutsetLayout minusPredispone il layout manager

Metodi per aggiunta Metodi per aggiunta componenti interfaccia utentecomponenti interfaccia utente

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 23: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 23

Esempio 3Esempio 3

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 24: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 24

I vantaggi della API AppletI vantaggi della API Appletbull La API applet permette di trarre vantaggi dalla

relazione tra applet e browserbull La API egrave fornita dal package javaapplet bull Grazie a API le applet possono

minusricevere dal browser la notifica su inizializzazione esecuzione arresto ecc

minuscaricare file di dati relativi alla URL dellrsquoapplet o alla pagina nella quale viene eseguita

minusvisualizzare delle brevi stringhe di statominusfar visualizzare un documento al browserminustrovare altre applet eseguite nella stessa paginaminusriprodurre suoniminusricevere parametri specificati nel tag ltappletgtltappletgt

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 25: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 25

API applet cercare e caricare i API applet cercare e caricare i filefilebull I file che unrsquoapplet ha bisogno di caricare sono indicati con una URL relativa

normalmente la applet usaminus code-base ndash metodo getCodeBaseminus document-base ndash metodo getDocumentBase

bull A meno di specifiche diverse indicate nel tag ltappletgt la code-base coincide con la document-base

bull I dati di cui unrsquoapplet ha sempre bisogno sono solitamente relativi alla code-basebull I dati che lrsquoutente che usa lrsquoapplet specifica (per mezzo di parametri) sono

solitamente relativi alla document-basebull La classe Applet definisce dei modi convenienti per il caricamento di suoni e

immagini relativamente a una URL base per esempio se una applet egrave configurata con una delle seguenti strutture di directory

per caricare lrsquoimmagine agif che si trova nella directory imgDir si puograve scrivereImage image = getImage(getCodeBase() imgDiragif)

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 26: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 26

API applet visualizzazioni di API applet visualizzazioni di brevi stringhe di statobrevi stringhe di statobull Sia i browser che altri visualizzatori di applet (es programma

appletviewer) consentono la visualizzazione di brevi stringhe di stato nella apposita barra di stato in fondo alla finestraminus Nei browser le applet e il browser condividono la stessa barra

bull Questa possibilitagrave non dovrebbe essere utilizzata per visualizzare informazioni criticheminus se le informazioni devono essere fornite a molti utenti dovrebbero

essere visualizzate nellrsquoarea dellrsquoappletminus se le informazioni interessano pochi utenti dovrebbero essere

visualizzate nello standard-outputbull Unix = shellbull X-windows = finestra terminalbull Browser = Console Java

bull La riga di stato puograve essere sovrascritta in qualsiasi momento da altre applet o dal browser

bull Il metodo relativo egrave showStatusshowStatusminus showStatus(MyApplet Loading image file + file) showStatus(MyApplet Loading image file + file)

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 27: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 27

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserbull Unrsquoapplet puograve visualizzare del testo HTMLbull Attraverso il metodo showDocumentshowDocument di

AppletContext lrsquoapplet dice al browser quale URL visualizzare e in quale finestra minusnon funziona con appletviewer

bull showDocumentshowDocument ha due formeminuspublic void showDocument(javanetURL public void showDocument(javanetURL urlurl))

bull dice semplicemente al browser di visualizzare il documento allrsquoURL specificata

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 28: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 28

API applet visualizzazioni di API applet visualizzazioni di documenti allrsquointerno del documenti allrsquointerno del browserbrowserminus public void showDocument(javanetURL public void showDocument(javanetURL urlurl

String String targetWindowtargetWindow)) bull aggiunge la finestra nella quale il documento deve essere

visualizzato il secondo argomento puograve assumere i valoriminus _blank_blank

bull nuova finestra senza nome minus windowNamewindowName

bull finestra dal nome ldquowindowNamerdquo ndash se non esiste viene creataminus _self_self

bull stessa finestra o frame che contiene lrsquoappletminus _parent_parent

bull Stessa finestra che contiene lrsquoapplet ma nel parent frame ndash se non esiste il parent frame egrave uguale a ldquo_selfrdquo

minus _top_top bull Stessa finestra che contiene lrsquoapplet ma nel frame principale ndash

se non esiste il frame principale egrave uguale a ldquo_selfrdquo

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 29: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 29

API applet invio di messaggi ad API applet invio di messaggi ad altre appletaltre appletbull Le applet possono parlare con altre applet entro i

seguenti limitiminus la maggior parte dei browser richiedono che

bull le applet provengano dallo stesso serverbull abbiano la stessa code-base

bull La API richiede inoltre che le applet siano in esecuzione minus sulla stessa paginaminus sulla stessa finestra del browser

bull Una applet puograve individuare unrsquoaltra appletminus per nome ndash metodo getApplet di AppletContextminus cercando tutte le applet della pagina ndash metodo getApplets di

AppletContext in entrambe i casi vengono restituiti uno o piugrave oggetti Applet sui quali lrsquoapplet invocante puograve richiamare dei metodi

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 30: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 30

Esempio 4 Applet ReceiverEsempio 4 Applet Receiver

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 31: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 31

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 32: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 32

Esempio 1 Applet SenderEsempio 1 Applet Sender

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 33: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 33

Esempio 4 Applet SenderEsempio 4 Applet Sender

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 34: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 34

Esempio 4 HTMLEsempio 4 HTML

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 35: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 35

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 36: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 36

Esempio 5 getAppletsEsempio 5 getApplets

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 37: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 37

Esempio 5 HTMLEsempio 5 HTML

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 38: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 38

API applet Riproduzione di API applet Riproduzione di suonisuonibull Il supporto per i suoni egrave fornito dalla classe Applet egrave

dallrsquointerfaccio AudioClip del package JavaAppletbull Egrave supportato un solo formato ndash 8 bit microlaw 8000 Hz

one-channel file auau di Sunbull I metodi do Applet relativi ai suoni sono

minus getAudioClip(URL)getAudioClip(URL) getAudioClip(URL String)getAudioClip(URL String)bull restituiscono un oggetto che implementa lrsquointerfaccia AudioClip

minus play(URL)play(URL) play(URL String)play(URL String)bull Eseguono lrsquoAudioClip relativo alla URL specificata

bull La forma a due parametri prende una URL di base (restituita da getDocumentBasegetDocumentBase o da getCodeBasegetCodeBase) e lrsquoURL del file sonoro relativa alla base Egrave consigliato utilizzareminus la code-base per i suoni distribuiti con lrsquoappletminus la document-base per i suoni specificati dallrsquoutente

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 39: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 39

API applet Riproduzione di API applet Riproduzione di suonisuonibull I metodi dellrsquointerfaccia AudioClip sono

minusplay bull riproduce il suono una sola volta

minusloop bull ripete continuamente il suono

minusstop bull arresta la riproduzione del suono sia con loop

che con play

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 40: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 40

Il tag ltappletgt i parametriIl tag ltappletgt i parametribull Finora abbiamo visto la forma piugrave semplice

ltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt ltAPPLETgtgt ltAPPLETgt

bull Alcune applet permettono allrsquoutente di personalizzare la loro configurazione attraverso lrsquoimmissione di parametri minus I parametri non sono altro che tag da inserire allrsquointerno del

tag applet secondo la sintassi seguenteltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass WIDTH=class WIDTH=anIntanInt HEIGHT=HEIGHT=anIntanIntgt gt ltPARAM NAME=ltPARAM NAME=parameter1Nameparameter1Name VALUE= VALUE=aValueaValuegt gt ltPARAM NAME=ltPARAM NAME=parameter2Nameparameter2Name VALUE=VALUE=anotherValueanotherValuegtgtltAPPLETgtltAPPLETgt

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 41: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 41

Il tag ltappletgt i parametriIl tag ltappletgt i parametri

bull Per leggere i parametri specificati dallrsquoutente le applet usano il metodopublic String getParameter(String name)public String getParameter(String name)getParameter restituisce sempre stringhe per cui lrsquoapplet deve provvedere alla conversione in altri tipi se necessario (es IntegerparseInt) minusSe necessario bisogna definire nellrsquoapplet dei valori

di default per i parametri minusgetParameter puograve essere utilizzata anche per

recuperare i valori degli attributi del tag appletbull CODE WIDTH HEIGHThellip

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 42: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 42

Il tag ltappletgt codice HTML e Il tag ltappletgt codice HTML e testo alternativotesto alternativobull ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160ltAPPLET CODE=Animatorclass WIDTH=460 HEIGHT=160

ALT=ldquoNon riesco ad eseguire lrsquoappletgtALT=ldquoNon riesco ad eseguire lrsquoappletgtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtltPARAM NAME=ldquordquogtIl browser non conosce il tag applet ltAPPLETgtIl browser non conosce il tag applet ltAPPLETgt

bull La stringa ldquoIl browser non conosce il tag appletrdquo nel tag precedente viene visualizzata nel caso in cui il browser sul quale viene richiamata la pagina non riconosca il tag ltappletgt Questo tipo di stringaminus egrave detto codice HTML alternativominus deve essere inserita tra i tag ltappletgt e ltappletgt e comunque

dopo i tag ltparamgt bull Se il browser egrave in grado di eseguire Java il codice HTML

alternativo egrave ignorato In questo caso puograve essere definito del testo alternativo attraverso attributo ALT del tag applet (nellrsquoesempio la stringa ldquoNon riesco a eseguire lrsquoappletrdquo)minus Lrsquouso dellrsquoattributo ALT egrave per segnalare allrsquoutente che il browser

sebbene abilitato allrsquoesecuzione di codice Java non egrave riuscito a eseguire lrsquoapplet

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 43: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 43

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull I browser assumono per default che il codice java

dellrsquoapplet sia nella stessa directory (URL base) del documento HTML in cui lrsquoapplet egrave richiamata

bull Spesso perograve il codice Java egrave in altre directory del server

bull In questi casi lrsquoattributo CODEBASE dice al browser in quale directory recuperare i file dellrsquoappletltAPPLET CODE=ltAPPLET CODE=AppletSubclassAppletSubclassclass class CODEBASE=CODEBASE=aURLaURL WIDTH= WIDTH=anIntanInt HEIGHT= HEIGHT=anIntanIntgt gt ltAPPLETgtltAPPLETgt

bull Se aURL egrave una URLminus relativa allora va intesa relativa alla document-base cioegrave alla

directory della pagina HTMLminus assoluta allora lrsquoapplet puograve essere scaricata da una qualsiasi

directory anche su un altro server

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 44: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 44

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull ltAPPLET CODE=Simpleclass ltAPPLET CODE=Simpleclass CODEBASE=example WIDTH=500 CODEBASE=example WIDTH=500 HEIGHT=20gt ltAPPLETgt HEIGHT=20gt ltAPPLETgt

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 45: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 45

Il tag ltappletgt la directory Il tag ltappletgt la directory dellrsquoappletdellrsquoappletbull In questo caso lrsquoURL egrave assoluta e puograve

indicare anche una directory su un altro server

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 46: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 46

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull Se unrsquoapplet egrave composta da piugrave file potrebbe

essere conveniente raggruppare tutti questi in un unico file archivio

bull Occorre valutareminusla dimensione dellrsquoappletminusle performanceminuslrsquoambiente che il generico utente potrebbe aver

bull Il poter disporre di file archivio porta alla riduzione dei tempi del download (minori connessioni HTTP)

bull Si possono ottenere migliori prestazioni nel download comprimendo lrsquoarchivio

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 47: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 47

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletbull La specifica di file archivio produce il seguente

comportamento del browserminus il browser cerca prima di tutto i file archivio nella stessa

directory dellrsquoappletminus successivamente cerca la classe applet allrsquointerno dei file

archiviominus se non lo trova prova allora a caricarlo come se nessun

archivio fosse stato specificato

bull Il formato standard per gli archivi Java egrave JAR introdotto in JDK 11 ed egrave basato sul formato ZIP

bull Gli archivi sono specificati attraverso lrsquoattributo ARCHIVE del tag applet archivi multipli sono specificati separando i nomi degli stessi con virgole

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
Page 48: Tecnologie lato Client: Applet © 2005 Stefano Clemente Stefano Clemente s.clemente@ei.unibo.it

18 Ottobre 2005 Stefano Clemente 48

Il tag ltappletgt raggruppare in Il tag ltappletgt raggruppare in un unico file i file dellrsquoappletun unico file i file dellrsquoappletltAPPLET CODE=AppletSubclassclassldquoltAPPLET CODE=AppletSubclassclassldquoARCHIVE=file1 file2 WIDTH=anIntARCHIVE=file1 file2 WIDTH=anIntHEIGHT=anIntgt ltAPPLETgt HEIGHT=anIntgt ltAPPLETgt

bull Per creare un archivio JAR che includa le versioni compresse di tutti i file class e gif contenuti nella current directory

jar cvf filezip class gifjar cvf filezip class gif

bull Per creare un archivio Jar per le classi nel package commycompanymyproject jar cvf filezip jar cvf filezip commycompanymyprojectclass gifcommycompanymyprojectclass gif

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48