Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 1
Vittorio Scarano
Corso di Programmazione DistribuitaLaurea di I livello in Informatica
Università degli Studi di Salerno
Lezione 1Introduzione a Java
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
2
Organizzazione della lezione
• Obiettivo:Introdurre il linguaggio Java ed esaminarne le caratteristiche
che lo rendono particolare
• La genesi di Java
• Le caratteristiche peculiari del linguaggio e le scelte progettuali
• Le keyword di Java
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 2
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
3
Java è...
• Un tipo di caffè
• Un linguaggio di programmazione…
• Una piattaforma di sviluppo…
• Una moda…
• Una storia interessante di …
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
4
Java: la carta di identità
• Genitori: Sun Microsystem• Data di nascita: 23 maggio 1995• Segni particolari:
– Utilizzato nel World Wide Web
• Luoghi frequentati:– Sistemi di middleware– Sistemi embedded– Ambienti a componenti per il calcolo distribuito
Java
Seriamente parlando… Perché Java?
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 3
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
5
Perché Java…
• Frutto dalla esperienza C e C++– Object Oriented Programming(OOP)
– Linguaggio che facilita programmi bug-free
• Indipendente dalla piattaforma
• Ricco di Application Programming Interface (API)– Organizzate in packages
• La presentazione da parte di Sun Microsystem– Un whitepaper con tante keywords
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
6
Il whitepaper di Java...
• Java è un linguaggio di programmazione
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 4
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
7
La preistoria: Il progetto Green
• 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”
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
8
Un giovane progettista della Sun..
• 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– “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”
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 5
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
9
La risposta:
• 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
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
10
Un meeting: “Cosa si fa?”
• Una proposta:– 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.
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 6
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
11
La missione: Produrre “qualcosa”…
• 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.
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
12
L’inizio del progetto Green: l’esilio
– 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:• I microprocessori sono ovunque
• I telecomandi sono anche essi ovunque
• Ogni apparecchiatura ha il proprio complicato telecomando!
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 7
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
13
L’idea:
• Un telecomando– universale
– di immediato utilizzo
– multimediale
– per tutte le apparecchiature domestiche!
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
14
Il Green Team al lavoro:
• Il settore hardware:– 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!
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 8
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
15
Il ragionamento di Gosling
• 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!
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
16
Nel 1992….(3 settembre)
• “Cokes and Dove Bars” + $1,000,000 =
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 9
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
17
E funziona anche!
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
18
Cosa c’è “sotto il cofano”?
– 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..)
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 10
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
19
Cosa c’è “sotto il cofano”? (2)
– Una versione di Unix che in meno di 1Mb ha:• 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..)
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
20
Cosa c’è “sotto il cofano”? (3)
– 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 Ciao!
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 11
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
21
L’entusiasmo per *7….
• 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….
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
22
E le “docce gelate”...
• 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.?
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 12
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
23
“Contrordine! TV-Interattiva!”
• 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.
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
24
La “ Doccia gelata”...
• L’appalto viene dato alla Silicon Graphics
• Chairman della SG è Jim Clark
• Il tentativo di TV interattiva con la Time Warnerfallisce 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" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 13
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
25
“Contrordine! Videogiochi con CD-ROM!”
• 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.?
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
26
La situazione nel 1994:
• 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.?
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 14
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
27
“Contrordine! CD-ROM Interattivi per PC !”
• 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 prodottoda “vendere”!
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
28
La nascita di “Java”
• Oakè un nome già soggetto a copyright
• Alternative al nome 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!
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 15
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
29
La gestazione di 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 SunWorldinsieme all’accordo con Netscape per inserire Java nei suoi browser
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
30
Cosa rimane di questo fallimento?
• Java: un linguaggio di programmazione
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 16
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
31
Java è semplice e familiare
• Di facile apprendimento quindi basato su linguaggi noti
• Ma progettato con accento sulla semplicità
• Quindi realizzato per sottrazioneda linguaggi esistenti
• La base è comunque il C++
• Ambiente snello:– Poche centinaia di Kb per interprete, librerie di base
(Graphical User Interface però più ampia)
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
32
Cosa si elimina da C e C++
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
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 17
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
33
Java è orientato agli oggetti
• Enfasi sui dati e sui metodi per manipolarli
• Permette produzione:– efficiente
– rapida
di codice– portabile
– riusabile
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
34
Java è distribuito
• 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)
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 18
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
35
Java è robusto
• Obiettivo: obbligare il programmatore a scrivere codicebug-free:– Fortemente tipizzato (strongly typed)
• niente casting implicito
– assenza di puntatori
– accessi ad array e stringhe controllati a run-time
– garbage collectorautomatico
– trattamento eccezioni interno al linguaggio
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
36
gcc hello.c
Java è interpretato
• La compilazione in C (o altri linguaggi compilati)
#include <stdio.h>........ file
oggetto
Libreria di Funzioni I/O standard
file eseguibile
compilatore
linker/* Prototipi funzioni */
hello.c
a.out
stdio.h
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 19
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
37
java Hellojavac Hello.java
Java è interpretato
• In Java….
........
compilatore Java VirtualMachine
Hello.java........
Hello.class
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
38
La macchina virtuale Java
Java VirtualMachine
Hello.class
Un “programma che esegue programmi”…
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 20
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
39
Java è indipendente dalla architettura
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
40
Java è dinamico
• Tipico ciclo di programmazione (ad esempio C)
• In Java il linking è dinamico ed effettuato dal Class Loader
• Così si evita il problema della fragilità della superclasse.
Edit Compila Link Execute
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 21
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
41
La fragilità della superclasse
• 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
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
42
La soluzione di Java
Java SourceHello.java
Java BytecodesHello.class
Java Compilerjavac
Compilation-time Run-time Java ClassLibrary
JavaInterpreter
Just-in-timecompiler
Runtime System
Sistema Operativo
Hardware
JavaVirtual
Machine
Class Loader
Network
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 22
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
43
Java è portabile
• 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
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
44
Java è sicuro
• Sicurezza attraverso 4 livelli– 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 (wormdi Internet)
– Accesso a memoria all’esterno di quella assegnata
– Accesso a file locali da classi caricate via Web
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 23
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
45
Il primo livello di sicurezza
• La sicurezza del linguaggio:– La assenza di puntatori non permette di falsificare puntatori
– Il late bindingdegli oggetti in memoria non permette la conoscenza della loro allocazione in anticipo
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
46
I restanti 3 livelli di sicurezza
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 24
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
47
Il Bytecode Verifier controlla che:
• Non ci siano stackunder/overflow
• Operandi corretti per opcodes
• Niente casting illegali
• Vengano seguite le regole di accesso a membri degli oggetti
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
48
Il Class Loader…
• Carica la classe in un unico namespaceche corrisponde alla provenienza
• Quindi le classi built-in non possono essere rimpiazzate da altre (come il Security Manager)
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 25
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
49
Il Security Manager
• 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.
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
50
Java è multithread
• 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
"Programmazione Distribuita" - Prof. Scarano
Laurea in Informatica
A.A. 2002-2003 Università di Salerno 26
Pro
gra
mm
azio
ne D
istr
ibui
ta.
Vi.t
tori
o S
cara
no
51
Java è ad alte prestazioni
• Alcune tecniche:– il controllo del Bytecode verifier permette all’interprete di
evitare i check a run-time
– Just in TimeCompiler: compilazione “on-the-fly” di metodi di classi in linguaggio macchina reale
• La realtà è che Java è un po’ lentino...– maggiori considerazioni in seguito…