Java: i pacchetti indispensabili
Indispensabili per lo sviluppatore sono le API J2SE, raggiungibili all’indirizzo: http://java.sun.com/j2se/1.5.0/docs/api/. Tutti i pacchetti aggiornati alla versione 1.5 sono dettagliatamente descritti con sintassi ed esempi di utilizzo, fornendo una risorsa fondamentale per il lavoro quotidiano nel linguaggio di programmazione Java.
Aprendo il sito delle API, il browser si dividerà in tre pannelli essenziali per la navigazione:
- In alto nella colonna di sinistra troviamo la lista dei Packages;
- In basso, sempre nella colonna di sinistra, in ordine alfabetico, abbiamo tutte le Interfacce e le Classi;
- Cliccando su una di esse potremo leggere nel corpo centrale la descrizione della classe, controllarne la gerarchia, le interfacce implementate, le sottoclassi, la sintassi, l’utilizzo e l’utile Sommario dei Metodi, che ci illustra e descrive tutte le azioni che l’oggetto potrà eseguire;
I principali packages
Impossibile non citare il Package java.lang, che include il cuore del codice di sviluppo Java stesso. Qui troviamo classi fondamentali come i Tipi di Dati: int, double, byte, boolean; oggetti come Class, Object, System, String, Thread e Package. Inoltre, è importante menzionare il Package java.io, che serve per leggere e scrivere dal file system. Ci permette di scrivere un semplice file di testo e memorizzarlo oppure di leggerne le righe. Ad esempio, nella Classe File, possiamo osservare la lista dei Metodi che eseguono azioni come createNewFile(), delete(), compareTo(File), exists(), getName(), getPath(), length(), ecc. Ognuno di questi metodi svolge un compito specifico e permette di lavorare con il file system per memorizzare e modificare i file.
Esistono, inoltre, dei Packages dedicati esclusivamente alla grafica, dai più semplici e primitivi oggetti come in java.awt, a soluzioni più professionali come javax.swing. Con gli oggetti istanziati dalle classi AWT, è possibile disegnare e manipolare qualsiasi elemento grafico necessario, sia per un’applicazione sia per un’applet. Il package in questione contiene, infatti, oggetti come: Frame, Font, Image, GradientPaint, Label, Menu, Scrollbar e TexturePaint.
Ad esempio, con la Classe java.awt.Window è possibile far comparire una finestra simile a un popup anche senza bordi e menu, dove è possibile disegnare figure geometriche. Nell’esempio seguente disegniamo un rettangolo a 10 pixel dal punto di origine in alto a sinistra:
Window w = new Window(Window owner, GraphicsConfiguration gc);
Rectangle bounds = gc.getBounds();
w.setLocation(10 + bounds.x, 10 + bounds.y);
Utilissima è la Classe java.awt.Button, che ci permette di catturare un evento dell’utente ed eseguire il codice di riferimento. Il Metodo è chiamato con addActionListener(), mentre per impostare l’etichetta del pulsante si usa il Metodo setLabel().
Per esigenze grafiche più complete e professionali si utilizza il Pacchetto javax.swing. Qui, i nomi delle Classi utilizzate per la grafica si distinguono facilmente con la lettera J anteposta a loro: JLabel, JFrame, JPanel, JMenu, JTable, JTree, ecc. Questi pacchetti offrono oggetti utilissimi, come alberi genealogici, tabelle e campi per password.
Per gli amanti dei calcoli matematici, abbiamo il pacchetto java.math, dove, per chi non volesse calcolare il Pi Greco, troviamo la costante già bella e pronta, raggiungibile con java.math.PI. Inoltre, classi indispensabili come BigDecimal e BigInteger sono inclusi. Per convertire un intero semplice in un BigInteger, basterebbe utilizzare il metodo BigInteger.valueOf(intero).
Possiamo anche comprimere i nostri sorgenti Java in un file.jar utilizzando il pacchetto java.util.jar, o sfruttare il sistema di compressione più usato, GZIP, implementato nel Package java.util.zip. Per quanto riguarda il trattamento di dati sensibili, come password o numeri di carte di credito, è possibile utilizzare il Package javax.crypto (esteso a javax.crypto.interfaces e javax.crypto.spec). Per il trattamento di immagini sul file system, si utilizza invece il Package javax.imageio. La Classe ImageReader() serve per leggere i file d’immagine, mentre ImageWriter() per memorizzarli, implementando l’interfaccia ImageTranscoder.
Naturalmente non poteva mancare il Pacchetto riguardante la rete (java.net) e le connessioni alle chiamate remote (java.rmi), oltre al Pacchetto sulla sicurezza (java.security). Per gli amanti della programmazione a oggetti e a componenti, con una moltitudine di estendibilità, possiamo sviluppare JavaBean, che facilitano notevolmente la scrittura di codice riutilizzabile, incapsulandolo in componenti chiamanti per l’appunto JavaBean. In un progetto Client-Server, equipaggiato da un fedele Application Server, è possibile sviluppare componenti nel server e utilizzarli nel codice client, come nelle pagine JSP o nelle Servlet. Quest’altra tecnologia ci è offerta dalla distribuzione J2EE Enterprise Edition, mediante gli Enterprise Java Bean (EJB); in aggiunta, rivoluzionando il sistema di trasporto di dati con le JMS (Java Message Services).
Infine, un ultimo sguardo al pacchetto java.sql: ricco di interfacce, tra cui Driver e Connection (per la connessione al Database), ResultSet (per immagazzinare i risultati delle Query), SQLInput, SQLOutput, SQLData e Statement per lavorare con le istruzioni SQL. La conoscenza di questi pacchetti è fondamentale per uno sviluppatore Java che desideri occuparsi di database e manipolazione dei dati.