Java  »  Guide  »  Guida Java 

Cosa sono i Package di Java



I package sono collezioni di classi, messe insieme in un unico "pacchetto". Costituiscono delle vere e proprie librerie cui accedere sfruttandone le funzionalità.

Possiamo creare un package racchiudendovi ad esempio le classi che vogliamo riutilizzare su diversi progetti, ma per ora esaminiamo i package già definiti in Java.

È questa la vera potenza odierna di Java, il numero di classi già definite che svolgono i più svariati compiti, ed è anche la parte che continua sempre di più a crescere e ad aggiornarsi con le nuove versioni di Java. I package di Java sono così tanti che ne descriveemo per sommi capi alcuni in un intero capitolo (il capitolo 3) della guida, e ne vedremo più o meno in dettaglio un paio, ovvero quelli che ci serviranno per definire interfacce grafiche e applet.

Ovviamente tutti i package del linguaggio sono descritti nella mastodontica guida in linea del JDK, disposizione anche online (c'è il link nella pagina www.javasoft.com o www.java.sun.com).

Il nucleo di Java contiene solo le parole chiave per la costruzione delle classi, i commenti, i normali costrutti if, switch, while, do-while, for, etichette, break, continue e return (manca il goto), che vedremo in dettaglio nel prossimo capitolo, tutto il resto è implementato nei package del linguaggio, comprese le normali primitive di Input e di Output.

In questo paragrafo vedremo la lista dei packages di Java e ne vedremo uno in particolare, quello che ci interessa vedere per scrivere la nostra prima applicazione Java ancor prima di avere visto i costrutti, ovvero quello in cui possiamo trovare le istruzioni di input e output.

La lista completa dei packages di Java 1.2.1 in ordine alfabetico è la seguente :

com.sun.image.codec.jpeg, com.sun.java.swing.plaf.windows,com.sun.java.swing.plaf.motif, java.applet, java.awt, java.awt.color, java.awt.datatransfer, java.awt.dnd, java.awt.event, java.awt.font, java.awt.geom, java.awt.im, java.awt.image, java.awt.image.renderable, java.awt.print, java.beans, java.beans.beancontext, java.io, java.lang, java.lang.ref, java.lang.reflect, java.math, java.net, java.rmi, java.rmi.activation, java.rmi.dgc, java.rmi.registry, java.rmi.server, java.security, java.security.acl, java.security.cert, java.security.interfaces, java.security.spec, java.sql, java.text, java.util, java.util.jar, java.util.zip, javax.accessibility, javax.swing, javax.swing.border, javax.swing.colorchooser, javax.swing.event, javax.swing.filechooser, javax.swing.plaf, javax.swing.plaf.basic, javax.swing.plaf.metal, javax.swing.plaf.multi, javax.swing.table, javax.swing.text, javax.swing.text.html, javax.swing.text.html.parser, javax.swing.text.rtf, javax.swing.tree, javax.swing.undo, org.omg.CORBA, org.omg.CORBA.DynAnyPackage, org.omg.CORBA.ORBPackage, org.omg.CORBA.portable, org.omg.CORBA.TypeCodePackage, org.omg.CosNaming, org.omg.CosNaming.NamingContextPackage, sun.tools.ttydebug, sunw.io, sunw.util.

Sembrano pochini in effetti, ma se pensiamo che solo il package java.io comprende 50 classi e 10 interfacce, si capisce bene quanto la collezione sia corposa.

A questo punto proviamo a sperimentare l'input e output da console, per farlo utilizziamo il package java.lang.

Per usare un package in una classe, prima della definizione della classe dobbiamo inserire l'istruzione import, ad esempio volendo usare il package java.awt dobbiamo inserire all'inizio del nostro file:

import java.awt.*;

L'asterisco (*) sta ad indicare che vogliamo usarne tutte le classi, se invece vogliamo usarne solo una classe possiamo specificarlo, ad esempio, import java.awt.Frame; potremo usare solo la classe Frame dell'awt.

Nel caso nostro, in cui vogliamo fare una operazione di output, dovremmo dichiarare all'inizio import java.lang.*; oppure, sapendo che la classe del package java.lang che contiene i metodi per fare questo è System. Potremmo scrivere:

import java.lang.System;

La classe System a sua volta avrà al suo interno una import java.io (che è il package per l'input e l'output) per accedere alle classi dell'input e dell'output, e le userà per mandare quello che vogliamo su schermo.

Abbiamo visto un esempio di package che al suo interno invoca ne invoca un altro per affidargli alcuni compiti: nelle librerie Java questo accade spesso, ed è forse per questo che Java appare un po' ostico, però superato il "blocco psicologico", la programmazione diviene semplice ed immediata.

Il package java.lang, che abbiamo appena introdotto, è il più importante di Java. java.lang racchiude le classi fondamentali del linguaggio, tanto che non serve dichiararne l'import, perché java lo importa automaticamente.

Un aspetto fondamentale dell'importazione dei package è questo: se, in un file, importiamo il package java.lang, e anche se esso importa il package java.io, nel nostro file non possiamo sfruttare le classi di java.io, per farlo dovremo importarlo esplicitamente. Questo accade anche se abbiamo una applicazione in più file (con più classi), in ogni file devo importare i package che occorrono alla relativa classe, non basta importarli in una sola.

Vediamo quindi le classi countenute nel package java.lang:

ClasseDescrizione
Booleanabbiamo detto che i tipi di dato possono essere anche rappresentati da oggetti detti
contenitoriquesta è la classe che genera i contenitori per i tipi di dato booleani (vero, falso)
Bytequesta è la classe che genera i contenitori per i tipi di dato interi corti (di un byte)
Characterquesta è la classe che genera i contenitori per i tipi di dato caratteri
Character.Subsetquesta è la classe che genera i contenitori per i tipi di dato caratteri con codifica unicode
Character.UnicodeBlockquesta è la classe che genera i contenitori per i tipi di dato caratteri con codifica unicode 2.0
Classrappresenta classi e interfacce a runtime (in esecuzione), in Java è possibile a tempo di esecuzione creare, mandare in esecuzione e compilare classi, il compilatore e l'esecutore sono mischiati in modo strano, ma a noi non serviranno queste classi "particolari", perché scriveremo delle applicazioni tranquille
ClassLoadercaricatore di classi a tempo di esecuzione
Compilercompilatore di classi a tempo di esecuzione
Doublequesta è la classe che genera i contenitori per i tipi di dato reali in virgola mobile di 64 bit
Floatquesta è la classe che genera i contenitori per i tipi di dato reali di 32 bit in virgola mobile
Integerquesta è la classe che genera i contenitori per i tipi di dato interi
Longquesta è la classe che genera i contenitori per i tipi di dato interi doppi
Mathcontiene metodi che emulano funzioni matematiche
Numberclasse di oggetti contenitori numeri generici
Objectquesta è la classe da cui derivano tutte le classi del linguaggio Java, ovvero ogni classe è sottoclasse (non per forza diretta) di questa
Packagecontiene metodi per estrapolare informazioni sui package di Java
ProcessJava è un linguaggio che permette di gestire Thread, ovvero programmini che girano in parallelo, questa classe si occupa di loro, come le altre classi di java.lang: Runtime, RuntimePermission, Thread, ThreadGroup, ThreadLocal, Throwable
SecurityManagerper la sicurezza
Shortquesta è la classe che genera i contenitori per i tipi di dato interi corti
Stringquesta è la classe che genera i contenitori per i tipi di dato stringhe di caratteri
StringBufferquesta è la classe che genera i contenitori per i tipi di dato stringhe di caratteri modificabili
Systemè la classe che interagisce con il sistema, essa contiene molti metodi utili, e dei riferimenti ad altre classi (detti class field), è quella che useremo ad esempio noi per creare un output su schermo a caratteri
Voidquesta è la classe che genera i contenitori per i tipi di dato void, ovvero senza tipo. Questo sembra un tipo di dato inutile, ma vedremo che non lo è affatto, anzi è utilissimo, infatti è utile quando si vuole definire un metodo-procedura (un metodo che non ha valore di ritorno), in Java esistono solo funzioni, le quali sono obbligate a ritornare un valore del tipo che dichiarano. Dichiarando un metodo come void, si emula la procedura, ovvero non vi è la necessità del return

Ultimi articoli Java

Utilizzare OSGi in Eclipse

Articolo di introduzione all'utilizzo di OSGI in ambiente Eclipse

Jsoup: parsing semplice di HTML5 in java

Presentazione della libreria JSOUP: un parser molto semplice per...

The Cube: una demo 3D per Android con JMonkey

Un progetto di demo passo-passo per gestire gli eventi 3d di base in...

Parsing JSON semplice con google GSON

Breve ed essenziale introduzione alla libreria di google per la...

AppFuse: realizzare un'applicazione completa (implementare i servizi)

Prosegue la serie per realizzare una app completa con AppFuse....

Altri articoli

Guide Java

Guida Apache Struts

Il primo e più utilizzato tra i framework MVC del mondo Java,...

Guida Java Spring

Scoprire il lightweight container più famoso del mondo Java....

Guida Java 6

Prendendo le mosse dalla guida Java, già presente su HTML.it,...

Altre guide

Newsletter @Programmazione

Ogni mese, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti