Sei sulla pagina 1di 8

Sessione 2

Introduzione a Java

1
Java un linguaggio di programmazione:

di alto livello: i linguaggi di programmazione si dividono in linguaggi di basso livello, con istruzioni pi vicine al
linguaggio macchina (linguaggio assembly) piuttosto che al linguaggio umano e linguaggi di alto livello che posseggono
costrutti sintattici pi simili al linguaggio umano e quindi pi facilmente utilizzabili per il programmatore. A titolo di
esempio, nei linguaggi di basso livello il codice necessario per effettuare la somma di due numeri far riferimento
direttamente ai bit dei registri del processore della macchina su cui verr eseguito; viceversa in un linguaggio di alto livello
baster richiamare una funzione (o metodo) del tipo add(addendo1,addendo2). Java appartiene a questultima categoria
compilato: i linguaggi di programmazione possono essere interpretati o compilati. Nei linguaggi compilati, come
Java, il codice sorgente (file.java) viene prima compilato, ovvero trasformato in una forma pi simile al linguaggio
macchina (file.class, detto anche bytecode) e successivamente il file compilato viene eseguito. Nei linguaggi interpretati,
invece, il codice sorgente viene interpretato ed eseguito immediatamente da un motore (engine) in grado di comprendere la
sintassi del linguaggio. Javascript, per esempio, un linguaggio interpretato e gli engine in grado di comprenderne la
sintassi sono i browser (Chrome, Firefox, Internet Explorer, Opera, Safari etc.)
indipendente dal sistema operativo su cui gira (portabile): il bytecode (.class) generato dalla compilazione di un
sorgente Java un file in grado di essere eseguito su di una qualsiasi macchina virtuale Java (JVM: Java Virtual Machine).
La JVM si occuper di mandare in esecuzione il bytecode traducendo il codice del bytecode in un linguaggio
comprensibile per il sistema operativo ospitante (Microsoft Windows, Linux, Mac etc.). Questo possibile perch esistono

2
diverse versioni della JVM a seconda del sistema operativo su cui devono essere installate (e spesso anche in funzione
dellarchitettura del processore a 32 o a 64 bit) e allatto dellinstallazione di Java si andr a scegliere la versione della
JVM desiderata in funzione del sistema operativo sui cui il programmatore desidera sviluppare. Questo meccanismo
consente di scrivere il codice sorgente Java una sola volta ed essere in grado di mandarlo in esecuzione su qualsiasi server,
indipendentemente dal sistema operativo del server; quello che cambier sar solo la versione della JVM installata sul
server
orientato agli oggetti (object oriented): questo un concetto abbastanza complesso che verr definito meglio pi avanti
nel corso. Per adesso, come anticipazione, possiamo iniziare a dire che i linguaggi di programmazione vengono divisi in
linguaggi procedurali e orientati agli oggetti. Nei linguaggi procedurali il programma viene eseguito attraverso una ben
determinata e fissa sequenza di passi. Nei linguaggi orientati agli oggetti, invece, il dominio di un sistema viene
rappresentato attraverso la definizione di alcuni oggetti che modellano il sistema definendone le caratteristiche e le
operazioni possibili su di esso. Il programma in grado di rispondere a svariate sequenze di operazioni in base allo stato in
cui si vengono a trovare gli oggetti che descrivono il sistema
concorrente o multi-thread: un programma java viene eseguito sempre come un unico processo (di nome java) dal
sistema operativo ospitante. Tuttavia il singolo processo java che rappresenta il programma in esecuzione in grado di
avviare pi thread separati in grado di lavorare contemporaneamente. Nel caso tipico di unapplicazione web, il processo
java che rappresenta la web-application, sar in grado di avviare pi thread paralleli per gestire le richieste provenienti dai
vari utenti collegati allapplicazione web

3
Per iniziare a sviluppare applicazioni in Java:

1. scaricare ed installare il Java Development Kit (JDK o Java Platform) adatto al sistema operativo ed allarchitettura (32 o
64 bit) del computer su cui si desidera lavorare e la relativa documentazione JavaDoc (cfr. video Installazione_JDK).
Il JDK costituito da una serie di classi (file .class) compilate organizzate in packages (albero di directory) allinterno di
librerie (file .jar, ovvero Java Archive, archivi di packages e file .class, compressi in modo simile agli archivi .zip), dai
relativi file sorgenti, da una serie di tool e dalla JVM specifica del sistema operativo e dellarchitettura del processore
scelta.

La JavaDoc (Java Documentation) descrive le API (application program interface) specificando come utilizzare le classi
presenti allinterno delle librerie del JDK.

Il JDK (o Java Platform) esiste in diverse Edition:

Standard Edition (SE): la versione base di Java, comprendente tutto ci che va dalle basi del linguaggio, fino
alla gestione dei database, delle reti, della sicurezza etc.
Enterprise Edition (EE): la versione avanzata intesa prevalentemente per estendere la SE aggiungendo aspetti
quali affidabilit, scalabilit e sicurezza su sistemi distribuiti molto vasti e complessi

4
Micro Edition (ME): la versione pensata per un utilizzo su dispositivi dotati di limitate risorse hardware.
Proprio per le limitate risorse a disposizione, ledizione ME utilizza un sottoinsieme delle funzionalit messe a
disposizione dalla SE
FX: la versione pensata per le Rich Internet Application (RIA). Applicazioni dove linterfaccia grafica riveste
un ruolo fondamentale e pertanto vengono utilizzate API ad hoc per sfruttare le potenzialit grafiche dei
moderni client, cercando di emulare le applicazioni cosiddette Desktop

