2 lucidi per pagina - Dipartimento di Informatica

"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Lezione 1
Introduzione a Java
Vittorio Scarano
Corso di Programmazione Distribuita
Laurea di I livello in Informatica
Università degli Studi di Salerno
Organizzazione della lezione
Programmazione Distribuita. Vi.ttorio Scarano
• 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
2
A.A. 2002-2003 Università di Salerno
1
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
Java è...
•
•
•
•
•
Un tipo di caffè
Un linguaggio di programmazione…
Una piattaforma di sviluppo…
Una moda…
Una storia interessante di …
3
Programmazione Distribuita. Vi.ttorio Scarano
Java: la carta di identità
• 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
A.A. 2002-2003 Università di Salerno
2
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Perché Java…
Programmazione Distribuita. Vi.ttorio Scarano
• 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
5
Il whitepaper di Java...
Programmazione Distribuita. Vi.ttorio Scarano
• Java è un linguaggio di programmazione
6
A.A. 2002-2003 Università di Salerno
3
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
La preistoria: Il progetto Green
Programmazione Distribuita. Vi.ttorio Scarano
• 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”
7
Programmazione Distribuita. Vi.ttorio Scarano
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”
8
A.A. 2002-2003 Università di Salerno
4
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
La risposta:
Programmazione Distribuita. Vi.ttorio Scarano
• 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
Un meeting: “Cosa si fa?”
Programmazione Distribuita. Vi.ttorio Scarano
• 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.
10
A.A. 2002-2003 Università di Salerno
5
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
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.
11
Programmazione Distribuita. Vi.ttorio Scarano
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!
12
A.A. 2002-2003 Università di Salerno
6
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
L’idea:
• Un telecomando
–
–
–
–
universale
di immediato utilizzo
multimediale
per tutte le apparecchiature domestiche!
13
Il Green Team al lavoro:
Programmazione Distribuita. Vi.ttorio Scarano
• 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!
14
A.A. 2002-2003 Università di Salerno
7
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Il ragionamento di Gosling
Programmazione Distribuita. Vi.ttorio Scarano
• 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!
15
Nel 1992….(3 settembre)
Programmazione Distribuita. Vi.ttorio Scarano
• “Cokes and Dove Bars” + $1,000,000 =
16
A.A. 2002-2003 Università di Salerno
8
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
E funziona anche!
17
Programmazione Distribuita. Vi.ttorio Scarano
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..)
18
A.A. 2002-2003 Università di Salerno
9
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Cosa c’è “sotto il cofano”? (2)
Programmazione Distribuita. Vi.ttorio Scarano
– 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..)
19
Programmazione Distribuita. Vi.ttorio Scarano
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!
20
A.A. 2002-2003 Università di Salerno
10
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
L’entusiasmo per *7….
Programmazione Distribuita. Vi.ttorio Scarano
• 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
Programmazione Distribuita. Vi.ttorio Scarano
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.?
22
A.A. 2002-2003 Università di Salerno
11
"Programmazione Distribuita" - Prof.
Scarano
Programmazione Distribuita. Vi.ttorio Scarano
“Contrordine!
Laurea in Informatica
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.
23
Programmazione Distribuita. Vi.ttorio Scarano
La “Doccia gelata”...
• 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.?
24
A.A. 2002-2003 Università di Salerno
12
"Programmazione Distribuita" - Prof.
Scarano
Programmazione Distribuita. Vi.ttorio Scarano
“Contrordine!
Laurea in Informatica
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.?
25
Programmazione Distribuita. Vi.ttorio Scarano
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.?
26
A.A. 2002-2003 Università di Salerno
13
"Programmazione Distribuita" - Prof.
Scarano
Programmazione Distribuita. Vi.ttorio Scarano
“Contrordine!
Laurea in Informatica
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 prodotto da “vendere”!
27
Programmazione Distribuita. Vi.ttorio Scarano
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!
28
A.A. 2002-2003 Università di Salerno
14
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
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 SunWorld
insieme all’accordo con Netscape per inserire Java nei
suoi browser
29
Cosa rimane di questo fallimento?
Programmazione Distribuita. Vi.ttorio Scarano
• Java: un linguaggio di programmazione
30
A.A. 2002-2003 Università di Salerno
15
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
Java è semplice e familiare
•
•
•
•
•
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)
31
Programmazione Distribuita. Vi.ttorio Scarano
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
32
A.A. 2002-2003 Università di Salerno
16
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
Java è orientato agli oggetti
• Enfasi sui dati e sui metodi per manipolarli
• Permette produzione:
– efficiente
– rapida
di codice
– portabile
– riusabile
33
Java è distribuito
Programmazione Distribuita. Vi.ttorio Scarano
• 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)
A.A. 2002-2003 Università di Salerno
34
17
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
Java è robusto
• 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
35
Java è interpretato
Programmazione Distribuita. Vi.ttorio Scarano
• La compilazione in C (o altri linguaggi compilati)
hello.c
#include <stdio.h>
........
compilatore
/* Prototipi funzioni */
file
oggetto
Libreria di Funzioni
I/O standard
a.out
linker
file
eseguibile
stdio.h
gcc hello.c
36
A.A. 2002-2003 Università di Salerno
18
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Java è interpretato
Programmazione Distribuita. Vi.ttorio Scarano
• In Java….
Hello.java
Hello.class
........
........
compilatore
javac Hello.java
Java Virtual
Machine
java Hello
37
Programmazione Distribuita. Vi.ttorio Scarano
La macchina virtuale Java
Un “programma
che esegue
programmi”…
Java Virtual
Machine
Hello.class
38
A.A. 2002-2003 Università di Salerno
19
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
Java è indipendente dalla architettura
39
Java è dinamico
Programmazione Distribuita. Vi.ttorio Scarano
• 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.
40
A.A. 2002-2003 Università di Salerno
20
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
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
41
La soluzione di Java
Programmazione Distribuita. Vi.ttorio Scarano
Compilation-time
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
42
A.A. 2002-2003 Università di Salerno
21
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
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
43
Java è sicuro
Programmazione Distribuita. Vi.ttorio Scarano
• 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 (worm di Internet)
– Accesso a memoria all’esterno di quella assegnata
– Accesso a file locali da classi caricate via Web
A.A. 2002-2003 Università di Salerno
44
22
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Il primo livello di sicurezza
Programmazione Distribuita. Vi.ttorio Scarano
• 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
45
Programmazione Distribuita. Vi.ttorio Scarano
I restanti 3 livelli di sicurezza
46
A.A. 2002-2003 Università di Salerno
23
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Programmazione Distribuita. Vi.ttorio Scarano
Il Bytecode Verifier controlla che:
• Non ci siano stack
under/overflow
• Operandi corretti per
opcodes
• Niente casting illegali
• Vengano seguite le
regole di accesso a
membri degli oggetti
47
Programmazione Distribuita. Vi.ttorio Scarano
Il Class Loader…
• 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)
48
A.A. 2002-2003 Università di Salerno
24
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Il Security Manager
Programmazione Distribuita. Vi.ttorio Scarano
• 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.
49
Programmazione Distribuita. Vi.ttorio Scarano
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
50
A.A. 2002-2003 Università di Salerno
25
"Programmazione Distribuita" - Prof.
Scarano
Laurea in Informatica
Java è ad alte prestazioni
Programmazione Distribuita. Vi.ttorio Scarano
• 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…
51
A.A. 2002-2003 Università di Salerno
26