Corso di ASD: Sistemi Distribuiti (Prof. Scarano)

annuncio pubblicitario
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
Organizzazione della lezione
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Obiettivo:
2: Introduzione a Java
Vittorio Scarano
Algoritmi e Strutture Dati: Sistemi Distribuiti
Corso di Laurea in Informatica
Università degli Studi di Salerno
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
• Il “dado” delle caratteristiche di Java
• Gli strumenti per Java (JDK)
• Un primo esempio
2
Prima di iniziare….
Java è...
– la llezione di martedì viene spostata alle ore 14-16 e nella
aula A10/11
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Aggiornamento sugli orari:
• Quindi le lezioni si tengono:
– martedì ore 14-16 nella aula A10/11
– gioved’ ore 9-11 nella aula D6
•
•
•
•
•
Un tipo di caffè
Un linguaggio di programmazione…
Una piattaforma di sviluppo…
Una moda…
Una storia interessante di …
3
Perché Java…
• Frutto dalla esperienza C e C++
• Genitori: Sun Microsystem
• Data di nascita: 23 maggio 1995
• Segni particolari:
– Utilizzato nel World Wide Web
• Luoghi frequentati:
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Java: la carta di identità
4
Java
– Sistemi di middleware
– Sistemi embedded
– Ambienti a componenti per il calcolo distribuito
– 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
Seriamente parlando… Perché Java?
5
6
1
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
Il whitepaper di Java...
La preistoria: Il progetto Green
• La situazione alla Sun Microsystem nel 90
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Java è un linguaggio di programmazione
– 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
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
• E’ sommerso da risposte entusiastiche:
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Un giovane progettista della Sun..
8
– “far sviluppare la interfaccia utente ad un artista”
– “utilizzare un unico tool di sviluppo”
– “focalizzare gli sforzi verso un solo sistema grafico”
“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à”
– “licenziare tutti quelli che stavano lavorando ai sistemi
grafici”
James Gosling
9
Un meeting: “Cosa si fa?”
10
La missione: Produrre “qualcosa”…
– 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
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Una proposta:
• 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
2
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
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:
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. 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 Green Team al lavoro:
14
Il ragionamento di Gosling
• Un linguaggio per elettrodomestici
– La Hammer Technology: si comprano apparecchiature e
vengono smontate
– deve essere affidabile
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Il settore hardware:
• Studio sulla interfaccia utente:
– giocano ore ed ore a Nintendo
• Il settore software:
– decidono di inventare un nuovo linguaggio!
“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)
16
E funziona anche!
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• “Cokes and Dove Bars” + $1,000,000 =
17
18
3
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
Cosa c’è “sotto il cofano”? (2)
– 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
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Cosa c’è “sotto il cofano”?
– Una versione di Unix che in meno di 1Mb comprende
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..)
(continua..)
19
L’entusiasmo per *7….
• Trattative con
– 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
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Cosa c’è “sotto il cofano”? (3)
20
Ciao!
– 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
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
“Contrordine!
E le “docce gelate”...
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
22
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.
24
4
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
“Contrordine!
La “Doccia gelata”...
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• 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.?
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
26
“Contrordine!
•
•
•
•
•
Il World Wide Web è già diffuso…
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...
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
La situazione nel 1994:
• E la First Person Inc.?
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
La nascita di “Java”
28
La gestazione di Java...
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• 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!
29
• 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
30
5
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
Cosa rimane di questo fallimento?
Java è semplice e familiare
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Java: un linguaggio di programmazione
•
•
•
•
•
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
•
•
•
•
•
goto
struct e union
header files
preprocessore
casting automatico
•
•
•
•
•
Java è orientato agli oggetti
ereditarietà multipla
operator overloading
funzioni
puntatori
allocazione memoria fatta a
carico del programmatore
• Enfasi sui dati e sui metodi per manipolarli
• Permette produzione:
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Cosa si elimina da C e C++
32
– efficiente
– rapida
di codice
– portabile
– riusabile
33
Java è distribuito
34
Java è robusto
• Obiettivo: obbligare il programmatore a scrivere codice
bug-free:
– Datagram (TCP/IP)
– sockets
– URL
– oggetti remoti (Remote Method Invocation)
– CORBA
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Fornisce classi di supporto per
• Di utilizzo nel World Wide Web
– Lato client (browser): applet
– Lato server: servlet
– “Lato” proxy: Web Based Intermediaries di IBM
(Websphere)
35
– 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
36
6
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
Java è interpretato
Java è interpretato
• La compilazione in C (o altri linguaggi compilati)
• In Java….
#include <stdio.h>
........
compilatore
file
oggetto
Libreria di Funzioni
I/O standard
/* Prototipi funzioni */
a.out
file
eseguibile
linker
stdio.h
gcc hello.c
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
hello.c
Hello.java
Hello.class
........
........
compilatore
Java Virtual
Machine
javac Hello.java
37
La macchina virtuale Java
38
Java è indipendente dalla architettura
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Un “programma
che esegue
programmi”…
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
java Hello
Java Virtual
Machine
Hello.class
39
Java è dinamico
40
La fragilità della superclasse
Edit
Compila
Link
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Tipico ciclo di programmazione (ad esempio C)
Execute
• In Java il linking è dinamico ed effettuato dal Class
Loader
• Così si evita il problema della fragilità della
superclasse.
41
• 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 quando “serve” (a runtime)
42
7
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
La soluzione di Java
Java è portabile
Compilation-time
Run-time
Java Class
Library
Hello.java
Java Compiler
javac
Class Loader
Network
Java
Interpreter
Just-in-time
compiler
Java
Virtual
Machine
Runtime System
Java Bytecodes
Hello.class
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Java Source
• 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
Sistema Operativo
Hardware
43
Java è sicuro
44
Il primo livello di sicurezza
• La sicurezza del linguaggio:
– Regole del linguaggio e compilatore
– Bytecode Verifier
– Class Loader
– Security Manager
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• Sicurezza attraverso 4 livelli
• 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
– 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
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Il Bytecode Verifier controlla che:
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
I restanti 3 livelli di sicurezza
46
47
• Non ci siano stack
under/overflow
• Operandi corretti per
opcodes
• Niente casting illegali
• Vengano seguite le regole
di accesso a membri degli
oggetti
48
8
Corso di ASD: Sistemi Distribuiti (Prof.
Scarano)
14/03/2002
Il Security Manager
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
• 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)
• 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.
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Il Class Loader…
49
Java è ad alte prestazioni
• Threads (processi concorrenti) inseriti all’interno del
linguaggio
• Programmazione facilitata
• Uso dei thread in molte situazioni:
• Alcune tecniche:
– applet
– multimedia presentation (audio+video+etc.)
– Java non supporta I/O non bloccante con notifica: si crea un
thread per ogni canale!
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
ASD: Sistemi Distribuiti. Vi.ttorio Scarano
Java è multithread
50
– 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...
• Possibilità di usare macchine multiprocessore
51
52
9
Scarica