Questo articolo si riferisce alla versione 1.0 preview release 2.0, versione non definitiva, rilasciata privatamente per poter eseguire questo test. Al momento della lettura della pubblicazione questo articolo sarà obsoleto, dato che il 15 di Giugno è in programma il rilascio di una beta pubblica

Le novità introdotte rispetto agli altri ambienti di sviluppo sono diverse, ma le più importanti sono sicuramente tre: la prima riguarda il cuore di JBuilder che è stato realizzato in Java e che per questo permette di sviluppare con elevata semplicità e potenza. Questa possibilità è dovuto anche alla seconda grande novità del prodotto, ovvero la presenza dei JavaBeans la cui manipolazione può essere fatta i maniera visuale. Infine dal punto di vista dellinterfaccia utente, lintroduzione della finestra AppBrowser permette una navigazione spaziale fra le varie risorse, sia in senso temporale rispetto alla history del lavoro. Come ormai siamo abituati ad aspettarci linterazione fra programmazione visuale e testuale avviene in maniera bidirezionale, cosa che conferisce a JBuilder la denominazione di 2-WayTool: in particolare in questo caso la comunicazione delle modifiche fra i due ambienti avviene in modo molto veloce e corretto, permettendo così unelevata flessibilità di lavoro. Il compilatore e gli altri strumenti di sviluppo sono al momento allineati col JDK 1.1.

Anche se le prestazioni complessive dellambiente integrato (senza considerare il compilatore e il debugger) non sono elevate, bisogna tener conto del fatto che si tratta di una versione non definitiva e soprattutto che è stata scritta in Java. Si deve però dire che in alcuni tipi di operazioni la velocità di esecuzione è equiparabile ad quella di altri pacchetti commerciali Anche se in versione provvisoria il compilatore e linterprete Java sono molto più efficienti dei loro equivalenti rilasciati da Sun. Limpostazione di questo test del prodotto, è quella di analizzare a grandi linee il prodotto cercando di dedurre quella che è stata la filosofia di Borland nel creare JBuilder. Per la natura provvisoria ed incompleta di questa versione non si sono approfonditi certi aspetti come la ricerca dei bug o la misura delle prestazioni. Tali analisi sono rimandate a quando sarà disponibile una versione definitiva.

2 Ambiente

Figura 1
Figura 1

Lambiente, al momento, non offre molte funzionalità user firendly, ed anche i vari wizard sono ridotti ai minimi termini: nonostante ciò si deve dire che il pacchetto offre già una buona usabilità, e dopo aver preso confidenza col nuovo prodotto, si finisce col gradire questa estrema sintesi di componenti grafici. Ovviamente non è possibile stabilire con certezza se tale essenzialità sia frutto di una scelta precisa fatta dagli sviluppatori del tool, oppure se non sia semplicemente conseguenza dello stato di parziale completamento del prodotto. Interpretando certi particolari dellinterfaccia, si può ipotizzare comunque che la strada di Borland sia quella di rilasciare un prodotto finale semplice, sintetico, ma non per questo meno potente ed utile. La finestra principale è costituita dallormai classica toolbar che però in questo caso è riempita di pochi ed essenziali elementi: un menu standard, una sezione di pulsanti dedicati alla gestione risorse (file), una per la compilazione, debug ed esecuzione, ed infine una toolbox, detta Component Palette che mette a disposizione una serie molto fornita di componenti per la programmazione sia visuale che testuale. Vediamo di analizzare tutte queste sezioni dellambiente.

Figura 2
Figura 2

2.1 Gestione file

Questa sezione, che se segue la logica ormai standard di tutti gli applicativi in ambiente Windows 95/NT, si differenzia per una leggera tendenza alla sintesi ed alla essenzialità: ad esempio lapertura di un file consente al tempo stesso di crearne uno nuovo semplicemente inserendo manualmente un nome di file non esistente. Forse non a tutti può piacere una soluzione del genere, ma personalmente credo che sia un buon modo per ridurre il cosiddetto mouse-arounding.

2.2 Progetto

Relativamente alla gestione dei file di un progetto, si deve dire che in realtà sarebbe più corretto parlare non di file, ma di oggetti o risorse: infatti in JBuilder viene a diminuire dimportanza il concetto di file, mentre assume un peso fondamentale quello di risorsa od oggetto. Inoltre lambiente non vincola lo sviluppatore in rigidi schemi di non facile modifica, in quanto, un progetto, è semplicemente un contenitore nel quale è possibile inserire alcune risorse collegate logicamente gerarchicamente fra loro in vario modo. Questo punto è valido anche se si è creato il progetto con un wizard o se si è partiti dal cosiddetto empty-project.

