J2SERitorniamo un attimo alle basi di Java.

Per scrivere un’applicazione utilizzando tale linguaggio non ci sono problemi: è sufficiente disporre di un editor di testo e di qualche conoscenza sulle regole base per i nomi dei file. Ovviamente, assieme a questi strumenti non ci dobbiamo mai dimenticare la documentazione Java, sempre disponibile on-line. Ma come si fa per compilare un’applicazione Java? E’ proprio in questo articolo che vediamo passo passo come arrivare alla creazione dei famosi e fatidici file .class, che rappresentano gli eseguibili di qualsiasi applicazione scritta in Java.

Per prima cosa è necessario aver installato sulla propria macchina una versione qualunque della JDK (Java Development Kit, ovvero tutto il necessario per poter sviluppare in Java). La versione con cui io sviluppo (e non è proprio l’ultima versione) e di cui propongo gli esempi è la 1.4. La si può scaricare dal sito della Sun dedicato a Java.

Una volta inatallata, sarà nostra cura andare ad impostare alcune variabili d’ambiente per semplificarci la vita: le due variabili d’ambiente che dovremo modificare (o creare, se non esistono) si chiamano PATH e CLASSPATH. In realtà, nessuna delle due è necessaria, ma la loro presenza ci aiuta: la prima (quella che io, solitamente, imposto sempre) serve a far sì che i comandi per la compilazione e l’esecuzione siano sempre disponibili da qualunque posizione ci troviamo; la seconda (che io, solitamente, non imposto per praticità) serve ad indicare alla JVM e al compilatore dove sono posizionate le eventuali librerie esterne da agganciare all’applicazione. Supponendo di aver installato la JDK nel seguente percorso (faccio sempre riferimento a Linux) “/home/j2sdk1.4.2/”, dovremo modificare la variabile PATH in questo modo:

path=$path:/home/j2sdk1.4.2/bin

Questa riga di codice potremmo inserirla alla fine del file .bashrc della nostra home directory, in modo che ad ogni avvio del sistema, essa venga correttamente valorizzata. Per Windows il discorso è diverso: dovremo andare nella scheda “Proprietà” delle Risorse del Computer, quindi scegliere “Avanzate”, selezionare il pulsante “Variabili d’ambiente” e modificare la variabile PATH che dovrebbe già essere valorizzata, aggiungendo un punto e virgola ( ; ) in coda seguito dal percorso completo della directory “bin” che si trova dentro alla directory di installazione della JDK (per eventuali informazioni aggiuntive più dettagliate, lasciate pure un commento).

Lo stesso discorso vale per la variabile CLASSPATH (che solitamente non è presente nel sistema, ma che dovremo, eventualmente, creare noi): è sufficiente farla puntare alla directory “jre/lib” della directory di installazione.

A questo punto siamo pronti per compilare. Supponiamo, quindi, di avere scritto il nostro bel programma Java e di averlo salvato nella directory /home/progetti/ con il nome di HelloWorld.java. Non ci resta che posizionarci all’interno di tale directory e lanciare a mano il seguente comando:

javac HelloWorld.java

Una nota particolare per gli utenti Windows: il nome del file deve essere digitato correttamente, rispettando le lettere mauiscole e le minuscole, altrimenti otterremo dei messaggi d’errore.

Se la compilazione è andata a buon fine, il file .class è stato creato nella directory in cui ci troviamo, altrimenti otterremo un messaggio d’errore che ci informa di eventuali problemi riscontrati. Uno dei più classici problemi è quello relativo ai package: un messaggio del tipo “NoClassDefFoundError” è tipico se si programma utilizzando i package. In questi casi, dovremmo fare un po’ di attenzione: posizionarci all’esterno della directory da cui comincia l’indicazione della clausola package e lanciare il comando da lì. Ad esempio, se la nostra classe HelloWorld ha la seguente clausola package:

package it.mioprogetto;

Allora dovremo posizionarci all’esterno della directory “it” (se, quindi, tale directory ha il seguente percorso assoluto/home/progetti/it“, dovremo posizionarci in “/home/progetti/“) e dare il seguente comando:

java it/mioprogetto/HelloWorld.java

I problemi possono nascere anche nel caso in cui la nostra applicazione sia composta da più classi (magari, relazionate tra di loro in modo biunivoco). In questi casi, il modo migliore per procedere alla compilazione è quella di lasciar fare al comando stesso tutte le considerazioni. Non preoccupiamoci, quindi, do dover compilare tutte le classi, una per una a mano, ma utilizziamo semplicemente questo comando:

javac *.java

ovviamente, sempre tenendo presenti le considerazioni fatte prima sulla posizione, per tutti i casi in cui si utilizza la clausola package.

Altre opzioni sono disponibili per il comando javac, come ad esempio il linking di particolari librerie che non siano raggiungibili direttamente dalla posizione in cui ci troviamo o tramite la variabile CLASSPATH: in questo caso è possibile specificare direttamente sulla linea di comando il percorso in cui cercare le classi della libreria tramite l’opzione “-classpath“. Per una più ampia panoramica delle opzioni disponibili è sufficiente digitare il comando javac da solo opure seguito dall’opzione “-help“.

Opzioni interessanti da provare sono “-deprecation” e “-d“. Ancora una volta non mi rimane che augurarvi una Buona Programmazione.

Tags: