Corso Java Base: introduzione (1)

Si parla molto di Java, ma cosa è in realtà? In questo corso cercheremo di spiegare cosa è Java e cosa ci possiamo fare. Vedremo come Java è sia un linguaggio di programmazione che una piattaforma.

Java è un linguaggio di programmazione di alto livello definito dalle seguenti parole:

·Semplice
·Orientato agli oggetti
·Distribuito
·Multithread
·Dinamico
·Architetturalmente neutro
·Alte prestazioni
·Robusto
·Sicuro

Ognuna delle parole precedenti è definita nell’articolo The Java Language Environment scritto da James Gosling e Henry McGilton. Nel linguaggio di programmazione Java, tutto il codice sorgente viene scritto in un file di testo con estensione .java. Questi file sorgenti sono compilati in file .class dal compilatore javac.

Un file .class non contiene codice nativo per il nostro processore, contiene invece bytecode, il linguaggio macchina della JVM (Java Virtual Machine). Per avviare la nostra applicazione viene poi utilizzato l’eseguibile java, che lancia una istanza della macchina virtuale.

Poiché la Java VM (JVM) è disponibile su quasi tutti i sistemi operativi, lo stesso file .class può essere avviato su Microsoft Windows, Solaris, Linux, o Mac OS. La JVM ufficiale promossa da Oracle è Java Hot Spot, che viene affiancata da moltissime altre macchine virtuali di terze parti, nate specialmente come ottimizzazioni per devices e sistemi operativi particolari.

java3

La piattaforma Java

Una piattaforma è l’ambiente hardware o software dove un programma gira. Abbiamo già citato alcune delle piattaforme più popolari come Microsoft Windows, Linux, Solaris e Mac OS. La maggior parte delle piattaforme può essere descritta come una combinazione del sistema operativo e del sottostante hardware.

La piattaforma Java si differenzia da questo punto di vista, permettendo allo sviluppatore di concentrarsi sui dettagli implementativi e tralasciare (tranne rare eccezioni) l’hardware sottostante. Proprio per questo il suo motto è da sempre “Write Once Run Everywhere“.

La piattaforma Java possiede due componenti:

·La macchina virtuale Java
·Le interfacce di programmazione applicativa Java (A.P.I.)

Abbiamo già parlato della macchina virtuale, è la base della piattaforma Java ed è possibile istallarla su diversi sistemi. Le API sono una vasta collezione di componenti software pronte all’uso. Sono raggruppate in librerie che contengono directory di classi e interfacce correlate dette package.

Le API e la macchina virtuale isolano il programma dal hardware sottostante. Dovendo essere un “ecosistema indipendente”, la piattaforma Java può essere “leggermente” più lenta del codice nativo. Tuttavia, i progressi nel compilatore e nella macchina virtuale riducono le differenze di prestazione con il codice nativo senza mettere in pericolo la portabilità.

java3

Cosa possiamo fare con Java

Ogni implementazione completa della piattaforma ci fornisce le seguente funzionalità:

1) Strumenti di sviluppo: come punto di partenza abbiamo il JDK, Java Development Kit, fornito gratuitamente da Oracle, che comprende tutto il necessario per la compilazione, l’avvio, il debug e la documentazione dell’applicazione.

2) API: le API forniscono le funzionalità di base del linguaggio di programmazione. Sono presenti una serie di classi pronte all’uso per le nostre applicazioni. L’insieme delle API di base disponibili è enorme, per avere una idea del suo contenuto possiamo consultare la documentazione della piattaforma standard Java.

3) Tecnologie di distribuzione: il software JDK fornisce dei meccanismi standard come il software Java Web Start e il Java Plug-In per la distribuzione delle applicazioni all’utente finale.

4) Strumenti per l’interfaccia utente: le Swing e il Java 2D toolkit ci permettono di creare delle interfacce grafiche (GUI) molto sofisticate.

5) Librerie di integrazione: le librerie di integrazione ci permettono l’accesso ai database o agli oggetti remoti.

 

