[Guida] Cosa sono i Package di Java

« Older   Newer »
 
  Share  
.
  1. Darkman-92™
     
    .

    User deleted


    I package sono delle collezioni di classi, racchiuse in una collezione che le accomuna. Sono in pratica delle librerie a cui l'utente può accedere e che offrono varie funzionalità.

    I package possono anche essere creati dall'utente, ad esempio racchiudendovi tutte le classi che ha definito per svolgere alcune funzioni che poi userà in vari programmi, ma questo a noi non interessa, perché ci interesserà vedere i package sicuramente più interessanti definiti in Java.

    E' 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 (JDK 1.3 ne ha ben 18Mb). I package di Java sono così tanti che ne descriverò per sommi capi alcuni in un intero capitolo (il capitolo 3) del corso, e ne vedremo più o meno in dettaglio un paio, ovvero quelli che ci serviranno per definire interfacce grafiche e applets. Ovviamente tutti i package del linguaggio sono descritti nella mastodontica guida in linea del JDK scaricabile insieme al pacchetto del compilatore (La JDK Documentation 1.3 beta è di 105 Megabyte zippata è di una trentina di Mega), la quale è anch'essa gratuita, e che se avete voglia di passare un paio d'ore a scaricarla vi consiglio di prenderla insieme al compilatore,comunque è a vostra disposizione anche in linea (c'è il link nella pagina www.javasoft.com o www.java.sun.com , è lo stesso, sono parenti stretti).

    Il nucleo del linguaggio 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 :

    CODICE
    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, sembra quasi che io abbia detto un stupidaggine in riferimento alla potenza di Java, ma se pensate che solo il package java.io comprende 50 classi e 10 interfacce capite bene che quelli di sopra sono una collezione di classi corposa.

    A questo punto vorremmo fare l'input e output da consolle, per fare questo dobbiamo usare il package java.lang .
    Per usare un package in una nostra 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:

    CODICE
    import java.awt.*;


    La * 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

    CODICE
    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 un altro package per fargli svolgere dei compiti, in queste librerie Java accade spesso questo, ed è proprio questo fenomeno che a molti fa apparire Java un linguaggio ostico, però superato questo blocco psicologico di fronte a quest'aspetto del linguaggio, la programmazione diviene semplice ed immediata.

    Ho introdotto il package java.lang, vi dico anche che questo è il più importante di Java, in questo sono racchiuse le classi fondamentali del linguaggio, tanto che non serve dichiarare l'import, perché java lo importa automaticamente.
    Inoltre vorrei soffermarmi su un aspetto fondamentale dell'importare i package, se io importo nel mio file il package java.lang, anche se esso importerà il package java.io, io dal mio file non potrò usare le classi di java.io, per farlo devo importarlo esplicitamente. Questo succede anche se programmo una applicazione in più file (con più classi), in ogni file devo importare i package che mi occorrono per la classe che sto definendo, non basta importarli in una sola. Vediamo le classi che contiene quindi questo package java.lang tanto importante per il linguaggio:

    Boolean
    abbiamo detto che i tipi di dato possono essere anche rappresentati da oggetti detti;

    contenitori
    questa è la classe che genera i contenitori per i tipi di dato booleani (vero, falso).

    Byte
    questa è la classe che genera i contenitori per i tipi di dato interi corti (di un byte).

    Character
    questa è la classe che genera i contenitori per i tipi di dato caratteri.

    Character.Subset
    questa è la classe che genera i contenitori per i tipi di dato caratteri con codifica unicode.

    Character.UnicodeBlock
    questa è la classe che genera i contenitori per i tipi di dato caratteri con codifica unicode 2.0.

    Class
    rappresenta 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.

    ClassLoader
    caricatore di classi a tempo di esecuzione.

    Compiler
    compilatore di classi a tempo di esecuzione.

    Double
    questa è la classe che genera i contenitori per i tipi di dato reali in virgola mobile di 64 bit.

    Float
    questa è la classe che genera i contenitori per i tipi di dato reali di 32 bit in virgola mobile.

    Integer
    questa è la classe che genera i contenitori per i tipi di dato interi.

    Long
    questa è la classe che genera i contenitori per i tipi di dato interi doppi.

    Math
    contiene metodi che emulano funzioni matematiche.

    Number
    classe di oggetti contenitori numeri generici.

    Object
    questa è la classe da cui derivano tutte le classi del linguaggio Java, ovvero ogni classe è sottoclasse (non per forza diretta) di questa.

    Package
    contiene metodi per estrapolare informazioni sui package di Java.

    Process
    Java è 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

    SecurityManager
    per la sicurezza

    Short
    questa è la classe che genera i contenitori per i tipi di dato interi corti.

    String
    questa è la classe che genera i contenitori per i tipi di dato stringhe di caratteri.

    StringBuffer
    questa è 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.

    Void
    questa è 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.
     
    .
0 replies since 18/8/2008, 10:40   283 views
  Share  
.