64343 Letture

Corso Java - Quarta lezione: package, tipi di dato, variabili e operatori

Giunti alla quarta puntata del nostro excursus sulla programmazione ad oggetti e, in particolare, sul linguaggio Java, è arrivato il momento di puntualizzare una serie di concetti dei quali finora non abbiamo fornito esauriente spiegazione. Questi concetti spaziano su un largo fronte della conoscenza del linguaggio e sono da considerarsi assolutamente fondamentali. Solo dopo questo appuntamento potremmo dire di aver posto realmente le basi per una comprensione del linguaggio.

I package e loro organizzazione

In ogni linguaggio di programmazione esistono una serie di funzioni standard scritte in supporto al linguaggio vero e proprio e, ovviamente, Java non fa eccezione. Oramai le funzioni delle librerie standard sono talmente numerose ed ampie che si può affermare senza ombra di dubbio come risulti cosa praticamente impossibile conoscerle in maniera esaustiva. In Java queste librerie sono poste, ovviamente, sotto forma di classi e sono fornite tutte insieme direttamente da Sun: esse sono, infatti, comprese nel "kit" che normalmente utilizziamo per programmare Java e che tutti voi dovreste avere scaricato ed installato. Queste classi, tuttavia, non sono fornite singolarmente ma raggruppate in modo omogeneo in base alle loro funzioni. Questi raggruppamenti prendono il nome di package. Ad esempio, molte classi che implementano funzioni matematiche, si trovano all'interno del package java.math. Per poter accedere ad ogni classe e metodo della libreria standard del linguaggio, si utilizza l'istruzione import tramite la quale è possibile sia "importare" tutte le classi di un determinato package sia una specifica classe, come nei seguenti due esempi:
import java.util.*;
import java.util.Random;

Notate che adottando la prima o la seconda versione, potrete comunque utilizzare la classe Random. Potete trovare un gran numero di informazioni circa tutti i package e tutte le classi all'interno della documentazione ufficiale distribuita dalla Sun e liberamente prelevabile dal web. Fino ad ora abbiamo utilizzato funzioni della libreria standard (per esempio println()) senza mai ricorrere ad istruzioni import. Per quale motivo? Il motivo è che in Java qualunque istruzione scriviate come import il compilatore inserisce in automatico l'istruzione
import java.lang.*;
in cui viene importato il package che contiene le più comuni funzioni di libreria del linguaggio. Non avrete quindi mai bisogno di scrivere una riga come questa nei vostri programmi. Di seguito si riporta un elenco dei package più utilizzati ed una loro breve descrizione (l'ordine è da considerarsi assolutamente casuale):

- java.io: contiene tutte le classi per eseguire le operazioni di I/O (input/output) su file e non solo. Si tratta di un package molto ampio è studiato per essere molto "portabile", infatti in Java è possibile considerare il trasferimento dati tra due host remoti alla stregua del trasferimento dati su localhost. Questa è una delle caratteristiche che rendono Java particolarmente adatto alla programmazione di rete. Ci occuperemo di alcune di queste classi più avanti.
- java.util: contiene classi per gestire date, orari, timer, calendari, numeri pseudo casuali e molto altro. Si tratta senza dubbio di uno dei package più utilizzati in assoluto nonché uno dei più vasti. Contiene anche classi per la gestione di strutture dati semplici, come liste semplicemente concatenate di varia nature e liste ad accesso sequenziale (Vector) di cui ci occuperemo fra poco. Fanno parte inoltre di questo package le classi per gestire i file zip e i file jar.
- java.applet: contiene essenzialmente la classe omonima, uno strumento fondamentale per svilupparne altre. Ci occuperemo esclusivamente delle applet nella prossima lezione, e le useremo come esempi, laddove possibile, nelle prossime lezioni del corso.
- java.awt: contiene una serie di classi utili per la realizzazione delle interfacce grafiche, quali elementi delle stesse, gestori di layout, gestori di contorni, finestre di vario tipo e molto altro ancora.
- javax.swing: si tratta essenzialmente di una naturale "evoluzione" delle awt, comprende delle classi più performanti e semplici da utilizzare delle awt praticamente in tutti i settori della creazione delle interfacce. Questo package è scritto interamente in Java.
- java.net: contiene una serie di classi estremamente duttili per la programmazione orientata alle reti (networking programming) soprattutto ad alto livello. Costituisce uno dei punti di forza del linguaggio. In questo corso ci occuperemo più avanti di alcune classi di questo package ma il lettore sappia che sono stati scritti libri interi inerenti esclusivamente questo argomento.
- java.sql: contiene le classi utilizzate per l'interfacciamo a database di diversa natura. E' bene sapere da subito che la forza di Java in questo settore consiste nell'avere una serie di classi e metodi che possono essere utilizzati su tutti i più comuni tipi di database. Questo è possibile grazie alla divisione che Java opera tra queste classi e i driver: in sostanza per accedere ad un database di tipo X avremmo bisogno esclusivamente di installare l'opportuno driver (vedi lezioni successive) senza dover apprendere altre funzioni del linguaggio (cosa particolarmente scomoda in altri linguaggi, ad esempio C++).

I package, a loro volta, possono contenere altri package, quindi non dovreste stupirvi se in qualche esempio doveste trovare:
import java.swing.events.*;


Ovviamente niente impedisce al programmatore che lo desideri di costruire egli stesso un package: Java per fare questo mette a disposizione l'istruzione package. Ci occuperemo di questo quando parleremo di I/O poiché l'utilizzo di package e import in modo sbagliato può comportare dei problemi a quel livello.


Corso Java - Quarta lezione: package, tipi di dato, variabili e operatori - IlSoftware.it