********************************************************************************* Appunti di JAVA License: GPL Author: Marco Segato <segatom(at)yahoo(dot)it> aka Mach <tumin17(at)yahoo(dot)it> Website: http://www.marcosegato.tk/ irc: irc.azzurra.org ---> #lonelzero ********************************************************************************* ********************************************************************************* Capitolo 0. Appunti di JAVA - "Un primo approcio" ********************************************************************************* ------------------------ 0.1 \ UN PO' DI STORIA ------------------------ La storia di JAVA ha inizio nel lontano 1991, quando un gruppo della Sun Microsystems progetta un linguaggio (chiamato in codice "Green") indipendente dall'architettura su cui viene usato, e che puo' cosi' operare su hardware profondamente diversi tra loro quali i sistemi embedded; non trovando pero' nessun cliente interessato a questa tecnologia, la Sun, per non buttare al vento milioni di dollari investiti, converte il progetto orientandolo al web, dove cominciano a farsi pressanti esigenze come il bisogno di neutralita' rispetto all'architettura e la sicurezza. Nel 1995 viene cosi' presentato al pubblico del SunWorld un browser (HotJava) che scarica ed esegue in tempo reale dei programmi chiamati applet: l'entusiasmo e' tale che gia' l'anno successivo sia la Netscape che la Microsoft supportano JAVA nei loro browsers. Con il motto �write once, run everywhere�, nel 1998 viene rilasciato JAVA2 e la sua imponente libreria, che cresce a ritmi impressionanti soprattutto a partire da quest'ultimo anno, quando la Sun ha accolto le pressioni della comunita' OpenSource per modificare gradualmente la licenza di questo linguaggio in senso meno restrittivo. -------------------------------------- 0.2 \ UN LINGUAGGIO MULTIPIATTAFORMA -------------------------------------- Per meglio comprendere quella che e' una vera e propria rivoluzione nel mondo della programmazione, possiamo fare un parallelo con quello che e' considerato un po' il rivale di JAVA, il C++. Esistono compilatori C++ un po' per tutte le piattaforme, ma la procedura per eseguire un programma scritto con questo linguaggio e' sempre la stessa: compilare il sorgente ed eseguirlo sulla stessa macchina; sta proprio qui il suo limite: nessun programma compilato su un particolare sistema puo' essere avviato su una macchina di tipo differente per questioni architetturali (da approfondire a parte :)). Un programma JAVA invece, per essere eseguito su sistemi operativi diversi, non deve essere ne' riscritto ne' ricompilato! I vantaggi sono enormi: approcio multipiattaforma, uniformita' di distribuzione dell'applicativo, ecc... Ma in concreto, come funziona allora un'applicazione JAVA? Quando si compila un sorgente, si ottiene il bytecode, che pero' non e' codice eseguibile, ma necessita di una Java Virtual Machine (JVM) che possiamo immaginare come una sorta di livello intermedio che fa da tramite tra il nostro programma e il sistema operativo vero e proprio: +==========+ | | <===> JVM <===> LINUX | BYTECODE | <===> JVM <===> WINDOWS | JAVA | <===> JVM <===> SOLARIS | | <===> JVM <===> ALTRO.. +==========+ Tra i vantaggi che presenta JAVA, abbiamo che esso e' un linguaggio completamente orientato agli oggetti (vedremo che cosa significa piu' avanti), sicuro (data la sua provenienza dal web) e multithreaded (in poche parole puo' fare piu' "cose" insieme). Naturalmente ci sono anche aspetti assai limitanti: per le caratteristiche con cui e' stato creato, JAVA non puo' interagire a basso livello con la macchina come fa invece il C, e la JVM, interpretando il bytecode, produce un sensibile calo delle prestazioni. --------------------------- 0.3 \ SOFTWARE NECESSARIO --------------------------- Per iniziare ad imparare a programmare in JAVA e' necessario procurarsi la piattaforma JAVA 2 STANDARD EDITION (J2SE), che e' liberamente scaricabile ed utilizzabile senza alcun limite dal sito http://java.sun.com/j2se/, oppure la si puo' trovare molto spesso nelle riviste specializzate; e' composta di due parti differenti: + JRE (Java Runtime Environment): rivolto agli utenti, permette la sola esecuzione del programma; + SDK (Software Development Kit): rivolto ai programmatori, permette l'esecuzione del programma ed include un compilatore insieme a tutti gli altri software di sviluppo per JAVA; naturalmente noi dovremo avere l'SDK (circa 40 Mb), che comprende anche il JRE. ------------------------------ 0.4 \ INSTALLAZIONE DELL'SDK ------------------------------ L'installazione e' molto semplice; e' sufficiente avviare il programma d'installazione e modificare la variabile PATH di sistema: + WINDOWS 9X: lanciare il comando "sysedit" - aggiugere all'autoexec.bat la riga SET PATH=%PATH%;C:\J2SDKx.y.z\BIN + WINDOWS 2000/XP: Pannello di controllo - Sistema - Avanzate - Variabili d'ambiente + LINUX: da root modificare il file /etc/profile aggiungendo la riga PATH="$PATH:/usr/local/j2sdkx.y.z/bin" -------------------------- 0.5 \ UN PRIMO PROGRAMMA -------------------------- Apriamo il nostro editor di testo preferito e salviamo quanto segue nel file Hello.java: public class Hello { public static void main(String[] args) { System.out.println("Hello, World!"); } } compiliamo il sorgente digitando: javac Hello.java viene prodotto il bytecode Hello.class che eseguiamo con: java Hello Quello che otterremo sara' la stampa a video della frase: Hello, World! Analizzando meglio queste semplici righe notiamo che: - la prima identifica il nome della classe e la avvia; questo nome deve corrispondere al nome del file che abbiamo salvato, ed e' fondamentale che corrispondano esattamente le lettere maiuscole e quelle minuscole; e' buona norma per un programmatore dare un nome che inizi con una lettera maiuscola. - nella seconda, il metodo "main" specifica da dove il programma comincera' ad essere eseguito; il parametro "String[] args" e' necessario, e contiene gli argomenti della riga di comando (che in questo esempio non ci sono); - la terza contiene le istruzioni, che devono terminare con un punto e virgola. -------------------------- 0.6 \ COMMENTI E JAVADOC -------------------------- Un buon programmatore aggiunge sempre commenti molto particolareggiati ai propri sorgenti, anche nell'ottica, ormai sempre piu' frequente, di distribuire il codice alla comunita': si semplifica notevolmente la lettura del codice velocizzandone la comprensione, il tutto senza alcuna perdita delle prestazioni, dato che il compilatore ignora ogni riga commentata. In JAVA si commenta allo stesso modo del C/C++: // commento su una sola riga /* commento su piu' righe */ Ma c'e' un potente strumento in piu' per gli sviluppatori JAVA che debbano creare la documentazione dei loro applicativi: si tratta di javadoc. Javadoc e' un'applicazione che analizza il file sorgente di una classe ed elabora automaticamente un documento HTML che ne descrive le specifiche d'interfaccia, il tutto grazie all'uso di tag specifici. Ma vediamo un esempio: /** Questa classe stampa la frase "Hello, World!". @author Mach @version 0.1, 09/03/2003 @return La stampa della frase "Hello, World!" */ public class Hello { public static void main(String[] args) { System.out.println("Hello, World!"); } } Se noi eseguiamo: javadoc Hello.java otterremo nella stessa directory un file di nome Hello.html che descrivera' dettagliatamente la nostra classe. Naturalmente abbiamo un esempio della straordinaria potenza di questo strumento nell'intera documentazione di JAVA, essa stessa ottenuta tramite javadoc.