Introduzione e strumenti di lavoro

Venerdì, 24 Settembre 2004

OBIETTIVI DELLA LEZIONE

  1. Capire cosa è un programma e come possa diventare eseguibile su un processore attraverso la compilazione.
  2. Capire cosa sia la piattaforma Java, quali siano gli strumenti per necessari per utilizzarla e dove trovarli in rete.
  3. Scrivere, "compilare" ed eseguire un primo programma.

Cosa è un programma?

Partiamo da alcuni esempi di programmi COMPLETI e pronti per essere "compilati".

Brevissima storia della programmazione

A ritroso ...

Per scrivere un programma che risolva un problema ripercorriamo ogni volta a ritroso questa breve storia:

JavaTM?

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):

Un po' di storia ufficiale

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/].

La piattaforma Java

Il nostro primo programma Java

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.

Un secondo programma

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;
    }
  }
}

Strumenti

SciTE

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

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

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.

JCreator

Un secondo ambiente di sviluppo freeware molto apprezzato è JCreator. Nella versione free manca però la possibilità di effettuare il debug. Lo potete trovare sul sito http://www.jcreator.com/

Lab

Raccomandazioni e prassi

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