MokaByte Numero 04 - Gennaio 1997
Java BEANS 
 
di
Daniela Ruggeri
 

 

 

 

 

Introduzione

La Sun ha rilasciato le specifiche per il suo nuovo modello di componente di nome Java Beans. Ma in cosa consiste un modello di componente ? Si può pensare ad un componente come alla realizzazione della tecnologia di un macro oggetto. In generale un componente è un "cosa" riusabile, componibile, che fu disegnata, costruita ed impiegata per soddisfare una determinata necessità. Tipici componenti che molti usano oggi possono includere ogni cosa come il proprio lettore e-mail o il pezzo di browser che disegna la pagina web JavaBeans estende il concetto di Java di "scrivere una volta e girare ovunque" cercando ancora una volta di venire incontro agli sviluppatori in modo da rendergli la vita più facile, fornendo una sorta di codice "congelato" pronto per l'uso quando ce ne sia la necessità. Questo codice è in grado di girare su ogni OS e entro ogni ambiente applicativo. In pratica un Java Beans consiste in : "Un componente riusabile contenente software che può essere manipolato visualmente in un ambiente generatore di tool" Questo copre un gran numero di possibilità. Gli ambienti generatori di tool possono includere generatori di pagine Web, generatori visuali di applicazioni, generatori di interfacce GUI, o generatori di applicazioni server. Ma tali generatori possono anche consistere in un semplice editor di documenti che include dei beans all'interno del documento stesso. In pratica i Java Beans possono essere componenti semplici come bottoni e sliders o componenti sofisticati come viste di database. Alcuni Java Beans possono non avere un'apparenza GUI loro, ma possono essere composti insieme visualmente usando un generatore di applicazioni. Alcuni ambienti generatori possono operare interamente visualmente permettendo la connessione diretta dei Java Beans insieme. Altri generatori possono aiutare gli utenti a scrivere in maniera corretta le classi Java che interagiscono con un insieme di beans. Altri generatori possono fornire dei semplici linguaggi script che permettono la generazione di un insieme di beans.. I Java Beans potranno variare nelle funzionalità supportate ma avranno in comune i seguenti punti: - Un supporto per l'introspezione cosi' che i generatori di tool possono analizzare come lavora un bean - Un supporto per la personalizzazione cosi' che in un generatore di applicazioni l'utente può personalizzare l'apparenza e il comportamento di un bean - Un supporto per gli eventi con un semplice simbolismo di comunicazione (cioè un aiuto tipo wizard) che può essere usato per collegare tra di loro i bean (tipo : l'azione su di un bean comporta un effetto su di un altro bean). - Un supporto per le proprietà usabili sia per la personalizzazione che per la programmazione. - Un supporto per la persistenza, in modo che dopo che un bean è stato personalizzato in un'applicazione esiste la possibilità di conservare il suo nuovo stato mediante il suo salvataggio su disco.

Esempi di utilizzo di Java Beans.

Notare che un bean può essere usato sia da un generatore di tool che direttamente dal programmatore ; cioè tutte le chiavi API relative a eventi, proprietà, e persistenza sono state disegnate per essere utilizzate sia direttamente dal programmatore che dal generatore di tool. Per chiarire meglio il concetto secondo il quale un Java Beans può essere usato sia in un generatore di tool che in una applicazione Java scritta a mano, riportiamo la traduzione di 2 esempi presenti nelle specifiche dei Java Beans fornite da Javasoft, il primo esempio illustrante l'uso di componenti Java Beans in un generatore di tool , e il secondo l'uso degli stessi in un Applet scritta a mano. Negli esempi si fa uso della terminologia "oggetto serializzato" : si tratta di una tecnica che usa dei meccanismi per salvare oggetti su file, semplicemente salvando una rappresentazione dell'oggetto, e poi fornendo un costruttore o un meccanismo in grado di ricreare l'oggetto dal file. Questi file hanno estensioni ser e gli oggetti contenuti vengono detti "serializzati". Inoltre si fa uso di alcune classi e alcuni metodi presenti nelle Java Beans 1.0 API fornite dalla Sun per costruire Java Beans :
1. Beans. Classe appartenente al package java.beans che fornisce alcuni metodi per leggere le caratteristiche generali del bean.
1.1. Beans.instantiate(ClassLoader, String). Metodo che legge in un bean da un oggetto serializzato.
2. Introspector. Classe, appartenente al package java.beans, che fornisce una maniera standard per i tools di apprendere tutto circa le proprietà, gli eventi e i metodi supportati dallo specifico Java Bean.
2.1. Introspector.getBeanInfo. Metodo che impara tutto sulle proprietà, i metodi e gli eventi del Java bean e restituisce le informazioni sotto forma di un oggetto BeanInfo.
3. Customizer. Interfaccia, appartenente al package java.beans, che fornisce una applicazione di aiuto GUI per creare un modello del Java Bean (si pensi ai vari wizard presenti in alcuni ambienti di sviluppo che mediante una serie di pannelli grafici aiutano gli sviluppatori a creare l'oggetto di cui hanno bisogno).
4. BeanInfo. Interfaccia, appartenente al package java.beans, che fornisce i metodi per reperire informazioni circa sulle proprietà, i metodi e gli eventi del Java bean in esame.
5. ActionListener. Interfaccia appartenente al package java.awt.event (nuova libreria API del jdk java 1.1.) che ha il compito di intercettare gli eventi action.
5.1. ActionListener.actionPerformed(ActionEvent). Metodo che viene invocato quando si erifica un evento action.
6. Button. Classe appartenente al package java.awt (nuova libreria API del jdk java 1.1.) che gestisce il componente bottone.
6.1. Button.addActionListener(ActionListener). Metodo che permette di registrare l'evento action riguardante il bottone nello specifico intercettatore di eventi action ActionListener).
7. ActionEvent. Interfaccia appartenente al package java.awt.event (nuova libreria API del jdk java 1.1.) che riunisce tutti i metodi che gestiscono le informazioni sugli eventi action.
8. ClassLoader. Classe, appartenente al package java.awt.event (nuova libreria API del jdk java 1.1.) che può essere usata per definire una politica di caricamento delle classi java nell'ambiente runtime.
9. Class. Classe, appartenente al package java.awt.event (nuova libreria API del jdk java 1.1.) L'istanza di una classe Class rappresenta l'oggetto più astratto tra i vari formati Java
9.1. Class.getClassLoader(). Metodo che ritorna la classloader caricata dalla specifica Class. Ritorna null se questa Class non è stata caricata da una classloader.

Uso di un generatore di applicazione per costruire un Applet

In questo scenario un utente usa un generatore di applicazioni per creare un applet. Questo prodotto genera vari pezzi di codice sorgente e fornisce all'utente dei modelli in generale visuali (template) corrispondenti a varie funzionalità nelle quali l'utente può digitare il proprio codice sorgente. Riportiamo tutti i passi che l'utente deve seguire per sviluppare la sua applet (in questo esempio si fa riferimento ai metodi e alle classi presenti nelle API JavaBeans fornite da JavaSoft) :

1. Comprare i tools.

2. Costruire l'Applet 3. Personalizzazione dei beans. 4. Collegare i beans 5. Costruire un package riguardante l'applet 6. Testare il pacchetto Uso di beans in un Applet scritto a mano.

In questo scenario usiamo alcuni componenti Java beans in un Applet scritto a mano. This scenario è abbastanza simile alla costruzione in un Appplet di un semplice componente AWT, ed è inteso illustrare come i beans possono essere usati senza particolari tools.

1. Caricare i tools.

2. Costruire l'Applet
class MyApplet extends java.awt.Applet

  {

        public void init()

        {

          btn = new dave.Button();

          add(btn);

             try  {

                 ClassLoader cl = Class.forName("dave.DatabaseViewer").getClassLoader();

                 dbViewer = Beans.instantiate(cl, "dave/DatabaseViewer.ser");

                 add(dbViewer);

             }

             catch (Exception ex)

                 {

                 throw new Error("Non si può costruire l'oggetto dbViewer");

             }

       }

       private DatabaseViewer dbViewer;

       private Button btn;

}

3. Personalizzazione dei beans.         dbViewer.setURL("jdbc:msql://aardvark.eng/stuff");

4. Collegamento dei beans

        void actionPerformed(java.awt.event.ActionEvent) {

                dbViewer.update(); // esegue un'azione sul DB viewer.

        }

5. Costruire un package riguardante l'applet 6. Testare il pacchetto
 

class MyApplet extends java.awt.Applet implements java.awt.event.ActionListener

        {

        // Inizializzazione dell'Applet.

                public void init()

                {

                        btn = new dave.Button();

                        add(btn);

                        try

                        {

                            ClassLoader cl = Class.forName( "dave.Button").getClassLoader();

                            dbViewer = Beans.instantiate(cl, "dave/DatabaseViewer.ser");

                            add(dbViewer);

                        }

                        catch (Exception ex)

                        {

                        throw new Error("Non si può costruire l'oggetto dbViewer");

                        }
 
 

                        btn.setBackground(java.awt.Color.Red);

                        dbViewer.setURL("jdbc:msql://aardvark.eng/stuff");
 
 

        // Aggancia al bottone l'evento che è stato previsto.

                        btn.addActionListener(this);

                }
 
 

        // Metodo che cattura l'action events dal bottone.

                void actionPerformed(java.awt.event.ActionEvent evt)

                {

                        dbViewer.update(); // esegue un'azione sul DB viewer.

                }

                private DatabaseViewer dbViewer;

                private Button btn;
 
 

        }

Ambienti di Sviluppo che includono i Java Beans.

Borland JbuilderPer quanto riguarda la realizzazione pratica dei Java Beans possiamo dire che Borland International Inc. ha annunciato a WASHINGTON il 30 ottobre 1996 il suo nuovo programma JBuilder Partner per venditori di software creatori di componenti Java Beans. Borland ha lanciato il suo Partner Program in seguito all'annuncio fatto da JavaSoft divisione software della Sun Microsystems di aver ultimato le specifiche per Java Beans. JBuilder è il nuovo nome di Latte, l'ambiente di sviluppo professionale per Java della Borland e fornisce un ottimo supporto per il modello a componenti Java Beans. Questo programma è stato disegnato per aiutare il programmatore nello sviluppo e nei test dei Java Beans costruiti e permette l'uso di predefiniti componenti da assemblare nella propria applicazione. Si possono anche acquistare componenti da altri venditori o costruirne dei nuovi da sé per ottimizzare lo sviluppo di un processo e poter così riusare la sua funzionalità. I componenti JavaBeans scritti dagli sviluppatori una volta sola possono essere usati per farli girare ovunque. Gli sviluppatori potranno quindi usare tali componenti per creare applicazioni che potranno girare in COM, OpenDoc, e LiveConnect della Netscape. Inoltre tali applicazioni saranno indipendenti dalla piattaforma, potranno così girare indifferentemente su PC, Macintosh, UNIX, network computer, o su ogni altra piattaforma che supporti Java. Si possono trovare informazioni presso il sito http://www.borland.com

Symantec Visual Café

Un'altro ambiente di sviluppo da prendere in considerazione è Symantec Visual Café 1.0. Esso è accessibile immediatamente per Windows 95, NT 3.51 e NT 4.0. La versione per Macintosh sarà disponibile presto. Si possono trovare informazioni presso il sito http://cafe.symantec.com. Visual Café è un ambiente di sviluppo visuale che permette di costruire velocemente sofisticate applicazioni usando i componenti JavaBeans. La nuova tecnologia include una programmazione a 2 vie, la visualizzazione rea
 
 

Conclusione

Insomma sembra proprio che oggi gli sviluppatori abbiano i mezzi per la prima volta nella storia dell'informatica, di realizzare il loro grande sogno : "Codice portabile, riusabile, semplice, supportato da ambienti di sviluppo generatori di tool, che facilitando la scrittura di applicazioni, limitano anche gli eventuali errori di programmazione". Abbiamo ancora molta strada da fare, ma il futuro è promettente ed eccitante...
 
 

 

MokaByte rivista web su Java

MokaByte ricerca nuovi collaboratori
Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it