Una volta che si è iniziata la sessione di lavoro, creando un progetto ex novo, è possibile inserire in modo molto semplice elementi aggiuntivi (esempio Beans o classi Java), sia operando manualmente in modalità testuale, sia automaticamente in quella visuale, trasformando radicalmente la natura del progetto. In altri ambienti la creazione del progetto invece è leggermente più rigida, obbligando lo sviluppatore a seguire un percorso ben preciso. La finestra di impostazione delle proprietà del progetto (la stessa del project wizard) è, al momento, troppo sintetica, visto che permette di impostare solo le directory di lavoro e poco altro, ma sicuramente nella versione definitiva sarà possibile un maggiore intervento da parte del programmatore.

Figura 3
Figura 3

2.3 Componenti

Come ultima sezione dellambiente troviamo la Tools Palette, una multi-tab toolbar in cui sono paginati una raccolta molto utile di beans inseribili visualmente nel progetto. I gruppi in cui sono raccolti i vari componenti sono contraddistinti dalle etichette AWT, Controls, Containers, Dialogs, Data Access, Sun Applets, più unultima pagina personalizzabile con componenti propri. La prime due sezioni offrono oggetti utilizzabili per costruire interfaccie grafiche, ed in particolare la sezione denominata AWT è composta dagli oggetti standard che compongono la AWT del JDK, mentre in Controls troviamo oggetti simili ma dalle funzionalità leggermente più estese. Le funzionalità degli oggetti che compongono i gruppi Containers e Dialogs sono facilmente intuibili, mentre il gruppo Sun Applet offre alcuni degli esempi che sono inclusi nel JDK di Sun riproposti in forma di Beans dotati di vita propria e che possono quindi essere utilizzati come veri e propri componenti intercambiabili. Particolarmente interessante è il gruppo Data Access che permette di creare applicazioni che interagiscono con database partendo dal classico oggetto database fino alle tabelle ed ai recordset. Tutti i beans reperibili dalla palette sono inseribili in maniera visuale nel progetto anche se non hanno una interfaccia grafica da disegnare su un canvas. Importante è notare che lambiente integrato, potendo appoggiarsi su una Java Machine sempre in funzione, permette di vedere in esecuzione i vari componenti anche durante la fase di design. La possibilità di poter veder allopera un oggetto anche durante la fase di progettazione, permette di prevedere laspetto finale dellapplicazione, ma soprattutto permette di disporre di ottimo strumento di lavoro per impostare alcune proprietà dei vari oggetti. Ad esempio per il component Database è possibile testare durante la sua istanziazione la connessione al DBMS e gli eventuali diritti di accesso dellutente.

La sezione dei componenti personalizzabile da utente permette di inserire componenti aggiuntivi alla palette realizzati secondo le specifiche JavaBeans. Al momento laggiunta di un componente deve essere fatta a mano modificando il JBuilder.ini ed inserendo il file col codice nella directory opportuna, ma è previsto un wizard apposito per le versioni future. Per aggiungere un componente si devono compiere essenzialmente due operazioni: inserire il file nella directory opportuna in base al CLASSPATH della macchina e poi specificare in JBuilder.ini la posizione della icona che verrà visualizzata nella palette, aggiungendo una riga nel file di inizializzazione il path di tale bitmap nella sezione relativa al gruppo nel quale si vuole aggiungere il componente. E possibile eventualmente aggiungere un gruppo in cui inserire tutti gli oggetti che si desidera. E previsto anche linserimento di un wizard che permetta la creazione automatizzata di Beans, ma al momento tale strumento non è disponibile.

Figura 4
Figura 4

2.4 AppBrowser

Come detto più volte quello che traspare dalla interfaccia utente relativamente alla versione attuale, è una notevole organizzazione delle risorse che permette di lavorare con i vari oggetti, finestre, menu, etc, in modo molto pratico e non dispersivo. In questottica un grosso contributo lo si ha dalla finestra AppBrowser che permette di eseguire tutto il lavoro di sviluppo del progetto: infatti, nelle sue varie sezioni, permette la visualizzazione della struttura gerarchica del progetto, delle classi e dei package, e naturalmente il codice e leventuale interfaccia grafica.

