OBIETTIVI DELLA LEZIONE
Partiamo da alcuni esempi di programmi COMPLETI e pronti per essere "compilati".
PROGRAM HELLOWORLD C Le prime sei colonne sono vuote WRITE(UNIT=*,FMT=*) 'Hello World!' END
#include <stdio.h> int main() { printf("Hello World!\n"); }
class Helloworld { public static void main(String args[]) { System.out.println("Hello World!"); } }
Per scrivere un programma che risolva un problema ripercorriamo ogni volta a ritroso questa breve storia:
#include <stdio.h> int main() { int x = 1; int i; i=x+3; printf("Il risultato di i=x+3 e' %d" , i); }
i=x+3;diventa qualcosa del tipo (Microsoft Assembler):
mov eax, [x] add eax, 3 mov [i], eax
eax
è un registro del processore; [x]
è il contenuto della cella di memoria di indirizzo x
.
C:\somma Il risultato di i=x+3 e' 4 C:\
Sun (la ditta che lo ha sviluppato e ne detiene la proprieta del marchio) definisce Java:
A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. [http://java.sun.com/docs/overviews/java/java-overview-1.html]
Chiaro, no?
Java non è solo un linguaggio di programmazione, ma una piattaforma basata su tre componenti fondamentali (li vedremo meglio dopo):
All'inizio degli anni '90 l'introduzione dei microprocessori in tutti i prodotti di
largo consumo apri un mercato nuovo per le aziende informatiche. In particolare,
Sun avvio un progetto chiamato "Green" che doveva intuire i nuovi trend e sviluppare
prototipi per anticipare il mercato.
Nasce così "Oak", un linguaggio di programmazione multipiattaforma che Sun cerca di
lanciare nel mercato dei set-top box televisivi per permettere l'interazione
dell'utente con la televisione via cavo. La scelta si rivelò un fallimento.
Nel frattempo, nel 1993 venne rilasciata la prima versione di NCSA Mosaic e il modo
di intendere internet, fino ad allora accessibile solo attraverso protocolli quali
telnet e gopher, cominciò rapidamente a cambiare. Sun aveva trovato il mercato
in cui inserire il suo nuovo prodotto, ribattezzato per l'occasione Java. In onore
della macchina del caffè davanti alla quale gli sviluppatori si incontravano assai
spesso visto i tempi assai stretti dello sviluppo.
L'accoppiata Netscape+Java si rivela da subito vincente: la rete può finalmente
servire anche per transazioni complesse alla portata dell'utente finale. Java grazie
alla indipendenza da una piattaforma è si fatto adatto ad applicazioni distribuite su
diverse piattaforme hardware.
Java è una piattaforma abbastanza recente. Basti pensare che fu presentato al
pubblico la prima volta il 23 Maggio 1995 ...
[http://java.sun.com/features/1998/05/birthday.html]
[La storia ufficiale di Java la potete trovare all'indirizzo:
http://java.sun.com/java2/whatis/].
Consideriamo il nostro primo programma:
class Pax { public static void main(String[] args) { System.out.println("Pax in terra hominibus bonae voluntatis."); } }
Il file che lo contiene DEVE chiamarsi con il nome della classe contenuta nel file e avere estensione ".java". In pratica il file deve avere lo stesso nome che compare dopo la parola class nel file. Le classi hanno per convenzione un nome che inizia con una maiuscola; attenzione alle maiuscole quando salvate il file! Non serve un editor particolare, basta che sia un editor di testo: NO MSWord!
Il nostro obiettivo è eseguirlo. Per prima cosa dobbiamo compilarlo ed ottenere il bytecode eseguibile dalla JVM. Per compilarlo ci serve un compilatore Java. Sun lo fornisce gratuitamente con il "Java Software Developement Kit" o JDK: per farlo a casa scaricate ed istallate il file: J2SE v 1.4.2_05 SDK.
Dalla riga di comando, digitiamo:
C:\javac Pax.java C:\
Il compilatore Javac ha prodotto il file Pax.class che contiene il bytecode per la JVM. Per eseguirlo dobbiamo invocare la JVM e chiederle di interpretare il file Pax.class:
C:\java Pax Pax in terra hominibus bonae voluntatis. C:\
Il programma è stato eseguito correttamente e ha stampato come richiesto una frase. Notate che non è stata specificata l'estensione .class del file. La JVM si aspetta che i files abbiano questa estensione.
Per oggi ci accontentiamo di familiarizzare con il linguaggio che dalla prossima lezione affronteremo in dettaglio. Vediamo un secondo esempio:
class Fibonacci { public static void main(String[] args) { int questo=1, precedente=1, prossimo; System.out.println(precedente); System.out.println(questo); while((prossimo=questo+precedente) < 100) { System.out.println(prossimo); precedente=questo; questo=prossimo; } } }
Un buon editor di testo gratuito è SciTE. E' installato nel laboratorio Est e ve ne consiglio caldamente l'uso. Lo useremo anche per scrivere file HTML e PHP. Esiste anche per piattaforma Linux; in seguito vengono date istruzioni per la piattaforma Microsoft.
Procedura passo-passo
JAVA_SDK_DIRECTORY="C:\j2sdk1.4.2_05"in modo che contenga il percorso base della Java SDK sulla vostra macchina.
Se avete seguito le indicazioni dovreste avere abilitato l'help contestuale e premendo F1 vicino ad una parola chiave Java, PHP o HTML dovrebbe aprisi una pagina di help.
Gel è un IDE (Integrated Developer Environment), cioè un ambiente di sviluppo più sofisticato di un semplice editor di testo. Scaricatelo ed installatelo da http://www.gexperts.com/. Ci sarà molto utile quando impareremo a dare il debug di un programma Java.
titano\miaDir\ \lez1e2\Fibonacci.java ... \lez3e4\(tutti i file della lezione 2) ....ma anche su un supporto personale (dischetto, chiavetta USB, posta elettronica..).
Esercizio 1
Per scrivere un programma non serve molto. Usando NOTEPAD, creare il file Helloworld.java copiando il programma sopra riportato, compilarlo da riga di comando ed eseguirlo. Suggerimento: per aprire la console cliccare Start->Esegui e digitare cmd.exe.
Esercizio 2
Aprire il file Helloworld.java con SciTE. Compilarlo premendo CTRL+F7. Eseguirlo premendo F5. Comodo, no?
Togliete ora il punto e virgola dalla 3 riga. Compilate il file dopo averlo salvato. Il compilatore protesta perchè trova un errore nel codice. Errori nei programmi sono piuttosto comuni e dovremo imparare a localizzarli e risolverli.
Cliccando sull'errore nella finestra di output (quella che si è aperta in basso) vi verrà evidenziata la riga di codice contenente l'errore. Correggetelo e ricompilate.
Esercizio 3
Utilizzando SciTE, create il file Lune.java copiando il seguente codice:
import java.io.*; class Lune { public static void main(String[] args) throws IOException { InputStreamReader flussoTesto = new InputStreamReader(System.in); BufferedReader bufferTastiera = new BufferedReader(flussoTesto); String lineaLetta; System.out.print("Quanti anni hai? "); lineaLetta = bufferTastiera.readLine(); int anni = Integer.parseInt(lineaLetta); System.out.print("In che mese sei nato (numero)? "); lineaLetta = bufferTastiera.readLine(); short mesi = Short.parseShort(lineaLetta); short numeroLune = (short)(12*anni + mesi); System.out.println("Durante la tua vita, hai visto " + numeroLune + " lune."); } }
Compilatelo premendo CTRL+F7 ed eseguirlo premendo F5. Per inserire l'input, selezionate la finestra di output di SciTE cliccandoci dentro.
Esercizio 4
utilizzando Gel, create il file Java Fibonacci.java. Inserite il codice del secondo esempio visto a lezione. Compilate il file dal menù "Build" o premete CTRL+F9. Eseguitelo dal menù "Build".
Esercizio 5 (facoltativo)
Questo esercizio è FACOLTATIVO. Svolgilo SOLO se hai ultimato gli esercizi precedenti, che sono necessari per l'esame finale.
utilizzando JCreator, aprite il file Java Fibonacci.java creato nell'esercizio precedente. Compilate il file dal menù "Build" eseguitelo dal menù "Build".
©2004 Roberto Sassi