CAPITOLO 2
description
Transcript of CAPITOLO 2
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)
• Dinamico
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
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
FLUSSO DEL CODICE
Compilatore
Byte-codeJava
Rete
Piattaforma hardware
Loaderdelle classi
Interprete
Ambientea run-time
Verifica delbyte-code
Generatoredi codice
SorgenteJava
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)
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.
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++
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"
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
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