Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del...

12
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezion e 2 1 JAVA: obiettivi di progetto del linguaggio ta storica : Il linguaggio JAVA (inizialmente Oak) è stato prog in origine per programmare i microchip di elettrodomestici REQUISITI PROGETTUALI PRINCIPALI familiare object-oriented robusto efficiente sicuro portabile semplice concorrente dinamico distribuito

Transcript of Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del...

Page 1: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

1

JAVA: obiettivi di progetto del linguaggio

Nota storica: Il linguaggio JAVA (inizialmente Oak) è stato progettato in origine per programmare i microchip di elettrodomestici

REQUISITI PROGETTUALI PRINCIPALI

• familiare

• object-oriented

• robusto

• efficiente

• sicuro

• portabile

• semplice

• concorrente

• dinamico

• distribuito

Page 2: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

2

JAVA ha una sintassi familiare

-I progettisti di JAVA sapevano che un nuovo linguaggio non avrebbe preso piede se non avesse avesse avuto una sintassi familiare ai programmatori professionisti, così scelsero di utilizzare quanto più possibile una sintassisimile al C++

- JAVA non è comunque la versione “per Internet” di C++

-E’ un linguaggio fondato sulle necessità e sulle esperienze di “veri” programmatori

Page 3: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

3

JAVA è object-oriented

-JAVA risponde all’esigenza di realizzare sistemi software facili da modificare e manutenere

- JAVA consente alti livelli di riusabilità del codice

- JAVA fornisce un’arsenale di classi per lo sviluppo di interfacce utente e di applicazioni Internet impiegabili con relativa facilità

Page 4: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

4

JAVA è robusto

-Una delle principali fonti di crash dei programmi scritti in C/C++ è l’uso scorretto dell’aritmetica dei puntatori: JAVA non fornisce tipi puntatori, né tanto meno l’aritmetica dei puntatori

Page 5: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

5

JAVA è efficiente

-Sebbene l’eseguibile prodotto dal compilatore JAVA sia una sequenza di comandi per un interprete, ciò rende i programmi JAVA mediamente non più di 10 volte più lenti di corrispondenti programmi C++. -La perdita di efficienza che ne deriva è più che accettabile per il tipo di applicazioni cui è solitamente applicato JAVA, tipicamente programmi altamente interattivi

-Altri linguaggi interpretati quali BASIC, Tcl, PERL, presentano livelli di inefficienza tali da limitarne decisamente la possibilità di utilizzo

Page 6: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

6

JAVA è sicuro

-Il rischio di infezione virale o di introduzione di “cavalli di Troia” nell’eseguire sul proprio computer programmi convenzionali di provenienza incerta è molto alto. Ciò rendeva la pratica di “scaricarsi” programmi eseguibili da Internet qualcosa di poco sicuro e da evitare -JAVA offre un ambiente di esecuzione sicuro confinando il programma scaricato da Internet in un “firewall” da cui non è possibile accedere ad altre parti del computer

Page 7: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

7

JAVA è portabile (indipendente dalla piattaforma)

-Programmi scritti in linguaggi convenzionali quali il C e il C++ sono, almeno in teoria, portabili da una piattaforma all’altra, a patto di ricompilarli per la nuova piattaforma

-Dei programmi scaricabili da Internet si ha a disposizione spesso solo l’eseguibile, specifico per ciascun tipo di CPU se si tratta di programmi scritti in C/C++

-Se pure fosse disponibile il sorgente del programma, saremmo costretti a ricompilarlo prima di poterlo eseguire - JAVA: la magia del Bytecode

Page 8: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

8

JAVA è portabile: bytecode e macchina virtuale

Codice sorgente

CompilatoreCodice oggetto

CPUCompilatore convenzionale

Codice sorgente

Compilatore Bytecode

Macchina virtualeper computer A

Compilatore JAVA

Macchina virtualeper computer B

Macchina virtualeper computer C

Page 9: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

9

JAVA è semplice

-JAVA è facile da imparare e da impiegare in maniera produttiva, soprattutto se si conosce la filosofia di fondo della programmazione a oggetti e/o il linguaggio C++

-Le caratteristiche più complesse di C++ sono state escluse da JAVA, oppure realizzate in maniera più semplice

-JAVA non comprende caratteristiche insolite o sorprendenti: esiste sempre un numero ridotto di modi ben chiari e definiti per eseguire un determinato compito

-A differenza di altri linguaggi sovraccarichi di caratteristiche (esempio, ADA), JAVA ha un numero minimo di caratteristiche di base, estensibili se necessario con l’uso di librerie

Page 10: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

10

JAVA è concorrente

-JAVA fornisce gli strumenti per gestire flussi di controllo concorrenti: i Thread e i meccanismi di sincronizzazione

-L’approccio facile alla concorrenza offerto da JAVA permette di concentrarsi sul comportamento specifico del programma, piuttosto che sul come realizzare e gestire il mutlitasking

Page 11: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

11

JAVA è dinamico

- I programmi JAVA gestiscono estensivamente informazioni di tipo run-time per l’accesso agli oggetti durante l’esecuzione (es. binding dinamico)

Page 12: Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.

Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2

12

JAVA è distribuito

- JAVA gestisce i protocolli TCP/IP: accedere ad una risorsa tramite un URL è del tutto analogo all’accedere a un file

- Invio di messaggi remoti: programmazione client/server