MokaByte Numero 17 - Marzo 1998
Symantec 
Visual Cafe 2.0
di
Massimo Carli
Web Development Windows Edition  Visual Cafe 2 della Symantec è un tool visuale per la realizzazione di applet ed applicazioni in Java conformi alla versione 1.1 del JDK 

 




Introduzione
Symantec Visual Cafe 2 si definisce come il primo tool visuale (RAD) progettato appositamente per il linguaggio Java attraverso il quale è possibile creare, in modo WYSIWYG (What You See Is What You Get), applicazioni ed applet. La novità, rispetto alla versione precedente del prodotto, è la completa compatibilità con il JDK1.1 (viene fornito il JDK1.1.3) e conseguentemente la gestione delle API per l'accesso ai Database (JDBC), la creazione dei file Jar e la creazione di componenti Bean. La versione a disposizione per questa prova è la Web Development e viene fornita con i seguenti manuali:

Getting Started: Installation and Tour User's Guide
Visual Page User's Guide
Visual Page Getting Started

che, con il ricco help in linea, permettono di avere tutto il necessario per acquisire padronanza con il tool, già di per sé molto intuitivo. Per questo test abbiamo usato una macchina con processore Pentium 166 e 64M di RAM. La configurazione minima per l'installazione prevede, comunque, la classica combinazione di processore 486DX con almeno 16M di RAM.

 

Installazione e Desktop
L'installazione del prodotto è molto semplice e consiste nella esecuzione del file di Setup. Nella parte conclusiva viene chiesto se aggiornare il file autoexec.bat in modo automatico o se provvedere manualmente. Consiglio la prima scelta in quanto vengono settate in modo automatico le variabili di ambiente CLASSPATH e PATH e viene comunque mantenuta una copia di backup relativa alla configurazione precedente. Terminata la fase di installazione, che richiede circa un paio di minuti, e dopo aver riavviato il computer, è possibile eseguire VisualCafe 2 cliccando sulla corrispondente icona nel menu delle applicazioni di Windows.
All'avvio, verrà visualizzata la barra degli strumenti con i bottoni raggruppati secondo le seguenti funzionalità:
 

La toolbar non si differenzia, quindi, di molto da quelle degli altri tool per Java.
Caratteristica di VisualCafe 2 è, invece, la ricchezza di finestre di dialogo, tutte utili, che permettono di agire in modo intuitivo sia sull'interfaccia grafica dell'applet o applicazione, che sul corrispondente codice. Per visualizzare ciascuna di queste dialog è sufficiente premere il relativo pulsante nella toolbar. Esse sono
 
 

L'Insert Class Wizard
Symantec Visual Cafe 2.0 Web Development dispone dei seguenti Wizard:

Il primo Wizard si invoca dal Class Browser attraverso il menu che si ottiene premendo il pulsante destro del mouse nel frame relativo alle classi. La prima parte del Wizard permette di scegliere se andremo a creare una classe oppure una interfaccia. Le successive scelte saranno conseguenza di questo primo passo. Se si sceglie di creare una classe, si dovranno specificare le informazioni relative alla sua dichiarazione ovvero il nome, la classe che estende, il package di appartenenza ed il modificatore di accesso (public, package ecc..). In questa fase è possibile specificare anche se si tratta di classi final o abstract. La seconda parte del Wizard permette, invece, di scegliere le eventuali interfacce che la classe dovrà implementare tra quelle elencate in una lista, mettendole in un ipotetico basket. L'ultima fase permette di specificare quali siano i metodi ereditati dalla classe parent sui quali fare l'overloading. Premendo il pulsante Fine si ha, quindi, la generazione del codice corrispondente e l'aggiunta della classe creata nella Project Window. Se dobbiamo creare una interfaccia il procedimento sarà analogo, solamente che sparisce la relazione di implementazione. Questo Wizard è lo stesso che viene visualizzato a partire dallo Hierarchy Editor solamente che, in quel caso, la classe da estendere o l'interfaccia da implementare, sono state decise con il primo clic del mouse.

 

