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
…