Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a...

20
Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno Lezione 1 Lezione 1 Introduzione a Java Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della lezione Organizzazione della lezione • 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 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 3 Java è... Java è... 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 4 Java: la carta di identità 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?

Transcript of Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a...

Page 1: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Vittorio Scarano

Corso di Programmazione Distribuita (2003-2004)

Laurea di I livello in Informatica

Università degli Studi di Salerno

Lezione 1Lezione 1Introduzione a JavaIntroduzione a Java

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

2

Organizzazione della lezioneOrganizzazione della lezione

• 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

3

Java è...Java è...

• Un tipo di caffè

• Un linguaggio di programmazione…

• Una piattaforma di sviluppo…

• Una moda…

• Una storia interessante di …

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

4

Java: la carta di identità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?

Page 2: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

5

Perché Perché Java…Java…

• Frutto dalla esperienza C e C++–– OObject OOriented PProgramming (OOPOOP)

– Linguaggio che facilita programmi bug-free

• Indipendente dalla piattaforma

• Ricco di AApplication PProgramming IInterface (APIAPI)– Organizzate in packages

• La presentazione da parte di Sun Microsystem– Un whitepaper con tante keywords

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

6

Il Il whitepaperwhitepaper di Java...di Java...

• Java è un linguaggio di programmazione

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

7

Organizzazione della lezioneOrganizzazione della lezione

• 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 Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

8

La preistoria: Il progetto GreenLa 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”

Page 3: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

9

Un giovane progettista della Un giovane progettista della SunSun....

• 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” P

rogr

amm

azio

ne D

istr

ibui

ta (

2003

-200

4).

Vi.t

tori

oSc

aran

o

10

La risposta: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

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

11

Un meeting: “Cosa si fa?”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.

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

12

La missione: Produrre “La missione: Produrre “qualcosaqualcosa”…”…

• 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 La convergenza tra

–– le apparecchiature domestiche controllate da le apparecchiature domestiche controllate da microprocessori microprocessori

–– i i computerscomputers propriamente detti.propriamente detti.

Page 4: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

13

L’inizio del progetto Green: l’esilioL’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! P

rogr

amm

azio

ne D

istr

ibui

ta (

2003

-200

4).

Vi.t

tori

oSc

aran

o

14

L’idea: L’idea:

• Un telecomando– universale

– di immediato utilizzo

– multimediale

– per tutte le apparecchiature domestiche!

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

15

Il Green Team al lavoro: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!

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

16

Il ragionamento di Il ragionamento di GoslingGosling

• 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!

Page 5: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

17

Nel 1992….(3 settembre)Nel 1992….(3 settembre)

• “Cokes and Dove Bars” + $1,000,000 =

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

18

E funziona anche!E funziona anche!P

rogr

amm

azio

ne D

istr

ibui

ta (

2003

-200

4).

Vi.t

tori

oSc

aran

o

19

Cosa c’è “Cosa c’è “sotto il cofanosotto 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..)

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

20

Cosa c’è “Cosa c’è “sotto il cofanosotto il cofano”? (2)”? (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..)

Page 6: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

21

Cosa c’è “Cosa c’è “sotto il cofanosotto il cofano”? (3)”? (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!

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

22

L’entusiasmo per *7…. 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

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

23

E le “E le “docce gelate”...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.?

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

24

““Contrordine! TVContrordine! TV--Interattiva!”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.

Page 7: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

25

La “La “Doccia gelataDoccia 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.?

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

26

““Contrordine! Videogiochi con CDContrordine! Videogiochi con CD--ROM!”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

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

27

La situazione nel 1994: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.? Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

28

““Contrordine!Contrordine! CDCD--ROM Interattivi per PC !”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”!

Page 8: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

29

La nascita di “Java”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!

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

30

La gestazione di Java...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

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

31

Cosa rimane di questo fallimento?Cosa rimane di questo fallimento?

• Java: un linguaggio di programmazione

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

32

Organizzazione della lezioneOrganizzazione della lezione

• 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

Page 9: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

33

Java è semplice e familiareJava è 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)

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

34

Cosa si elimina da C e C++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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

35

Java è orientato agli oggettiJava è orientato agli oggetti

• Enfasi sui dati e sui metodi per manipolarli

• Permette produzione:– efficiente

– rapida

di codice– portabile

– riusabile

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

36

Java è distribuitoJava è 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)

Page 10: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

37

Java è robustoJava è 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

38

gcc hello.c

Java è interpretatoJava è 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

39

java Hellojavac Hello.java

Java è interpretatoJava è interpretato

• In Java….

........

compilatore Java VirtualMachine

Hello.java........

Hello.class

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

40

La macchina virtuale JavaLa macchina virtuale Java

Java VirtualMachine

Hello.class

Un “programma che esegue programmi”…

Page 11: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

41

Java è indipendente dalla architetturaJava è indipendente dalla architettura

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

42

Java è dinamicoJava è 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

43

La fragilità della superclasseLa 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

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

44

La soluzione di JavaLa 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

Page 12: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

45

Java è portabileJava è 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

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

46

Java è sicuroJava è 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 (worm di Internet)

– Accesso a memoria all’esterno di quella assegnata

– Accesso a file locali da classi caricate via Web

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

47

Il primo livello di sicurezzaIl primo livello 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

48

I restanti 3 livelli di sicurezzaI restanti 3 livelli di sicurezza

Page 13: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

49

Il Il BytecodeBytecode VerifierVerifier controlla che: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

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

50

Il Class Il Class Loader…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)

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

51

Il Il SecuritySecurity ManagerManager

• 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. P

rogr

amm

azio

ne D

istr

ibui

ta (

2003

-200

4).

