CAPITOLO 2

11
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA

description

CAPITOLO 2. INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA. IL LINGUAGGIO JAVA. Semplice ed estensibile (OO) Distribuito Interpretato Robusto Sicuro Architetturalmente neutrale Portabile A elevate prestazioni Concorrente (multithreaded) - PowerPoint PPT Presentation

Transcript of CAPITOLO 2

Page 1: CAPITOLO 2

CAPITOLO 2

INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA

Page 2: CAPITOLO 2

IL LINGUAGGIO JAVA

• Semplice ed estensibile (OO)

• Distribuito

• Interpretato

• Robusto

• Sicuro

• Architetturalmente neutrale

• Portabile

• A elevate prestazioni

• Concorrente (multithreaded)

• Dinamico

Page 3: CAPITOLO 2

SEMPLICE/ESTENSIBILE (OO)

• Sintassi simile a C e C++ (facile da imparare)

• Elimina i costrutti più "pericolosi" di C e C++– aritmetica dei puntatori

– strutture (struct)

– definizione di tipi (typedef)

– preprocessore (#define)

– (de)allocazione esplicita della memoria

• Aggiunge garbage collection (GC) automatica

• Conserva la tecnologia OO di base di C++

• Rivisita C++ in alcuni aspetti (W.Joy: C++--==)

• Interprete completo occupa 215 KB di RAM

Page 4: CAPITOLO 2

DISTRIBUITO E NEUTRALE

• Incorpora molte funzionalità di rete (TCP/IP)

• Comprende librerie di livello superiore (HTTP)

• Rete facilmente accessibile (come i file locali)

• Compilatore produce codice di tipo byte-code

• Byte-code indipendente da architettura HW

• Codice eseguibile su molte piattaforme HW

• Sviluppo: Solaris (SPARC), Win95 e NT (Intel)

• Disponibilità: le principali piattaforme HW/SW

Page 5: CAPITOLO 2

FLUSSO DEL CODICE

Compilatore

Byte-codeJava

Rete

Piattaforma hardware

Loaderdelle classi

Interprete

Ambientea run-time

Verifica delbyte-code

Generatoredi codice

SorgenteJava

Page 6: CAPITOLO 2

ROBUSTO

• Rilevamento errori (compile-time e run-time)

• Type-checking (compile-time e run-time)

• Mascheramento dei puntatori all'utente

• Impossibilità di fare "casting" di puntatori

• Controllo automatico dei puntatori nulli

• Controllo automatico degli indici degli array

• Gestione delle eccezioni da parte dell'utente

• Verifica del byte-code prima dell'esecuzione

• Gestione della memoria (allocazione & GC)

Page 7: CAPITOLO 2

SICURO

• Dimostratore della correttezza del byte-code

• Rispetto garantito dei limiti dello stack

• Correttezza dei parametri delle istruzioni

• Legalità dell'accesso ai campi degli oggetti– pubblici

– privati

– protetti

• Legalità di tutte le conversioni di tipo

• In particolare, impossibilità di convertire numeri a puntatori, etc.

Page 8: CAPITOLO 2

PORTABILE, INTERPRETATO E A ELEVATE PRESTAZIONI

• Formato dei dati specificato nei dettagli (p.es. gli interi sono di 32 bit e in complemento a 2)

• Primitive grafiche astratte facilmente portabili agli ambienti Unix, Windows e Macintosh

• Interpretazione abbrevia il ciclo di sviluppo

• Circa 300.000 funcalls/sec (SPARCstation10)

• Traduzione a run-time di byte-code in codice macchina fornirà prestazioni simili a C e C++

Page 9: CAPITOLO 2

CONCORRENTE E DINAMICO

• Multithreading parte integrante del linguaggio

• Applicazioni interattive più facili a scriversi

• Migliore "reattività" (anche se non real-time)

• Esempio: caricamento asincrono di immagini nei browser di rete riduce i tempi di attesa

• Codice eseguibile anche in assenza di moduli

• Nuove release di moduli usabili a parità di API

• Nuovi protocolli caricabili da rete (download)

• Browser non più "centralisti" ma "federalisti"

Page 10: CAPITOLO 2

BROWSER "FEDERALISTA"

• Client: richiesta oggetto da parte utente

• Rete: trasferimento richiesta al server

• Server: reperimento oggetto nel database

• Rete: trasferimento oggetto al client

• Client: rilevamento oggetto di tipo ignoto

• Rete: trasferimento informativa al server

• Server: reperimento codice Java adeguato

• Rete: trasferimento codice Java al client

• Client: visualizzazione oggetto richiesto

Page 11: CAPITOLO 2

L'AMBIENTE HOTJAVA

• Browser abilitato all'impiego di Java

• Manipola URL tradizionali

• Decodifica pagine HTML tradizionali

• Attiva programmi Java riferiti da pagine HTML

• Programmi Java attivabili non solo via HTML

• Quasi tutti i browser oggi sono Java-enabled

• Gli altri browser ignorano i link a oggetti Java