Per mezzo di questo strumento è possibile navigare liberamente fra le varie risorse del progetto, visionando un metodo di una classe, un componente bean, un file html, o una pagina di documentazione del help in linea. La visione della struttura gerarchica delle classi non si ferma al codice implementato dallo sviluppatore, ma permette di ispezionare package importati, perfino quelli presenti nel JDK di Sun.

Questa esplorazione, che è del tutto svincolata dal concetto di file in cui risiede la risorsa, assomiglia molto ad una navigazione WEB in cui i siti ipertestuali sono in questo caso i componenti e le classi inseriti nel progetto. Proprio per questo motivo la finestra presenta per ogni sua sezione la possibilità di muoversi avanti ed indietro temporalmente rispetto alle risorse visionate. Questa caratteristica è estremamente utile, in quanto permette di sviluppare, controllare la struttura del progetto ed eventualmente consultare il manuale in linea relativamente ad un particolare elemento; il tutto in ununica sezione grafica dellambiente. Al momento lunico problema di cui soffre tale sistema è una certa lentezza nelleseguire scansioni delle gerarchie di classi, oltre al mancato refresh in alcuni casi della parte grafica della GUI implementata. Da notare che oltre alla visualizzazione delle varie parti di codice Java, la sezione della visualizzazione permette di mostrare leventuale pagina html acclusa al progetto: in tal caso la finestra di JBuilder diviene un vero e proprio browser html, col quale è possibile visualizzare una qualsiasi pagina html contenente immagini e link ipertestuali (che sono attivi e navigabili). Questo browser html integrato presenta ancora alcuni problemi nella impaginazione del codice html, e non permette lesecuzione di applet, ma probabilmente questi problemi verrano risolti nelle versioni successive. Concludendo questa sezione dedicata allAppBrowser si deve dire che buona parte dei crash del prodotto, si sono verificati durante luso di questa finestra in particolare durante la fase di progettazione visuale della interfaccia, il che può dare indirettamente una dimostrazione del ruolo fondamentale delle funzionalità in essa racchiuse.

3 Documentazione

La documentazione disponibile con questa versione del pacchetto è sicuramente abbondante, e permette di approfondire sia molti argomenti teorici, come ad esempio di conoscere il funzionamento dei Beans allegati, sia di avere veloci informazioni tecniche su una particolare libreria del JDK. Gli argomenti sono visionabili scorrendo una tab toolbar che propone la consultazione secondo una visione gerarchica degli argomenti, oppure raggruppando il tutto in una serie di libri. E possibile infine eseguire una ricerca indicizzata su tutto il materiale presente Anche per la documentazione elettronica è stato predisposto un browser che permette una navigazione ipertestuale fra i vari argomenti.

Al momento lhelp è visionabile solo passando per il menu della barra principale, e non è stato agganciato alla finestra del codice per mezzo del tasto F1 come ormai siamo abituati in molti ambienti di sviluppo. Tale funzionalità è troppo utile per pensare che non venga implementata nella versione finale del JBuilder.

4 Compilatore

Come accennato in precedenza, la giovane età del prodotto non rende giustificata una approfondita ricerca delle carenze e dei bug presenti al momento. Non ha quindi molto senso analizzare le capacità del compilatore, che tuttavia, non mostra particolari deficienze, ed è già un ottimo prodotto in termini di velocità e di stabilità.

5 Wizard

Borland ha rilasciato questa versione di JBuilder anche se alcuni strumenti non sono disponibili in versione definitiva: è questo il caso dei wizard i quali, pur non completamente terminati, sono stati annessi con lo scopo di fornire unidea delle funzionalità di cui il pacchetto disporrà nella versione finale. In alcuni casi però, lo stato troppo prematuro dellautomatismo, unitamente alla mancanza sia di documentazione, che di help in linea, non ha permesso una completa comprensione di tutte le funzionalità del wizard in questione: è questo il caso, ad esempio, del Component Wizard, che dovrebbe permettere di creare Bean a partire da semplici classi od oggetti non conformi allo standard dei Java Beans. Segue una breve analisi dei vari wizard disponibili nella versione in prova.

Application e Applet Wizard: il loro scopo appare chiaro anche dal nome; al momento attuale quello relativo allapplication permette di scegliere semplicemente le varie directory dei file ed il livello di codice di commento da inserire. Il wizard relativo alla creazione automatizzata di applet offre qualche funzionalità aggiuntiva relativamente alla creazione della pagina html e dei parametri da passare ad un eventuale browser.

