Java - Dipartimento di Informatica

Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Organizzazione della lezione
Lezione 1
Introduzione a Java
Vittorio Scarano
Corso di Programmazione Distribuita (2003-2004)
Laurea di I livello in Informatica
Università degli Studi di Salerno
• Obiettivo:
Introdurre il linguaggio Java ed esaminarne le caratteristiche
che lo rendono particolare
• La genesi di Java
– Caratteristiche peculiari del linguaggio e scelte progettuali
•
•
•
•
Le keyword di Java
Il “dado” delle caratteristiche di Java
Gli strumenti per Java (JDK)
Un primo esempio
2
•
•
•
•
•
Java: la carta di identità
Un tipo di caffè
Un linguaggio di programmazione…
Una piattaforma di sviluppo…
Una moda…
Una storia interessante di …
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è...
3
• Genitori: Sun Microsystem
• Data di nascita: 23 maggio 1995
• Segni particolari:
– Utilizzato nel World Wide Web
• Luoghi frequentati:
Java
– Sistemi di middleware
– Sistemi embedded
– Ambienti a componenti per il calcolo distribuito
Seriamente parlando… Perché Java?
4
Il whitepaper di Java...
• Frutto dalla esperienza C e C++
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Perché Java…
– Object Oriented Programming (OOP
OOP)
– Linguaggio che facilita programmi bug-free
• Indipendente dalla piattaforma
• Ricco di Application Programming Interface (API)
API
– Organizzate in packages
• La presentazione da parte di Sun Microsystem
– Un whitepaper con tante keywords
• Java è un linguaggio di programmazione
5
La preistoria: Il progetto Green
• Obiettivo:
Introdurre il linguaggio Java ed esaminarne le caratteristiche
che lo rendono particolare
• La genesi di Java
– Caratteristiche peculiari del linguaggio e scelte progettuali
•
•
•
•
Le keyword di Java
Il “dado” delle caratteristiche di Java
Gli strumenti per Java (JDK)
Un primo esempio
7
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Organizzazione della lezione
6
• La situazione alla Sun Microsystem nel 90
– La rivoluzione dei Personal Computer era nel pieno
del suo svolgimento
– All’allargarsi del mercato dei desktop, il mercato
delle workstation si restringeva
– La reputazione delle macchine Sun:
• affidabili, solide ma …
• complicate, brutte e “secchione”
8
La risposta:
• Patrick Naughton, amico del CEO della Sun McNealy
• Gli viene offerto un lavoro migliore alla Next..
• … ma prima di lasciare gli viene richiesto di scrivere cosa
ritiene si faccia di sbagliato alla Sun e quale può essere una
soluzione.
• Scrive 12 videate di e-mail , dicendo tra l’altro di
–
–
–
–
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Un giovane progettista della Sun..
“far sviluppare la interfaccia utente ad un artista”
“utilizzare un unico tool di sviluppo”
“focalizzare gli sforzi verso un solo sistema grafico”
“licenziare tutti quelli che stavano lavorando ai sistemi
grafici”
• E’ sommerso da risposte entusiastiche:
“Patrick ha scritto quello che mi dicevo ogni
mattina ma avevo paura di ammettere”
Una tipica reazione
“ Patrick ha brutalmente ragione: da qualche parte
abbiamo perso il contatto con quello che significa
produrre un prodotto di qualità”
James Gosling
9
La missione: Produrre “qualcosa”…
• Una proposta:
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Un meeting: “Cosa si fa?”
10
– Innanzitutto una contro-offerta a Naughton che
accetta di restare alla Sun
– Creare un piccolo team ..
“piccolo abbastanza da poter andare a cena in un
ristorante cinese tutti insieme….”
– … tenerne segreta la missione al resto della Sun per
proteggere il team da influenze negative contro le
innovazioni.
11
• Sun aveva già perso la battaglia in corso sui Personal
Computer
• Doveva prepararsi per la prossima..
• Una convinzione sul terreno di battaglia:
La convergenza tra
– le apparecchiature domestiche controllate da
microprocessori
– i computers propriamente detti.
12
L’idea:
– Dicembre 1990: si rinchiudono in 3 (Gosling,
Naughton e Sheridan) in un ufficio fuori dal
campus Sun con “Cokes and Dove bars”
– Ed un milione di dollari da spendere in un anno.
– La prima idea nell’Aprile 1991:
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
L’inizio del progetto Green: l’esilio
• I microprocessori sono ovunque
• I telecomandi sono anche essi ovunque
• Ogni apparecchiatura ha il proprio complicato
telecomando!
• Un telecomando
–
–
–
–
universale
di immediato utilizzo
multimediale
per tutte le apparecchiature domestiche!
13
Il ragionamento di Gosling
• Il settore hardware:
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Il Green Team al lavoro:
14
– La Hammer Technology: si comprano apparecchiature e
vengono smontate
• Studio sulla interfaccia utente:
– giocano ore ed ore a Nintendo
• Il settore software:
– decidono di inventare un nuovo linguaggio!
15
• Un linguaggio per elettrodomestici
– deve essere affidabile
“Come mettere una spina nella presa elettrica..”
– deve essere compatto
“Non c’è tanta memoria in un piccolo apparato..”
– deve essere portabile
“Deve funzionare su diversi processori..”
• Conclusione: il C++ non va bene!
16
E funziona anche!
• “Cokes and Dove Bars” + $1,000,000 =
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Nel 1992….(3 settembre)
17
18
–
–
–
–
–
–
–
–
Cosa c’è “sotto il cofano”? (2)
– Una versione di Unix che in meno di 1Mb ha:
Processore SPARC
Motherboard ripiegata
5’’ touchscreen display
un chip grafico custom a doppio buffer
connessioni remote senza filo a 900Mhz
interfaccia PCMCIA
multimedia audio codec
batteria custom
(continua..)
19
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Cosa c’è “sotto il cofano”?
•
•
•
•
drivers per PCMCIA,
radio networking,
touchscreen, display,
flash RAM file system
– Oak: un linguaggio di programmazione
compatto, sicuro affidabile, distribuito,
interpretato, garbage-collected, multithreaded,
dinamico
– libreria grafica
– una interfaccia grafica che usa animazione
audio e metafore dello spazio virtuale
(continua..)
20
– Un insieme di classi per implementare la
metafora della interfaccia utente a 3D
– Un insieme di applicazioni tra le quali:
• una guida TV
• un telecomando per televisione, VCR
• una lavagna distribuita condivisa via radio
• un agente visivo che guida l’utente
L’entusiasmo per *7….
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Cosa c’è “sotto il cofano”? (3)
Ciao!
• Trattative con
– Mitsubishi (telefoni cellulari, televisioni)
– France Telecom (per il nuovo Minitel)
• Nel novembre 1992:
– La Sun fonda la “First Person Inc.”
– Il progetto Green passa a First Person
– I 14 dipendenti passano a 60….
21
• Nel 93 Mitsubishi e France Telecom si ritirano dalle
trattative
• Il prezzo per un apparato in grado di eseguire
programmi in Oak è stimato a 50$ dalla Sun..
• … circa 50 volte il prezzo che i produttori sono disposti
di solito a pagare.
• E la First Person Inc.?
23
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
“Contrordine! TV-Interattiva!”
E le “docce gelate”...
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
22
• In marzo 93, in Orlando parte un tentativo della
Time Warner di TV interattiva.
• La First Person decide di partecipare con un
device basato su Oak che gestisca:
– immagini
– dati
– soldi (in maniera sicura)
attraverso la rete distribuita.
24
“Contrordine! Videogiochi con CD-ROM!”
• L’appalto viene dato alla Silicon Graphics
• Chairman della SG è Jim Clark
• Il tentativo di TV interattiva con la Time Warner
fallisce nella estate 1993.
• Jim Clark lascia la SG per fondare (94) una società
per entrare nel mercato di una novità: il World
Wide Web..
• E la First Person Inc.?
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
La “Doccia gelata”...
• Trattative con la 3DO per inserire Oak in un
videogioco con lettore CD-ROM
• Ci vogliono solo 10 giorni per portare Oak sul
videogioco 3DO
• ...e 3 mesi di trattative commerciali con 3DO
• …chiuse negativamente di fronte alla richiesta di
3DO di avere l’esclusiva su Oak
• E la First Person Inc.?
25
26
“Contrordine! CD-ROM Interattivi per PC !”
• Il World Wide Web è già diffuso negli USA…
• Nel 1993, Marc Andreessen (NCSA) ha lanciato
Mosaic…
• Più del 50% degli host su Internet è Sun
• Viene fondata da Clark la Netscape
• Patrick Naughton fa 300.000 miglia di volo per cercare
di vendere la tecnologia...
• E la First Person Inc.?
27
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
La situazione nel 1994:
• Nella primavera del 94, First Person Inc viene chiusa
dalla Sun
• Bill Joy (Unix BSD e fondatore Sun) decide con
Gosling che
– Oak è un sistema operativo basato su un linguaggio
– Oak è il prodotto da “vendere”!
28
La gestazione di Java...
• Oak è un nome già soggetto a copyright
• Alternative al nome Java:
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
La nascita di “Java”
– Neon, Lyric, Pepper, Silk
• Joy (20 anni prima) aveva deciso di distribuire i
sorgenti di BSD
• Netscape già stava usando l’approccio
• La Sun decide di distribuire gratis Java!
• Gosling lavora sul linguaggio Java
• Naughton prepara un browser WWW chiamato
WebRunner (poi HotJava)
• In Dicembre 94 una versione alfa viene distribuita
• Il 23 Maggio 1995, Java viene presentato a SunWorld
insieme all’accordo con Netscape per inserire Java nei
suoi browser
29
Organizzazione della lezione
• Java: un linguaggio di programmazione
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Cosa rimane di questo fallimento?
30
31
• Obiettivo:
Introdurre il linguaggio Java ed esaminarne le caratteristiche
che lo rendono particolare
• La genesi di Java
– Caratteristiche peculiari del linguaggio e scelte progettuali
•
•
•
•
Le keyword di Java
Il “dado” delle caratteristiche di Java
Gli strumenti per Java (JDK)
Un primo esempio
32
•
•
•
•
•
Cosa si elimina da C e C++
Di facile apprendimento quindi basato su linguaggi noti
Ma progettato con accento sulla semplicità
Quindi realizzato per sottrazione da linguaggi esistenti
La base è comunque il C++
Ambiente snello:
– Poche centinaia di Kb per interprete, librerie di base
(Graphical User Interface però più ampia)
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è semplice e familiare
Dal C si elimina:
• goto
• struct e union
• header files
• preprocessore
• casting automatico
Dal C++ si elimina:
• ereditarietà multipla
• operator overloading
• funzioni
• puntatori
• allocazione memoria fatta a
carico del programmatore
33
Java è distribuito
• Enfasi sui dati e sui metodi per manipolarli
• Permette produzione:
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è orientato agli oggetti
34
– efficiente
– rapida
di codice
– portabile
– riusabile
35
• Fornisce classi di supporto per
–
–
–
–
–
Datagram (TCP/IP)
sockets
URL
oggetti remoti (Remote Method Invocation)
CORBA
• Di utilizzo nel World Wide Web
– Lato client (browser): applet
– Lato server: servlet
– “Lato” proxy: Web Based Intermediaries di IBM
(Websphere)
36
Java è interpretato
• Obiettivo: obbligare il programmatore a scrivere codice
bug-free:
– Fortemente tipizzato (strongly typed)
• niente casting implicito
–
–
–
–
assenza di puntatori
accessi ad array e stringhe controllati a run-time
garbage collector automatico
trattamento eccezioni interno al linguaggio
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è robusto
• La compilazione in C (o altri linguaggi compilati)
hello.c
#include <stdio.h>
........
/* Prototipi funzioni */
compilatore
file
oggetto
Libreria di Funzioni
I/O standard
a.out
file
eseguibile
linker
stdio.h
gcc hello.c
37
La macchina virtuale Java
• In Java….
Hello.java
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è interpretato
Hello.class
........
........
compilatore
javac Hello.java
38
Java Virtual
Machine
java Hello
39
Un “programma
che esegue
programmi”…
Java Virtual
Machine
Hello.class
40
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è dinamico
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è indipendente dalla architettura
• Tipico ciclo di programmazione (ad esempio C)
Edit
Compila
Link
Execute
• In Java il linking è dinamico ed effettuato dal Class
Loader
• Così si evita il problema della fragilità della
superclasse.
41
La soluzione di Java
• In C++ ogni volta che si modifica una classe, si devono
ricompilare le classi che ereditano
• La compilazione è
– costosa (in termini di tempo di sviluppo)
– complessa (analisi delle dipendenze)
• In Java la classe viene caricata dinamicamente quando
“serve”: a run-time
Compilation-time
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
La fragilità della superclasse
42
Run-time
Java Class
Library
Java Source
Hello.java
Java Compiler
javac
Class Loader
Network
Java
Interpreter
Just-in-time
compiler
Java
Virtual
Machine
Runtime System
Java Bytecodes
Hello.class
Sistema Operativo
Hardware
43
44
Java è sicuro
• Oltre a essere indipendente dalla architettura, Java non
ha altri aspetti dipendenti dalla implementazione
• Hardware:
– dimensioni tipi di dato primitivi
• in C un intero può essere 16, 32, 64 bit
– memorizzazione big endian (Motorola) o little endian (Intel)
• Interfacce grafiche:
– Abstract Window Tools (AWT), Swing
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è portabile
45
–
–
–
–
Regole del linguaggio e compilatore
Bytecode Verifier
Class Loader
Security Manager
• Dalla versione 1.1 classi firmate digitalmente
• Esempi di cose che non sono possibili/permesse
– Overrun dello stack a run-time (worm di Internet)
– Accesso a memoria all’esterno di quella assegnata
– Accesso a file locali da classi caricate via Web
46
I restanti 3 livelli di sicurezza
• La sicurezza del linguaggio:
– La assenza di puntatori non permette di falsificare puntatori
– Il late binding degli oggetti in memoria non permette la
conoscenza della loro allocazione in anticipo
47
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Il primo livello di sicurezza
• Sicurezza attraverso 4 livelli
48
Il Class Loader…
• Non ci siano stack
under/overflow
• Operandi corretti per
opcodes
• Niente casting illegali
• Vengano seguite le
regole di accesso a
membri degli oggetti
• Carica la classe in un
unico namespace che
corrisponde alla
provenienza
• Quindi le classi
built-in non possono
essere rimpiazzate da
altre (come il
Security Manager)
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Il Bytecode Verifier controlla che:
49
Java è multithread
• Implementa una
politica di sicurezza.
• Esempio: la delete di
un file può essere
illegale
• Il Security Manager
viene interpellato
dall’interprete per
ogni azione
potenzialmente
pericolosa.
51
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Il Security Manager
50
• Threads (processi concorrenti) inseriti all’interno del
linguaggio
• Programmazione facilitata
• Uso dei thread in molte situazioni:
– applet
– multimedia presentation (audio+video+etc.)
– Java non supporta I/O non bloccante con notifica: si crea un
thread per ogni canale!
• Possibilità di usare macchine multiprocessore
52
Organizzazione della lezione
• Alcune tecniche:
– il controllo del Bytecode verifier permette all’interprete di
evitare i check a run-time
– Just in Time Compiler: compilazione “on-the-fly” di metodi
di classi in linguaggio macchina reale
• La realtà è che Java è un po’ lentino...
– maggiori considerazioni in seguito…
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Java è ad alte prestazioni
• Obiettivo:
Introdurre il linguaggio Java ed esaminarne le caratteristiche
che lo rendono particolare
• La genesi di Java
– Caratteristiche peculiari del linguaggio e scelte progettuali
•
•
•
•
Le keyword di Java
Il “dado” delle caratteristiche di Java
Gli strumenti per Java (JDK)
Un primo esempio
53
Lanciamo il dado delle caratteristiche di Java..
• Java è un linguaggio di programmazione
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Il whitepaper di Java...
54
55
• Classi Java possono
essere caricate
dinamicamente, anche
dalla rete in maniera da
garantire la sicurezza
56
Lanciamo il dado.. La Affidabilità
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Lanciamo il dado.. La Produttività
• Ambiente di
programmazione che
favorisce il riuso del
software
• Semplice e familiare per
facilitare startup in un
nuovo linguaggio
• Affidabile e sicuro in
tutte le situazioni anche
su piccole
apparecchiature
• Progettato per poter
caricare classi dalla rete
57
Lanciamo il dado.. La Efficienza su rete
• Permette lo sviluppo di
sistemi che possono
essere utilizzati in
ambienti diversi
59
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Lanciamo il dado.. La Eterogeneità
58
• Il multithread permette di
scaricare via rete classi
(piccole) mentre altri
thread “impegnano”
l’utente.
60
La velocità della JVM
• Aspetti contrastanti
• Aggiungiamo anche:
– Interpretato
– Object-Oriented
Garbage Collection
– Portabile
• Esaminiamo le
ottimizzazioni possibili
• Varie comprende
50
45
40
35
30
25
20
15
10
5
0
By
te
co
G de
ar
ba
ge
Th
re
ad
V
ar
ie
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Lanciamo il dado.. La Velocità
–
–
–
–
caricamento classi,
gestione eccezioni,
controllo limite array e stringhe,
conversione in metodi nativi
• Soluzioni:
–
–
–
–
migliorare il codice sorgente
migliorare la compilazione
migliorare la esecuzione
passare al C++ :-)
61
2. Miglioramento del compilatore
• La prima versione del browser HotJava richiedeva
25% del tempo per sincronizzare i thread
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
1. Miglioramento del codice sorgente
62
– una semplice riscrittura ha migliorato le prestazioni del 1015%.
• Letteratura sul Performance tuning in Java
– soluzioni per utilizzare caratteristiche più veloci per
risolvere lo stesso problema
63
• Esistono 3 tipi di “strumenti”
– compilatori di codice sorgente
– ottimizzatori di bytecode
– compilatori in codice nativo
• Just in Time
• compilatori dinamici/autoadaptive
• compilatori nativi statici
• Un programma Java può passare attraverso alcuni di
questi strumenti
64
2.a Compilatori di codice sorgente (b)
• Trasformano sorgenti Java in bytecode
• Alcune esigenze contrastanti:
• Alcune ottimizzazioni possibili (comuni agli ottimizzatori):
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
2.a Compilatori di codice sorgente
– ottimizzare il codice per l’esecuzione richiede tempo durante la
compilazione…
– e genera programmi più efficienti ma che (a volte)
• possono usare maggiori risorse di memoria
• richiedere più tempo per lo startup
• La JVM HotSpot (SUN) offre due tipi di VM:
– la JVM tipo server
• esecuzione efficiente, startup lento, occupazione di memoria maggiore
– la JVM tipo client
• non si effettuano troppe ottimizzazioni sul codice (minore efficienza)
• compilazione veloce e veloce startup e minore uso di risorse di memoria
– Codice più efficiente (divisioni per 2 sostituite da shift)
– Bytecode ottimizzato per la traduzione in linguaggio macchina su
particolari piattaforme
– Rimozione di codice/campi/metodi non utilizzati
– Inlining (sostituzioni di corpi di metodi alle chiamate)
– Loop Unrolling
– Loop-invariant code motion
– Eliminazione tail-recursion
– Eliminazione sottoespressioni comuni
• x= (z/2)-( (z/2) -k)
– Desincronizzazione di metodi
– Eliminazione dei controlli sul range dell’array se l’indice è “Ok”
65
2.c Compilatori Codice Nativo (statici)
• Prendono in input bytecode e restituiscono bytecode più
veloce
• DashO (Preemptive Sol.) incrementa le prestazioni del
30%
• Usano molti strumenti comuni ai compilatori
• Spesso uniti agli obfuscator
– il problema della distribuzione delle applicazioni
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
2.b Ottimizzatori di bytecode
66
67
• Prendono in input bytecode e generano codice nativo
• Il compilatore statico restituisce, quindi codice eseguibile
per la specifica piattaforma
• Un esempio: Excelsior JET
– compila in eseguibili per Microsoft Windows
– precompilando tutte le classi disponibili…
– e compilando “on-the-fly” le classi che si debbano
caricare dinamicamente
68
3. Miglioramento esecuzione:
la Garbage Collection
– traducono (parte del) programma in bytecode in linguaggio
macchina
– vengono eseguiti a run-time dalla JVM
• Just-in-time: traducono subito dopo il caricamento della
classe e poi fanno lavorare la JVM
• Adaptive: Sun (HotSpot), Symantec, Microsoft, Borland
– compilano solo parti delle classi
• quelle usate di frequente
– continuano a compilare se certi metodi vengono richiamati
spesso e non erano stati compilati in precedenza (si adattano al
comportamento del programma)
50
45
40
35
30
25
20
15
10
5
0
By
te
co
G de
ar
ba
ge
Th
re
ad
V
ar
ie
• Compilatori dinamici (Just-in-Time e Adaptive)
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
3. Miglioramento esecuzione
Alcuni algoritmi:
• Mark and Sweep
• periodico,
• elimina oggetti non referenziati
• Garbage Collector generazionali
• suddivisione in 2 classi di età
• “gli oggetti migliori muoiono giovani”
• Possibile il tuning della frequenza:
– fare chiamare il Garbage Collector
quando assolutamente necessario
69
3. Miglioramento esecuzione:
le attività Varie
71
50
45
40
35
30
25
20
15
10
5
0
• Miglioramento della gestione
di eventi
– tra JDK 1.0 e 1.1
– schema model-view-controller
per la gestione della interfaccia
utente
By
te
co
G de
ar
ba
ge
Th
re
ad
V
ar
ie
• Symantec velocizza la JVM
per i thread tra 80 ed il 150%
• Sun mappa i thread Java sui
thread nativi Solaris
• Microsoft mappa i thread Java
sui thread nativi Windows NT
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
50
45
40
35
30
25
20
15
10
5
0
By
te
co
G de
ar
ba
ge
Th
re
ad
V
ar
ie
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
3. Miglioramento esecuzione: la
Gestione dei Thread
70
72
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
• Programmi Java (applet)
possono girare in
browser WWW
• Utile per
– Internet
– Intranet
• Di questo aspetto non
parleremo in questo corso
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Organizzazione della lezione
Lanciamo il dado.. Il World Wide Web
• Obiettivo:
Introdurre il linguaggio Java ed esaminarne le caratteristiche
che lo rendono particolare
• La genesi di Java
– Caratteristiche peculiari del linguaggio e scelte progettuali
•
•
•
•
Le keyword di Java
Il “dado” delle caratteristiche di Java
Gli strumenti per Java (JDK)
Un primo esempio
73
La piattaforma Java
• JDK = Java Development Kit
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Gli strumenti per Java
– prodotti e distribuiti gratuitamente dalla Sun Microsystem
per varie piattaforme
– Versione 1.0.x (1995)
• favorisce la diffusione sui browser
– Versione 1.1.x (1997)
• più efficiente, gestione eventi cambiata
• introduce RMI (Remote Method Invocation)
– Versione 1.2 (1999) = Java 2
– Versione 1.3 (2000)
– Versione 1.4 (2002)
74
75
• Piattaforme:
– J2ME Micro Edition
– J2SE Standard Edition
– J2EE Enterprise Edition
76
Organizzazione della lezione
• Java è facile da imparare
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Alcuni equivoci
– Vastissimo repertorio di classi
• Java è “solo un altro linguaggio”/”il linguaggio”
• Java viene eseguito sul Web
– Anche….
• Java crea problemi di sicurezza
– La giovane età del linguaggio ha implicato rischi
• Javascript ha a che fare con Java (No.)
77
Programmazione Distribuita (2003-2004). Vi.ttorio Scarano
Il primo esempio: il classico “Ciao
Mondo!”
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Ciao!”);
}
}
• Definizione di una classe
• Metodo main
• Per compilare
javac HelloWorld.java
• …che genera il file
HelloWorld.class
• …che viene eseguito da
java HelloWorld
79
• Obiettivo:
Introdurre il linguaggio Java ed esaminarne le caratteristiche
che lo rendono particolare
• La genesi di Java
– Caratteristiche peculiari del linguaggio e scelte progettuali
•
•
•
•
Le keyword di Java
Il “dado” delle caratteristiche di Java
Gli strumenti per Java (JDK)
Un primo esempio
78