I pacchetti java.lang, java.awt, java.applet: prima visione


Java Sun

Earthweb
(ex Gamelan)

Jars

Java Boutique

Java Center

PIP






 JSem: 1.3

   Riprendiamo, ancora una volta il codice di Hello World:
le due prime righe sono:

import java.applet.*;
import java.awt.*;

Queste due righe "importano" i pacchetti java.applet e java.awt e quindi permettono di usare, con riferimento rapido, tutte le classi comprese in quei pacchetti. Diamo un'occhiata al contenuto di questi pacchetti.


   Precisiamo che un pacchetto ("package") è una collezione di classi ed interfacce correllate. Ci sono vari vantaggi nel creare pacchetti di classi:

  • E' chiaro che classi ed interfacce di uno stesso pacchetto sono correllate.
  • Evita conflitti di nomi: i nomi delle classi di un dato pacchetto non entreranno in conflitto con i nomi delle classi di altri pacchetti (il pacchetto determina automaticamente ulteriore spazio per la denominazione).
  • Facilita le condizioni di accesso: classi di uno stesso pacchetto possono avere accesso illimitato tra di loro e un accesso ristretto per classi fuori dal pacchetto.
  • Permette una maggior chiarezza nella strutturazione del linguaggio (questo è una delle motivazioni principali).


  •    Di solito i pacchetti sono in formato compresso: .jar (Java archive), formato molto simile al formato .zip.


       java.lang: All'origine di tutto sta la classe Object, ogni classe discende (direttamente o indirettamente) da Object e Object è l'unica classe che non ha "antenati".
    Questa classe definisce i comportamenti che tutti gli oggetti devono avere; per esempio la possibilità di confrontarsi con un'altro oggetto (per testare l'uguaglianza), la possibilità di avere una rappresentazione come stringa, la possibilità di avvisare altri oggetti che una data variabile è cambiata ecc...
       La classe Object è nel pacchetto java.lang; questo pacchetto è così fondamentale che viene automaticamente importato.

       Il pacchetto java.lang contiene le seguenti classi:
    Boolean, Character, Class, ClassLoader, Compiler, Double, Float, Integer, Long, Math, Number, Object, Process, Runtime, SecurityManager, String, StringBuffer, System, Thread, ThreadGroup, Throwable.
    e le seguenti interfacce: Cloneable, Runnable.

    Per il momento ci acconteteremo delle seguenti osservazioni:

  • Una stringa in Java è un oggetto (della classe String).
  • Le classi Double, Float, Integer, Long incapsulano i corrispondenti tipi primitivi, cioè forniscono rappresentazioni dei tipi primitivi come oggetti (i tipi primitivi NON sono oggetti); torneremo tra poco a parlare dei tipi primitivi (cf Variabili).

  •    java.awt: Ci vorrebbe un libro intero per descrivere java.awt (awt = Abstract Window Toolkit). In breve diciamo che questo pacchetto permette di gestire la grafica, l'outpout sullo schermo (che non sia quello da consolle che viene gestito da System).

    Per esempio java.awt contiene la classe:
    Component dalla quale discendono le classi:

    Button, Canvas, Checkbox, Choice, Container, Label, List, TextComponent, Scrollbar;

    dalla classe Container discendono le classi:

    Window, Panel, ScrollPane,

    mentre dalla classe TextComponent discendono le classi:

    TextArea, TextField

    Come possiamo vedere java.awt contiene tutte le classi necessarie per costruire GUI (Graphical User Interface), cioè quelle interfacce che permettono all'utente di interagire (via pulsanti da premere, textfield, textarea da compilare) col programma.


       java.applet: questo è il pacchetto che permette di fare delle applet, contiene tra altre cose la classe Applet;

    ogni applet deve estendere la classe Applet.


    questo viene dal fatto che, contrariamente ad un'applicazione Java, un'applet non ha un blocco main, infatti un'applet non viene eseguita dall'interprete runtime di Java ma da un browser (o dall'appletviewer), è quindi un processo completamente diverso. La classe Applet contiene il necessario per eseguire le applets.
    Osservare che la classe Applet è un'estensione della classe Panel (ricordiamo che Panel discende da Container la quale, a sua volte, è un'estensione di Container); in particolare un'applet arriva già con un pannello che serve da supporto per l'interfaccia grafica a finestre.

       Un'ultima considerazione importante: in Java una classe può estendere un'unica classe (e non varie classi).

    Siccome ogni applet deve estendere Applet, un'applet non può estendere nessun'altra classe.
    Questo fa sì, per esempio, che c'è un'unico modo di usare dei threads in un'applet: non potendo estendere la classe Threads, bisogna implementare l'interfaccia Runnable (torneremo più avanti su questo argomento).
    Osserviamo però che, benchè una classe possa estendere una sola classe, c'è la possibilità di usare in una classe un numero arbitrario di classi "interne" o "annidate" ("inner" o "nested classes"), vedremo questo più avanti.

       Finalmente l'outpout di un applet non viene gestito da System ma dall'AWT, quindi ogni applet deve importare il pacchetto java.awt .

       In conclusione ogni applet deve:

  • estendere la classe Applet
  • importare i pacchetti java.applet e java.awt


  • Questo non è del tutto esatto perchè basta importare quello che si usa, per esempio:

    import java.applet.Applet;
    import java.awt.Graphics;
    
    public class HWorld extends Applet{
    
    public void paint(Graphics g){
    	g.drawString("Hello World!",10,20);
    	}
    }
    

    va benissimo. E' però più comodo importare tutto il pacchetto.




     next		content		previous