Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita....

26
"Programmazione Distribuita" - Prof. Scarano Laurea in Informatica A.A. 2002-2003 Università di Salerno 1 Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 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

Transcript of Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita....

Page 1: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 2: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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?

Page 3: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 4: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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”

Page 5: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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.

Page 6: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

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

Page 7: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

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

Page 8: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il 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 =

Page 9: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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..)

Page 10: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

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

Page 11: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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.?

Page 12: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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.?

Page 13: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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.?

Page 14: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

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

Page 15: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 16: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 17: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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)

Page 18: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 19: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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”…

Page 20: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 21: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 22: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 23: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 24: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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)

Page 25: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

"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

Page 26: Lezione 1 Introduzione a Java · Lezione 1 Introduzione a Java Programmazione Distribuita. Vi.ttorio Scarano 2 Organizzazione della lezione • Obiettivo: Introdurre il linguaggio

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