Perchè Java?

Ecco alcune motivazioni che possono spingerci a scegliere questo linguaggio di programmazione:

  1. Facile da imparare: anche se Java è un linguaggio orientato agli oggetti, è facile da imparare.
  2. Scrivere poco codice: gli strumenti di misura del codice suggeriscono che un programma scritto in Java può essere quattro volte più “corto” di un linguaggio scritto in C++.
  3. Scrivere del buon codice: il linguaggio di programmazione Java incoraggia le buone pratiche di programmazione, e la procedura automatica di Garbage Collection (letteralmente raccolta dei rifiuti) ci aiuta a prevenire i problemi di memoria.
  4. Sviluppare più rapidamente: Java è più semplice di C++, quindi i nostri tempi di sviluppo saranno due volte più veloci rispetto ad esso.
  5. Indipendenza dalla piattaforma: possiamo ottenere dei programmi indipendenti da ogni piattaforma non usando librerie scritte in altri linguaggi.
  6. Distribuire il software più facilmente: con Java Web Start, gli utenti possono avviare la nostra applicazione con un solo click del mouse. Un controllo automatico della versione all’avvio assicura che gli utenti siano sempre aggiornati all’ultima versione disponibile. Se un aggiornamento è disponibile Java Web Start aggiornerà automaticamente l’installazione.

 

Gli attrezzi del mestiere

Per scrivere i programmi in Java abbiamo bisogno di:

  1. Il kit di sviluppo Java (JDK)
  2. Un editor di testo: un semplice editor di testo come può essere Notepad su Windows oppure Textedit per Mac OSX.

Esistono anche altri programmi, IDE (Integrated Development Environment), che ci possono venire in aiuto nello sviluppo ma rimandiamo l’utilizzo di questi tool a parti successive del corso.

 

La nostra prima App

La nostra prima applicazione HelloWorldApp, visualizzerà il classico saluto “Hello World!”. Per creare questo programma dobbiamo:

  1. Creare un file sorgente: Un file sorgente contiene il codice, scritto in Java, in modo che noi o altri programmatori possiamo capirlo. Possiamo usare l’editor di testo per creare e modificare i file sorgenti.
  2. Compilare i file sorgenti in file .class: Il compilatore (javac) prende il nostro file sorgente e traduce il testo in istruzioni che la macchina virtuale Java può capire. Le istruzioni contenute in questo file si chiamano bytecode.
  3. Avviare il programma: Lo strumento di avvio (java) usa la macchina virtuale per avviare la nostra applicazione.

 

Creare il file sorgente

Per creare il file sorgente dobbiamo per prima cosa avviare l’editor di testo. Nel nuovo documento scriviamo il seguente codice:

Andando avanti nel corso capiremo cosa significano tutte le parole chiave che vengono riportate nel precedente codice, l’importante è ricordare che il compilatore (javac) e l’interprete (java) distinguono le maiuscole dalle minuscole (case sensitive) e quindi bisogna rispettare la sintassi prevista dal linguaggio.

Il codice appena visto può essere salvato in un file con nome HelloWorldApp.java

Compilare il file sorgente nel file .class

Apriamo una shell dei comandi del vostro sistema operativo. Su Windows potete farlo dal menu Avvio, scegliendo Esegui… e inserendo il comando cmd. Una volta aperta la shell è simile alla seguente figura:

consoleComandi

Ora dobbiamo spostarci nella cartella in cui abbiamo salvato il nostro file sorgente. Ad esempio C:\corsoJava. Ora siamo pronti per compilare con il seguente comando

Il compilatore ha generato il file HelloWorldApp.class, che è appunto la versione eseguibile del nostro primo programma. Adesso che abbiamo il file .class, possiamo avviarlo.

Avviare il programma

Nella cartella dove è presente il file class, inseriamo il seguente commando:

 

La seguente figura mostra il risultato che dovreste ottenere:

consoleHelloWorld
In tal caso: complimenti, il programma funziona correttamente!