L'Interaction Wizard
Un bean è caratterizzato, oltre che dalle proprietà e dai metodi, dagli eventi che è in grado di generare. Il modello ad eventi stabilito dalle specifiche JavaBean si chiama delegation model e prevede la definizione, per ogni evento, di oggetti sorgenti e di oggetti ascoltatori. Un oggetto sorgente è quello che genera l'evento, mentre l'oggetto ascoltatore è quello che esegue una determinata azione a seguito dello stesso. Secondo il modello per delega, solamente gli oggetti ascoltatori che si sono registrati come tali alla sorgente per un determinato evento, sono sensibili al suo verificarsi. La sorgente dovrà quindi richiamare un metodo degli oggetti ascoltatori dipendente dall'evento generato. Questo si ottiene attraverso l'utilizzo di interfacce che raccolgono l'insieme dei metodi che possono essere eseguiti in relazione ad un evento. È evidente che se un oggetto vuole essere un ascoltatore per quell'evento, deve implementare la relativa interfaccia. Supponiamo, però, di disporre di due componenti e di voler fare in modo che il primo divenga ascoltatore del secondo per un certo evento. Un metodo sarebbe quello di modificare il codice del primo componente in modo da registrarsi al secondo per quell'evento. La modifica del codice di un componente da parte di un tool non è certo figlia della filosofia per componenti secondo la quale ogni oggetto è utilizzato agendo solamente sul suo stato e sul modo di interagire con altri. Devono essere, allora, generate delle particolari classi, dette Adapter, che fungono da tramite. Se la classe A deve eseguire il metodo a() a seguito del verificarsi di un evento E generato da B, l'adapter implementerà l'interfaccia corrispondente ad E, si registrerà come ascoltatore di B e, come conseguenza del verificarsi dell'evento E, eseguirà il metodo a() di A. L'adapter sarà quindi ascoltatore rispetto alla sorgente e sorgente rispetto all'ascoltatore. L'Interaction Wizard permette di gestire gli eventi in modo molto semplice. Si seleziona l'oggetto sorgente dell'evento nella Project Window oppure nel Form Designer e, attraverso il menu ottenuto con il pulsante destro del mouse, si invoca il l'InteractionWizard. Esso può essere costituito da una o due pagine a seconda che il metodo da eseguire conseguentemente all'evento abbia o meno parametri. Comunque il primo passo consiste nello scegliere l'evento da gestire. A questo punto è possibile selezionare l'oggetto ascoltatore tra quelli presenti nel project. Verranno allora visualizzate tutte le possibili azioni che possono essere eseguite. Se l'azione prevede la specifica di parametri, il pulsante Fine diventerà Avanti e sarà quindi possibile selezionarli. Questa ultima possibilità può essere molto utile in quanto permette di gestire tipi di parametri diversi in modo appropriato. A seguito di un evento è possibile, per esempio, scegliere una azione che consiste nel visualizzare una immagine. Il metodo permetterà di scegliere l'immagine da visualizzare con la tipica opzione di browse. Le azioni associate ad un evento dal Wizard sono espresse in parole e non in termini di metodi. È possibile invocare l'Interaction Wizard anche in modo visuale premendo il relativo pulsante nella toolbar. Il puntatore del mouse cambierà forma e basterà cliccare sulla sorgente e, tenendo premuto il pulsante, rilasciarlo sull'oggetto destinatario. Apparirà quindi l'Interaction Wizard con alcune proprietà già settate.

 

Creazione di Bean
Per creare un nuovo componente Java basterà scegliere la relativa opzione in fase di creazione di un nuovo project. Saranno quindi create tre classi: una relativa al bean vero e proprio, una relativa alla classe JavaBean ed un applet che permette di verificarne il funzionamento. Se vogliamo editare gli eventi del bean utilizzando completamente le potenzialità dell'InteractionWizard (descrizione in parole delle possibili azioni conseguenti il verificarsi di un evento, scelta dei relativi parametri, ecc.) dovremo utilizzare le classi ConnectionDescriptor e SymantecBeanDescriptor del package symantec.itools.beans. Queste classi estendono rispettivamente le classi FeatureDescriptor e BeanInfo del package java.beans del JDK e permettono di fornire ulteriori informazioni che l'introspection specifica del tool permetterà di leggere. Attraverso la creazione di oggetti ConnectionDescriptor descriveremo ciascuna possibile connessione del bean con altri. Attraverso un oggetto di tipo SymantecBeanDescriptor, descriveremo a Visual Cafe 2, alcune caratteristiche del bean quali il nome relativo al bean nella toolbar, l'icona da affiancare al bean nel caso di drag nel FormDesigner, ecc. Un esempio di dichiarazione di una possibile azione conseguente ad un evento è la seguente:

    connection=new ConnectionDescriptor("output", "String", "","%name%.getFrame()",
                                                    "Get the HTML Link Frame Name");

in cui si crea un oggetto symantec.itools.ConnectionDescriptor specificando:

Una espressione che rappresenta il codice che deve essere presente prima di creare quello relativo alla connessione (in questo caso nessuno).
Una espressione che definisce il codice da creare per la connessione. All'interno di questo parametro (di tipo String) è possibile utilizzare simboli del tipo %name%, %class% e %arg% che fanno riferimento rispettivamente al nome della classe/componente, al nome esteso della stessa oppure ad argomenti di metodi utilizzati per una connessione di output.
Una descrizione dell'azione relativa al metodo.
Il procedimento di creazione della classe BeanInfo di supporto, anche se leggermente macchinoso, è comunque molto semplice.
Una volta creato il Bean è possibile creare un file jar che lo contenga in ogni sua componente sia essa una classe, un suono o un'immagine. Visual Cafe 2 dispone di un piccolo tool per la creazione dei file jar che permette di scegliere l'insieme dei file da comprimere. Automaticamente genera il manifest file e, di seguito, il file jar. Una volta creato un bean è possibile aggiungerlo al menu dei componenti attraverso una semplice operazione di drag and drop. Il bean sarà visualizzato attraverso l'icona specificata nella classe SymantecBeanInfo.
Con Visual Cafe 2 è possibile, inoltre, aggiungere alla Component Library, un nuovo componente fornito da terzi attraverso l'opzione Insert Component into library. Una volta scelto il componente sotto forma di file .jar o .class verrà eseguita una operazione di instrospection che permetterà di ottenere l'icona rappresentativa dell'oggetto e di determinare le informazioni relative alle proprietà ed eventi dello stesso. A tale scopo saranno utilizzate le informazioni fornite esplicitamente attraverso l'oggetto BeanInfo (introspection esplicita) se presente, oppure saranno ricercati quei metodi o proprietà soddisfacenti le regole di design pattern (introspection implicita). Verranno quindi create le informazioni per la PropertyList e per l'InteractionWizard.
 

