Introduzione Storica Un linguaggio si afferma quando affronta e risolve i limiti di quelli già esistenti: Programmazione binaria da pannello Assembler BASIC, COBOL, FORTRAN C C++ Java Sgomberiamo il campo da dubbi Cosa non è Java: Non è un linguaggio per “animare” il WWW Non è una versione ridotta del C++ Non è lo strumento che segnerà la fine di Microsoft Javascript non c’entra niente con Java Cosa è Java Un moderno linguaggio di programmazione OO Orientato alla programmazione di applicazioni “network-centric” Evoluzione di Java Nato per programmare elettrodomestici nome originale (1991-1995): OAK Si è affermato per le sue caratteristiche OO e per la mobilità del codice Applet: esecuzione lato client di applicazioni scaricate da Internet Con il passare del tempo si sta specializzando sempre più nella programmazione lato server. Oggi esiste un gran numero di tecnologie basate su Java. Programmare in Java Il sito ufficiale di java è: www.java.sun.com Oggi, sono disponibili vari tipi di “prodotti”: Java SE (Java Standard Edition) Java EE (Java Enterprise Edition) Java ME (Java Micro Edition) L’acronimo di SDK è Software Development Kit L’acronimo di JRE è Java Runtime Environment Caratteristiche di Java Semplice Sicuro Indipendente dall’architettura Portabile Interpretato Object Oriented Con prestazioni elevate Robusto Distribuito Multithreaded Economico Semplice Concepito affinché il programmatore professionista potesse impararlo facilmente e utilizzarlo in maniera produttiva Sintassi simile a C e C++ Elimina i costrutti più “pericolosi” di C e C++ aritmetica dei puntatori preprocessore (#define) (de)allocazione esplicita della memoria Object Oriented Progettato con l’intenzione di essere un linguaggio ad oggetti. Conseguenza: Pulito Utilizzabile Pragmatico Mette d’accordo: Puristi: “Tutto è un oggetto” Pragmatisti: “Stai lontano da me” Base dell’accordo: Modello ad oggetti semplice e facile da estendere Tipi semplici (es. interi), considerati come non-oggetti a prestazioni elevate Robusto Rilevamento errori e typechecking a tempo di compilazione e di esecuzione Mascheramento dei puntatori all'utente Controllo automatico degli indici degli array Gestione delle eccezioni da parte dell'utente Gestione della memoria (allocazione & GC) Distribuito e Portabile Incorpora molte funzionalità per l’accesso alla rete (TCP/IP) Mette a disposizione un pacchetto per le invocazioni di metodi remoti (RMI) Il compilatore produce codice di tipo byte-code interpretato da una virtual-machine e indipendente dall’architettura HW Lo stesso codice gira su piattaforme Unix, Microsoft e Macintosh ed altro Interpretato Interfacce Classi Astratte Classi e Programmi Codice Sorgente: file.java COMPILAZIONE Codice ByteCode: file.class ESECUZIONE JAVA VIRTUAL MACHINE Windows Unix Macintosh Sicuro Rilevamento errori e typechecking a tempo di compilazione e di esecuzione Il sistema run-time Java emula una macchina virtuale che interpreta il bytecode Possibilità di impedire l’esecuzione di istruzioni pericolose Introduzione delle Applet per rendere sicuri programmi scaricati da Internet Economico Per ottenere il software, la documentazione e tenersi aggiornati basta collegarsi ad Internet: www.java.sun.com www.sun.com www.javaworld.com www.mokabyte.it www.programmazione.it www.jia.it …