Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Organizzazione della lezione Lezione 1 Introduzione a Java Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno • Obiettivo: Introdurre il linguaggio Java ed esaminarne le caratteristiche che lo rendono particolare • La genesi di Java – Caratteristiche peculiari del linguaggio e scelte progettuali • • • • Le keyword di Java Il “dado” delle caratteristiche di Java Gli strumenti per Java (JDK) Un primo esempio 2 • • • • • Java: la carta di identità Un tipo di caffè Un linguaggio di programmazione… Una piattaforma di sviluppo… Una moda… Una storia interessante di … Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è... 3 • Genitori: Sun Microsystem • Data di nascita: 23 maggio 1995 • Segni particolari: – Utilizzato nel World Wide Web • Luoghi frequentati: Java – Sistemi di middleware – Sistemi embedded – Ambienti a componenti per il calcolo distribuito Seriamente parlando… Perché Java? 4 Il whitepaper di Java... • Frutto dalla esperienza C e C++ Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Perché Java… – Object Oriented Programming (OOP OOP) – Linguaggio che facilita programmi bug-free • Indipendente dalla piattaforma • Ricco di Application Programming Interface (API) API – Organizzate in packages • La presentazione da parte di Sun Microsystem – Un whitepaper con tante keywords • Java è un linguaggio di programmazione 5 La preistoria: Il progetto Green • Obiettivo: Introdurre il linguaggio Java ed esaminarne le caratteristiche che lo rendono particolare • La genesi di Java – Caratteristiche peculiari del linguaggio e scelte progettuali • • • • Le keyword di Java Il “dado” delle caratteristiche di Java Gli strumenti per Java (JDK) Un primo esempio 7 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Organizzazione della lezione 6 • 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” 8 La risposta: • 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 – – – – Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Un giovane progettista della Sun.. “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” • 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 9 La missione: Produrre “qualcosa”… • Una proposta: Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Un meeting: “Cosa si fa?” 10 – 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. 11 • 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. 12 L’idea: – 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: Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano L’inizio del progetto Green: l’esilio • I microprocessori sono ovunque • I telecomandi sono anche essi ovunque • Ogni apparecchiatura ha il proprio complicato telecomando! • Un telecomando – – – – universale di immediato utilizzo multimediale per tutte le apparecchiature domestiche! 13 Il ragionamento di Gosling • Il settore hardware: Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Il Green Team al lavoro: 14 – 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! 15 • 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! 16 E funziona anche! • “Cokes and Dove Bars” + $1,000,000 = Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Nel 1992….(3 settembre) 17 18 – – – – – – – – Cosa c’è “sotto il cofano”? (2) – Una versione di Unix che in meno di 1Mb ha: 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..) 19 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Cosa c’è “sotto il cofano”? • • • • 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..) 20 – 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 L’entusiasmo per *7…. Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Cosa c’è “sotto il cofano”? (3) Ciao! • 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…. 21 • 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.? 23 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano “Contrordine! TV-Interattiva!” E le “docce gelate”... Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 22 • 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. 24 “Contrordine! Videogiochi con CD-ROM!” • L’appalto viene dato alla Silicon Graphics • Chairman della SG è Jim Clark • Il tentativo di TV interattiva con la Time Warner fallisce 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.? Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano La “Doccia gelata”... • 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.? 25 26 “Contrordine! CD-ROM Interattivi per PC !” • 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.? 27 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano La situazione nel 1994: • 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 prodotto da “vendere”! 28 La gestazione di Java... • Oak è un nome già soggetto a copyright • Alternative al nome Java: Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano La nascita di “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! • 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 SunWorld insieme all’accordo con Netscape per inserire Java nei suoi browser 29 Organizzazione della lezione • Java: un linguaggio di programmazione Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Cosa rimane di questo fallimento? 30 31 • Obiettivo: Introdurre il linguaggio Java ed esaminarne le caratteristiche che lo rendono particolare • La genesi di Java – Caratteristiche peculiari del linguaggio e scelte progettuali • • • • Le keyword di Java Il “dado” delle caratteristiche di Java Gli strumenti per Java (JDK) Un primo esempio 32 • • • • • Cosa si elimina da C e C++ Di facile apprendimento quindi basato su linguaggi noti Ma progettato con accento sulla semplicità Quindi realizzato per sottrazione da linguaggi esistenti La base è comunque il C++ Ambiente snello: – Poche centinaia di Kb per interprete, librerie di base (Graphical User Interface però più ampia) Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è semplice e familiare 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 33 Java è distribuito • Enfasi sui dati e sui metodi per manipolarli • Permette produzione: Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è orientato agli oggetti 34 – efficiente – rapida di codice – portabile – riusabile 35 • 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) 36 Java è interpretato • Obiettivo: obbligare il programmatore a scrivere codice bug-free: – Fortemente tipizzato (strongly typed) • niente casting implicito – – – – assenza di puntatori accessi ad array e stringhe controllati a run-time garbage collector automatico trattamento eccezioni interno al linguaggio Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è robusto • La compilazione in C (o altri linguaggi compilati) hello.c #include <stdio.h> ........ /* Prototipi funzioni */ compilatore file oggetto Libreria di Funzioni I/O standard a.out file eseguibile linker stdio.h gcc hello.c 37 La macchina virtuale Java • In Java…. Hello.java Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è interpretato Hello.class ........ ........ compilatore javac Hello.java 38 Java Virtual Machine java Hello 39 Un “programma che esegue programmi”… Java Virtual Machine Hello.class 40 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è dinamico Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è indipendente dalla architettura • Tipico ciclo di programmazione (ad esempio C) Edit Compila Link Execute • In Java il linking è dinamico ed effettuato dal Class Loader • Così si evita il problema della fragilità della superclasse. 41 La soluzione di Java • 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 Compilation-time Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano La fragilità della superclasse 42 Run-time Java Class Library Java Source Hello.java Java Compiler javac Class Loader Network Java Interpreter Just-in-time compiler Java Virtual Machine Runtime System Java Bytecodes Hello.class Sistema Operativo Hardware 43 44 Java è sicuro • 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 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è portabile 45 – – – – 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 (worm di Internet) – Accesso a memoria all’esterno di quella assegnata – Accesso a file locali da classi caricate via Web 46 I restanti 3 livelli di sicurezza • La sicurezza del linguaggio: – La assenza di puntatori non permette di falsificare puntatori – Il late binding degli oggetti in memoria non permette la conoscenza della loro allocazione in anticipo 47 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Il primo livello di sicurezza • Sicurezza attraverso 4 livelli 48 Il Class Loader… • Non ci siano stack under/overflow • Operandi corretti per opcodes • Niente casting illegali • Vengano seguite le regole di accesso a membri degli oggetti • Carica la classe in un unico namespace che corrisponde alla provenienza • Quindi le classi built-in non possono essere rimpiazzate da altre (come il Security Manager) Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Il Bytecode Verifier controlla che: 49 Java è multithread • 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. 51 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Il Security Manager 50 • 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 52 Organizzazione della lezione • Alcune tecniche: – il controllo del Bytecode verifier permette all’interprete di evitare i check a run-time – Just in Time Compiler: compilazione “on-the-fly” di metodi di classi in linguaggio macchina reale • La realtà è che Java è un po’ lentino... – maggiori considerazioni in seguito… Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Java è ad alte prestazioni • Obiettivo: Introdurre il linguaggio Java ed esaminarne le caratteristiche che lo rendono particolare • La genesi di Java – Caratteristiche peculiari del linguaggio e scelte progettuali • • • • Le keyword di Java Il “dado” delle caratteristiche di Java Gli strumenti per Java (JDK) Un primo esempio 53 Lanciamo il dado delle caratteristiche di Java.. • Java è un linguaggio di programmazione Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Il whitepaper di Java... 54 55 • Classi Java possono essere caricate dinamicamente, anche dalla rete in maniera da garantire la sicurezza 56 Lanciamo il dado.. La Affidabilità Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Lanciamo il dado.. La Produttività • Ambiente di programmazione che favorisce il riuso del software • Semplice e familiare per facilitare startup in un nuovo linguaggio • Affidabile e sicuro in tutte le situazioni anche su piccole apparecchiature • Progettato per poter caricare classi dalla rete 57 Lanciamo il dado.. La Efficienza su rete • Permette lo sviluppo di sistemi che possono essere utilizzati in ambienti diversi 59 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Lanciamo il dado.. La Eterogeneità 58 • Il multithread permette di scaricare via rete classi (piccole) mentre altri thread “impegnano” l’utente. 60 La velocità della JVM • Aspetti contrastanti • Aggiungiamo anche: – Interpretato – Object-Oriented Garbage Collection – Portabile • Esaminiamo le ottimizzazioni possibili • Varie comprende 50 45 40 35 30 25 20 15 10 5 0 By te co G de ar ba ge Th re ad V ar ie Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Lanciamo il dado.. La Velocità – – – – caricamento classi, gestione eccezioni, controllo limite array e stringhe, conversione in metodi nativi • Soluzioni: – – – – migliorare il codice sorgente migliorare la compilazione migliorare la esecuzione passare al C++ :-) 61 2. Miglioramento del compilatore • La prima versione del browser HotJava richiedeva 25% del tempo per sincronizzare i thread Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 1. Miglioramento del codice sorgente 62 – una semplice riscrittura ha migliorato le prestazioni del 1015%. • Letteratura sul Performance tuning in Java – soluzioni per utilizzare caratteristiche più veloci per risolvere lo stesso problema 63 • Esistono 3 tipi di “strumenti” – compilatori di codice sorgente – ottimizzatori di bytecode – compilatori in codice nativo • Just in Time • compilatori dinamici/autoadaptive • compilatori nativi statici • Un programma Java può passare attraverso alcuni di questi strumenti 64 2.a Compilatori di codice sorgente (b) • Trasformano sorgenti Java in bytecode • Alcune esigenze contrastanti: • Alcune ottimizzazioni possibili (comuni agli ottimizzatori): Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2.a Compilatori di codice sorgente – ottimizzare il codice per l’esecuzione richiede tempo durante la compilazione… – e genera programmi più efficienti ma che (a volte) • possono usare maggiori risorse di memoria • richiedere più tempo per lo startup • La JVM HotSpot (SUN) offre due tipi di VM: – la JVM tipo server • esecuzione efficiente, startup lento, occupazione di memoria maggiore – la JVM tipo client • non si effettuano troppe ottimizzazioni sul codice (minore efficienza) • compilazione veloce e veloce startup e minore uso di risorse di memoria – Codice più efficiente (divisioni per 2 sostituite da shift) – Bytecode ottimizzato per la traduzione in linguaggio macchina su particolari piattaforme – Rimozione di codice/campi/metodi non utilizzati – Inlining (sostituzioni di corpi di metodi alle chiamate) – Loop Unrolling – Loop-invariant code motion – Eliminazione tail-recursion – Eliminazione sottoespressioni comuni • x= (z/2)-( (z/2) -k) – Desincronizzazione di metodi – Eliminazione dei controlli sul range dell’array se l’indice è “Ok” 65 2.c Compilatori Codice Nativo (statici) • Prendono in input bytecode e restituiscono bytecode più veloce • DashO (Preemptive Sol.) incrementa le prestazioni del 30% • Usano molti strumenti comuni ai compilatori • Spesso uniti agli obfuscator – il problema della distribuzione delle applicazioni Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 2.b Ottimizzatori di bytecode 66 67 • Prendono in input bytecode e generano codice nativo • Il compilatore statico restituisce, quindi codice eseguibile per la specifica piattaforma • Un esempio: Excelsior JET – compila in eseguibili per Microsoft Windows – precompilando tutte le classi disponibili… – e compilando “on-the-fly” le classi che si debbano caricare dinamicamente 68 3. Miglioramento esecuzione: la Garbage Collection – traducono (parte del) programma in bytecode in linguaggio macchina – vengono eseguiti a run-time dalla JVM • Just-in-time: traducono subito dopo il caricamento della classe e poi fanno lavorare la JVM • Adaptive: Sun (HotSpot), Symantec, Microsoft, Borland – compilano solo parti delle classi • quelle usate di frequente – continuano a compilare se certi metodi vengono richiamati spesso e non erano stati compilati in precedenza (si adattano al comportamento del programma) 50 45 40 35 30 25 20 15 10 5 0 By te co G de ar ba ge Th re ad V ar ie • Compilatori dinamici (Just-in-Time e Adaptive) Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 3. Miglioramento esecuzione Alcuni algoritmi: • Mark and Sweep • periodico, • elimina oggetti non referenziati • Garbage Collector generazionali • suddivisione in 2 classi di età • “gli oggetti migliori muoiono giovani” • Possibile il tuning della frequenza: – fare chiamare il Garbage Collector quando assolutamente necessario 69 3. Miglioramento esecuzione: le attività Varie 71 50 45 40 35 30 25 20 15 10 5 0 • Miglioramento della gestione di eventi – tra JDK 1.0 e 1.1 – schema model-view-controller per la gestione della interfaccia utente By te co G de ar ba ge Th re ad V ar ie • Symantec velocizza la JVM per i thread tra 80 ed il 150% • Sun mappa i thread Java sui thread nativi Solaris • Microsoft mappa i thread Java sui thread nativi Windows NT Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 50 45 40 35 30 25 20 15 10 5 0 By te co G de ar ba ge Th re ad V ar ie Programmazione Distribuita (2003-2004). Vi.ttorio Scarano 3. Miglioramento esecuzione: la Gestione dei Thread 70 72 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano • Programmi Java (applet) possono girare in browser WWW • Utile per – Internet – Intranet • Di questo aspetto non parleremo in questo corso Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Organizzazione della lezione Lanciamo il dado.. Il World Wide Web • Obiettivo: Introdurre il linguaggio Java ed esaminarne le caratteristiche che lo rendono particolare • La genesi di Java – Caratteristiche peculiari del linguaggio e scelte progettuali • • • • Le keyword di Java Il “dado” delle caratteristiche di Java Gli strumenti per Java (JDK) Un primo esempio 73 La piattaforma Java • JDK = Java Development Kit Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Gli strumenti per Java – prodotti e distribuiti gratuitamente dalla Sun Microsystem per varie piattaforme – Versione 1.0.x (1995) • favorisce la diffusione sui browser – Versione 1.1.x (1997) • più efficiente, gestione eventi cambiata • introduce RMI (Remote Method Invocation) – Versione 1.2 (1999) = Java 2 – Versione 1.3 (2000) – Versione 1.4 (2002) 74 75 • Piattaforme: – J2ME Micro Edition – J2SE Standard Edition – J2EE Enterprise Edition 76 Organizzazione della lezione • Java è facile da imparare Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Alcuni equivoci – Vastissimo repertorio di classi • Java è “solo un altro linguaggio”/”il linguaggio” • Java viene eseguito sul Web – Anche…. • Java crea problemi di sicurezza – La giovane età del linguaggio ha implicato rischi • Javascript ha a che fare con Java (No.) 77 Programmazione Distribuita (2003-2004). Vi.ttorio Scarano Il primo esempio: il classico “Ciao Mondo!” HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println(“Ciao!”); } } • Definizione di una classe • Metodo main • Per compilare javac HelloWorld.java • …che genera il file HelloWorld.class • …che viene eseguito da java HelloWorld 79 • Obiettivo: Introdurre il linguaggio Java ed esaminarne le caratteristiche che lo rendono particolare • La genesi di Java – Caratteristiche peculiari del linguaggio e scelte progettuali • • • • Le keyword di Java Il “dado” delle caratteristiche di Java Gli strumenti per Java (JDK) Un primo esempio 78