Vi.t

tori

oSc

aran

o

52

Java è Java è multithreadmultithread

• 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

Page 14: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

53

Java è ad alte prestazioniJava è ad alte prestazioni

• 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…

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

54

Organizzazione della lezioneOrganizzazione della lezione

• 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

55

Il Il whitepaperwhitepaper di Java...di Java...

• Java è un linguaggio di programmazione

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

56

Lanciamo il dado delle caratteristiche di Java..Lanciamo il dado delle caratteristiche di Java..

• Classi Java possono essere caricate dinamicamente, anche dalla rete in maniera da garantire la sicurezza

Page 15: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

57

Lanciamo il dado.. La ProduttivitàLanciamo il dado.. La Produttività

• Ambiente di programmazione che favorisce il riuso del software

• Semplice e familiare per facilitare startup in un nuovo linguaggio

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

58

Lanciamo il dado.. La AffidabilitàLanciamo il dado.. La Affidabilità

• Affidabile e sicuro in tutte le situazioni anche su piccole apparecchiature

• Progettato per poter caricare classi dalla rete

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

59

Lanciamo il dado.. La EterogeneitàLanciamo il dado.. La Eterogeneità

• Permette lo sviluppo di sistemi che possono essere utilizzati in ambienti diversi

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

60

Lanciamo il dado.. La Efficienza su reteLanciamo il dado.. La Efficienza su rete

• Il multithread permette di scaricare via rete classi (piccole) mentre altri thread “impegnano” l’utente.

Page 16: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

61

Lanciamo il dado.. La VelocitàLanciamo il dado.. La Velocità

• Aspetti contrastanti

• Aggiungiamo anche:– Interpretato

– Object-OrientedGarbage Collection

– Portabile

• Esaminiamo le ottimizzazioni possibili

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

62

La velocità della JVMLa velocità della JVM

• Varie comprende – 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++ :-)

05

101520253035404550

Bytec

ode

Gar

bage

Threa

d Var

ie

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

63

1. Miglioramento del codice sorgente1. Miglioramento del codice sorgente

• La prima versione del browser HotJava richiedeva 25% del tempo per sincronizzare i thread– una semplice riscrittura ha migliorato le prestazioni del 10-

15%.

• Letteratura sul Performance tuning in Java– soluzioni per utilizzare caratteristiche più veloci per

risolvere lo stesso problema

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

64

2. Miglioramento del compilatore2. Miglioramento del compilatore

• 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

Page 17: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

65

2.a Compilatori di codice sorgente2.a Compilatori di codice sorgente

• Trasformano sorgenti Java in bytecode• Alcune esigenze contrastanti:

– ottimizzare il codice per l’esecuzione richiede tempo durante lacompilazione…

– 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

66

2.a Compilatori di codice sorgente (b)2.a Compilatori di codice sorgente (b)

• Alcune ottimizzazioni possibili (comuni agli ottimizzatori):– 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”

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

67

2.b Ottimizzatori di 2.b Ottimizzatori di bytecodebytecode

• 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

68

2.c Compilatori Codice Nativo (statici)2.c Compilatori Codice Nativo (statici)

• 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

Page 18: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

69

3. Miglioramento esecuzione 3. Miglioramento esecuzione

• Compilatori dinamici (Just-in-Time e Adaptive) – 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 alcomportamento del programma)

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

70

3. Miglioramento esecuzione: 3. Miglioramento esecuzione: la la GarbageGarbage CollectionCollection

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

05

101520253035404550

Bytec

ode

Gar

bage

Threa

d Var

ie

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

71

3. Miglioramento esecuzione: 3. Miglioramento esecuzione: la la Gestione dei Gestione dei ThreadThread

• 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 0

5101520253035404550

Bytec

ode

Gar

bage

Threa

d Var

ie

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

72

3. Miglioramento esecuzione:3. Miglioramento esecuzione:le attività Variele attività Varie

• Miglioramento della gestione di eventi – tra JDK 1.0 e 1.1

– schema model-view-controllerper la gestione della interfaccia utente

05

101520253035404550

Bytec

ode

Gar

bage

Threa

d Var

ie

Page 19: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

73

Lanciamo il dado.. Il World Lanciamo il dado.. Il World WideWide WebWeb

• Programmi Java (applet) possono girare in browser WWW

• Utile per – Internet

– Intranet

• Di questo aspetto non parleremo in questo corso

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

74

Organizzazione della lezioneOrganizzazione della lezione

• 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

75

Gli strumenti per JavaGli strumenti per Java

• JDK = Java Development Kit– 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)

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

76

La piattaforma JavaLa piattaforma Java

• Piattaforme: – J2ME Micro Edition

– J2SE Standard Edition

– J2EE Enterprise Edition

Page 20: Lezione 1 Introduzione a Java - UNISAvitsca/PD/PD0304/Pdf/PDlez01.pdf · Lezione 1 Introduzione a Java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2 Organizzazione della

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

77

Alcuni equivociAlcuni equivoci

• Java è facile da imparare– 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.)

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

78

Organizzazione della lezioneOrganizzazione della lezione

• 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

Pro

gram

maz

ione

Dis

trib

uita

(20

03-2

004)

. V

i.tto

rio

Scar

ano

79

public class HelloWorld {public static void main(String[] args) {

System.out.println(“Ciao!”);}

}

Il primo esempio: il classico “Ciao Il primo esempio: il classico “Ciao Mondo!”Mondo!”

• Definizione di una classe

• Metodo main

• Per compilarejavac HelloWorld.java

• …che genera il fileHelloWorld.class

• …che viene eseguito dajava HelloWorld

HelloWorld.java