Implements Interface Wizard: scrive il codice iniziale per implementare una interfaccia scelta da una gerarchia. Al momento non è completo.

Override Methods Wizard: il wizard probabilmente non è terminato; allo stato attuale permette di sovrascrivere un metodo di una classe genitore, ed in automatico genera nella finestra del sorgente, lintestazione del metodo con un commento che ricorda di implementare il corpo del metodo.

Resource Strings Wizard: si tratta di un semplice strumento per la definizione di macro di sistema e di alcuni standard; ad esempio è possibile definire una macro del tipo JDBCODBCBIBLIO per la risorsa utilizzata in una connessione odbc:odbc:biblio.

Project Wizard: serve per impostare le directory di base del progetto, e per impostare i valori di alcune variabili, come ad esempio il progetto, il nome del programmatore, ed un breve commento relativo al progetto stesso. Queste informazioni verranno poi utilizzate per impaginare automaticamente la pagina html inserite nel progetto. Questa funzionalità, se non particolarmente importante ai fini del progetto finale, risulta essere abbastanza comoda per avere immediatamente una piccola pagina di presentazione utilizzabile sia dal browser incorporato, ma anche da un browser esterno.

Connection Wizard: strumento sempre più presente in tutti i pacchetti di sviluppo dellultima generazione, permette di creare in modo del tutto automatico il codice necessario per gestire gli eventi generati dallutente con mouse o tastiera. Questo wizard al momento non è completamente funzionante per cui non è possibile esprimere giudizi : in particolare non è possibile verificare come Borland abbia organizzato il prodotto in modo da offrire contemporaneamente semplicità e flessibilità ma anche una potenza implementativa che possa rendere realmente utilizzabile il wizard in applicazioni di una certa complessità.

Component Wizard: come accennato precedentemente questo strumento probabilmente nella versione finale dovrebbe permettere di creare Beans partendo da classi esistenti. Al momento non è terminato e non è disponibile del materiale documentativo per avere maggiori informazioni in merito.

Nella documentazione in linea si parla anche di alcuni strumenti integrati nellambiente, ma che in realtà nella versione attuale non sono stati inseriti: si tratta del debugger grafico, e del Project Tree. Il primo è un ambiente di debugging grafico inserito in una finestra propria con gli ormai classici pulsanti di play pause stop. In questa versione esiste solo la possibilità di invocare lesecuzione del debugger o linserimento di breakpoint, ma questo porta al blocco dellambiente. Il Project Tree verrà inserito in futuro, ed avrà il compito di facilitare la gestione dei Beans inseriti del progetto in modo molto semplice per mezzo delle ormai classiche operazioni di dragndrop; al contempo fornirà una visione costantemente aggiornata delle modifiche eseguite, in perfetta filosofia 2-Way. Molto probabilmente tali tool sono stati già realizzati ma non inseriti per motivi di stabilità, visto che scorrendo lhelp è possibile trovare le immagini delle finestre in esecuzione dei prodotti. Al momento della lettura del presente paper dovrebbe esser già stata rilasciata la prima versione beta pubblica, e con buon probabilità in essa saranno presenti tali tool. Al momento non è possibile dire niente su questi strumenti.

6. Conclusione

Al termine delle prove eseguite sul prodotto si ha avuta limpressione di un prodotto che si è fatto aspettare molto tempo prima di uscire, ma che infine mostra tutta la sua modernità ed avanzata tecnologia. In particolare i punti forti del prodotto sono principalmente il fatto che è scritto in Java e che quindi si adatta perfettamente al linguaggio per cui offre le sue funzionalità. Considerando quindi le prestazioni che in genere ci attendiamo da un applicativo Java, e soprattutto il fatto che si tratta di una versione preliminare, si deve fare un elogio ai programmatori della Borland per le prestazioni che sono riusciti ad ottenere probabilmente grazie alluso di ottimi compilatori JIT. Voci di corridoio affermano che il ritardo eccessivo che si è avuto nel rilascio del prodotto sono da imputarsi oltre che alla definizione degli standard sui Java Beans, anche dal fatto che a metà del percorso di sviluppo della versione precedente di Latte, Borland ha deciso di riscrivere il tutto in Java. Lintroduzione dei Java Beans inoltre rende il prodotto un ottimo strumento per sviluppare secondo la metodologia di lavoro del futuro.