Debugging
Dopo aver provveduto al Building dell'applicazione o dell'applet, è possibile farne il debugging. Una tipica operazione di debugging con Visual Cafe 2 consiste nella visualizzazione del codice nella Source Window e nell'inserimento, nei punti cruciali del programma, dei breakpoint ovvero dei punti in cui l'esecuzione si dovrà bloccare. Questo viene fatto semplicemente scegliendo la relativa opzione nel menu visualizzato premendo il pulsante destro del mouse in corrispondenza della riga voluta. Basterà quindi eseguire il programma in modalità debug attraverso la corrispondente opzione nel menu Project. Il Workspace sarà automaticamente settato in debug ed il programma si bloccherà in corrispondenza dei breakpoint inseriti. A questo punto sono disponibili numerose finestre di dialogo che permettono di avere abbondanti informazioni sull'esecuzione del programma ovvero:

 

Quando si è bloccati su un breakpoint è possibile proseguire in vari modi premendo il relativo pulsante nella toolbar: Il debugger di Visual Cafe 2 è molto semplice da utilizzare e si può considerare un ottimo strumento.

 

Codice generato e compatibilità
Visual Cafe 2.0 Web Development si basa sulle API del JDK1.1 e quindi gli applet creati potrebbero avere dei problemi con determinati browser non aggiornati all'ultima versione. Per esempio Netscape Communicator, benché disponga della JVM della versione 1.1 ha problemi relativamente all'AWT (Abstract Window Toolkit) ed alla gestione degli eventi che è basilare nella programmazione dei bean. Il codice generato è comunque di ottima qualità sia rispetto ai nomi scelti nella rappresentazione delle variabili corrispondenti ad oggetti inseriti (per i metodi si utilizzano addirittura le regole del design pattern) sia per quello che riguarda la sua leggibilità (indentazione del codice, spazio per i commenti, ecc.). Per quello che riguarda il compilatore, Visual Cafe 2 permette di scegliere se utilizzare quello standard del JDK oppure quello della Symantec con velocità di compilazione sicuramente superiore. È sufficiente scegliere la relativa opzione nelle Options del project. Questo può servire per utilizzare gli strumenti di programmazione di Visual Cafe 2 anche con il JDK 1.0.2. Ovviamente bisognerà rinunciare ad utilizzare l'Interaction Wizard o i template forniti automaticamente in fase di scelta del project, che si basano su concetti legati al delegation model. La versione Web Development non contiene nessuno strumento per la gestione dei database oltre alle normali API JDBC fornite con il JDK1.1. A tale scopo è disponibile il prodotto dbAnyware che prevede l'aggiunta di nuovi componenti per l'accesso ai database e per la loro gestione, ma non è presente nella confezione Web Development. L'attributo Web Development è dovuto al fatto che con il CD-Rom viene fornito il tool Visual Page, per l'editazione di pagine Web.

 

Conclusioni
In questo articolo abbiamo visto le caratteristiche principali di Visual Cafe 2.0 Web Development cercando di descrivere al meglio gli strumenti che il tool offre a supporto della programmazione in Java. Il prodotto, aggiornato al JDK1.1, è ricco di tool che semplificano le fasi di digitazione del codice, ma può sembrare povero di Wizard, in quanto contiene solamente quello per la creazione di classi e per la gestione degli eventi secondo il delegation model. Conseguentemente, Visual Cafe 2 non è adatto a coloro che desiderano realizzare applicazioni o applet Java senza scrivere righe di codice, ma a programmatori che conoscono abbastanza bene il linguaggio nella sua ultima versione. Come visto, per creare un bean è necessario, per esempio, conoscere le specifiche JavaBeans per poter utilizzare le classi della Symantec. Altro punto a favore di Visual Cafe 2 è una distinzione netta tra i componenti caratteristici del tool e quelli standard. In questo modo è possibile scegliere di utilizzare solamente quelli definiti nel JDK ed avere vantaggi nel caso di scaricamento di un applet. Vantaggioso è il fatto che componenti creati possano essere aggiunti a quelli già disponibili con un semplice drag and drop.
 

 
Massimo Carli, laureato in Ingegneria Elettronica presso l'Università di Padova, si occupa di Java da circa due anni e sviluppa, presso una azienda vicentina, applicazioni per Internet ed Intranet completamente in Java. 

 

 

MokaByte rivista web su Java

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