2. Scaricare un editor Java, ovvero un programma che assista il programmatore nello sviluppo, nella compilazione e nella
validazione del codice. In teoria si potrebbe usare un qualsiasi editor di testo per scrivere codice Java, ma nella pratica
indispensabile avere un editor evoluto che faciliti i compiti dello sviluppatore (cfr. video Installazione_Eclipse)

In questo corso verr utilizzato il JDK 8, SE per Windows a 64 bit e come editor Eclipse versione Mars, ma tutti i concetti e gli
esempi che verranno riportati durante lo svolgimento del corso restano validi cambiando sistema operativo (e quindi scaricando
ad esempio una JDK 8 SE per Linux o per Mac) e/o cambiando editor.

La JDK scaricabile gratuitamente dal link http://www.oracle.com/technetwork/java/javase/downloads/index.html previo


possesso di un account Oracle (altrimenti occorrer prima registrarsi, sempre gratuitamente, sul sito della Oracle).

5
La JavaDoc relativa scaricabile dal link http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-
2133158.html.

Eclipse scaricabile gratuitamente dal link https://eclipse.org/downloads/.

Questi primi due passi sono gi sufficienti per iniziare a sviluppare applicazioni Java anche complesse.

Tuttavia nella pratica quotidiana di chi lavora nel mondo Java si ha sempre a che fare con lutilizzo di ulteriori librerie e tool
basati sul JDK ma esterni rispetto a questultimo.

La portabilit di Java, la sua affidabilit, la gratuit dei sorgenti e degli ambienti di sviluppo hanno portato ad una proliferazione
di librerie esterne al JDK disponibili in rete, la maggior pare delle quali librerie a loro volta gratuite e con codice sorgente
liberamente scaricabile.

Anche qui come per il concetto di Object Oriented diamo unanticipazione di concetti che verranno ampiamente ripresi durante
il corso e soprattutto con i video e gli esempi di codice Java.

In ogni caso per dare unidea di quali siano i passi operativi tipici di chi sviluppa applicazioni Java utile osservare come nella
pratica, ogni qualvolta si crea un nuovo progetto Java, lobiettivo finale produrre una (o pi) libreria, ovvero un file.jar e per
farlo si seguono i seguenti passi:

6
si decide la struttura di directory del progetto. Tipicamente nel mondo web si usa come standard una struttura di directory
che rispecchi il nome del sito web dellazienda per cui si lavora e successivamente il nome del progetto (ma una scelta
assolutamente libera). Ad esempio se stiamo sviluppando il progetto MioProgetto, per lazienda MiaAzienda S.P.A. che
possiede il sito web www.miaazienda.com, si user una struttura di directory del tipo com/miaazienda/mioprogetto, che si
traduce in una struttura di packages Java sostituendo il separatore di directory / con il carattere . (punto). Pertanto la
struttura di packages Java sar del tipo com.miaazienda.mioprogetto. Allinterno del package mioprogetto creeremo la
nostra struttura di package Java specifici del nostro progetto. Per semplificare immaginiamo di avere un solo sotto-package
di nome test e di creare un sorgente Java di nome Test.java allinterno del package com.miaazienda.mioprogetto.test.
si compila il sorgente tramite il tool javac, uno dei tanti tool messi a disposizione dal JDK installato, nella sotto-directory
bin della directory radice di installazione del JDK. Leffetto della compilazione (se non ci sono errori) quello di
produrre dal sorgente com.miaazienda.mioprogetto.test.Test.java il compilato (bytecode o classe)
com.miaazienda.mioprogetto.test.Test.class.
Test il nome semplice della classe mentre com.miaazienda.mioprogetto.test.Test il nome fully-qualified (pienamente
qualificato) della classe

si manda in esecuzione il bytecode tramite il tool java, un altro tool messo a disposizione dal JDK nella dir bin sotto la
directory radice di installazione del JDK e si fanno gli opportuni test

7
quando il programma rispecchia leffettivo comportamento desiderato si crea la libreria compressa (mioprogetto.jar)
contenente la classe compilata e la struttura di packages. In pratica si effettua un archivio compresso (molto simile a quelli
generati con programmi come WinZip o WinRar) della struttura di directory contenente la classe compilata (nel nostro
esempio era una, ma in una libreria reale possono essere centinaia di classi e di packages. Provare ad aprire qualche jar
fornito con il JDK per farsi unidea). Per creare la libreria mioprogetto.jar si usa un altro tool fornito allinterno della
directory bin del JDK; il tool si chiama jar
si distribuisce la libreria miaprogetto.jar mettendola a disposizione dellazienda o pubblicandola e rendendola fruibile a
chiunque (in maniera gratuita o a pagamento, decidendo se fornire anche i codici sorgenti o meno)
Un concetto importante da tener presente in fase di compilazione quello di classpath, ovvero linsieme di librerie che il
compilatore Java deve caricare per compilare i sorgenti. Il classpath, una variabile dambiente del sistema operativo che
istruisce il compilatore Java su qual il percorso (path) dove trovare le librerie da caricare. E quindi un opzione da aggiungere
alla riga di comando quando si lancia il tool javac. Precisamente il nome della variabile cp. Tipicamente lavorando con un
editor Java avanzato, come Eclipse, il classpath una propriet da impostare allinterno delleditor (lo vedremo in pratica quando
inizieremo a vedere degli esempi concreti di codice sorgente in Eclipse).

Di default il compilatore Java carica le librerie fornite dal JDK, ma se si compila un sorgente che utilizza librerie esterne, ovvero
file .jar forniti da tezi, occorrer aggiungere alla variabile dambiente il percorso dove si trovano queste librerie esterne.