110 likes | 254 Views
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)
E N D
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 Rete Loader delle classi Verifica del byte-code Sorgente Java Interprete Compilatore Generatore di codice Ambiente a run-time Byte-code Java Piattaforma hardware
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