MokaByte Numero 07 - Aprile 1997
Foto
Test: Visual J++ 1.1
 
di
Giovanni Puliti
In prova il pacchetto di sviluppo di Microsoft

 



Finalmente la redazione di MokaByte si è arricchita di nuovi e preziosi collaboratori: possiamo adesso dare spazio ad idee che da molto avevamo intenzione di sviluppare. Una di queste è la creazione di una rubrica che parli dei vari ambienti di sviluppo per Java, disponibili sul mercato. Questo mese iniziamo con Visual J++ di Microsoft giunto ormai alla versione 1.1.


Nonostante si tratti di un tool giovane, Microsoft ha fatto tesoro dell'esperienza maturata ormai in anni di lavoro nel campo dei prodotti di sviluppo, creando un pacchetto che già dalle prime versioni mostra una discreta completezza e maturità, anche se passibile di miglioramenti. A partire dal processo di installazione si ha subito l'impressione di essere in buone mani, e quasi non si sente la necessità di vedere cosa il Setup Wizard stia facendo per noi. Anche se ormai questo è un must per tutti i pacchetti professionali in circolazione, devo dire che non fa mai male constatare a fine processo che la fiducia era ben riposta: la macchina viene predisposta in modo assolutamente pulito a poter eseguire il VJ senza che nessun'altra applicazione risenta di questo nuova presenza. Di questi tempi con Mbyte di spazzatura a spasso per le varie directory, è sempre rassicurante trovare una applicazione ben educata...... (il setup utilizza il registry piuttosto che le variabili di ambiente).

Dopo aver lanciato il tool, osservando quello che ci compare davanti, sia ha subito la conferma di quella che è la nuova strategia di Microsoft: il nuovo ambiente globale di sviluppo DevStudio include infatti in un unico super pacchetto tutti gli ambienti di sviluppo permettendo la condivisione di alcune risorse e parti di codice compilato. Il look di VJ++ è molto simile al nuovo VB5.0 e praticamente identico al parente stretto VC++5.0.
In genere sono poco propenso a questa mescolanza informatica. In questo caso però le cose sono fatte veramente bene. Si deve cambiare mentalità, e non vedere il tutto come una mescolanza, ma un unico ambiente che permette la condivisione delle risorse e la suddivisione del lavoro.

Iiniziamo a programmare

Come ormai siamo abituati a trovare nei molti prodotti disponibili sul mercato, anche in questo caso sono presenti una serie di Wizard che ci guidano nella creazione di vari tipi di progetti e risorse. L'application wizard ci permette di creare, con vari livelli di automazione, una applet/applicazione. E' possibile per contro anche semplicemente creare un contenitore vuoto per i file .java creati nottetempo.
Una delle magie disponibili ci permette di realizzare una piccola ma completa applet per interrogare un database .mdb: senza dover aggiungere una riga di codice è possibile visualizzare ad esempio il famoso biblio.mdb nel vostro browser (per il momento solo quelli che supportano ActiveX -> solo IExplorer 3.0). Veramente comodo!!

Nel caso si decida di seguire la strada super assistita, VJ crea per noi uno scheletro di programma applet/application con multi-thread, gestione degli eventi e tutti i metodi basilari per iniziare a lavorare.
Particolarmente utile per i principianti è l'inserimento di codice commentato //TODO che ci spiega cosa si deve fare per personalizzare il codice e completare lo scheletro creato in automatico. Io personalemente non impazzisco per questi magici-wizard, e spesso gli utilizzo con il livello di automazione settato al minimo, e per fortuna il VJ permette di personalizzare anche questo aspetto.
 
 


L'editor di questo nuovo VJ è ormai pienamente inserito nello standard avanzato dei prodotti di casa Microsoft, e non manca proprio niente: syntax coloring -come nelle pagine di MokaByte ;) - drag 'n'drop di codice, e tutto quello che ormai siamo abituati a trovare negli editor di ultima generazione.

Il codice generato viene monitorato continuamente dal class browser che fra tutti quelli che ho visto in azione mi sembra il più comodo, se non fosse per le troppe icone molto belle ma un po' disorientanti. Tuttavia, se ci non preoccupiamo di dover ricordare che  rappresenta una variabile pubblica, che una privata, e che infine un metodo protetto , allora diviene comodo controllare continuamente la finestra della gerarchia delle classi: da ricordare che tale finestra può essere utilizzata anche per vedere il progetto organizzato per file, oppure permette di vedere tutta la gerarchia della documentazione elettronica.

Ho notato che, dopo alcune operazioni veloci e frenetiche di copia/incolla, il class browser perde in un punto o due il filo del discorso puntando a parti di sorgente inesistenti. Nella versione finale (per scrivere questo articolo avevo ancora a disposizione una pre della 1.1) dovrebbero essere messe a posto queste piccole inezie.

Per la documentazione, si deve dire che il materiale presente sul CD è veramente tanto e al tempo stesso molto utile. L'API reference è la stessa presente sul sito Sun in formato win help, e nonostante la mia predilezioni per l'html, la possibilità di effettuare ricerche ed indicizzazioni, rende il tutto veramente comodo.
Tutti i menu sono dockable e le varie finestre personalizzabili fin nei minimi dettagli, tanto che si può creare la nostra interfaccia utente come meglio si crede. E' possibile creare menu propri, facendo la spesa fra le molte voci disponibili.
Anche se all'inizio di fronte a tanta plasticità verrebbe voglia di mettersi a piangere, tanti sono i pulsanti e check box a disposizione del programmatore più esigente. Comunque dopo aver preso un po' la mano, di fronte a tanti oggetti grafici ci si trova a proprio agio abbastanza facilmente, anche se si rimpiange di non aver comprato un monitor a 33", aspetto ormai ricorrente negli ambienti di sviluppo attuali.
 
 

Risorse condivise

Vediamo adesso di parlare delle cose importanti, analizzando i contenuti che il pacchetto ci offre. Come detto la nuova filosofia di sviluppo di Microsoft prevede la globalizzazione e la condivisione delle risorse.

Ma in che senso condivisione? Esempio lampante è quello che riguarda la creazione di GUI.
Una breve parentesi si deve aprire a riguardo del nome del pacchetto che non deve trarre in inganno: l'aggettivo visual non ha niente a che vedere con quello del VB o del più vicino Visual Café; in questo caso la visualità è da intendersi nel senso di quella del Visual C++, anche se voci di corridoio annunciano in arrivo la prossima versione di fine anno del VJ puramente visuale. Ma torniamo all'aspetto della condivisione delle risorse: per creare una interfaccia non è possibile disegnarla direttamente come si può ad esempio fare con altri prodotti, ma bisogna prima creare una risorsa di tipo template contenente uno schema di quello che si vuole implementare in Java (ad esempio un dialog). In automatico l'ambiente crea per noi un file di risorsa *.rct
A questo punto questo file è disponibile per essere tradotto in codice .java ed importato nel progetto. Per la traduzione si deve utilizzare un apposito wizard che trasforma il tutto in codice Java. Il passaggio è volutamente non completamente automatizzato, in modo da lasciare più spazio al programmatore.
 

L'aggiunta dei famosi commenti //TODO permette ai meno esperti di terminare la procedura.
Con questo meccanismo è possibile generare dialog, puntatori, icone, bitmap, shortcut, menu, toolbar e tutto quello che normalmente appare a vista in una applicazione. In particolare la possibilità di importare oggetti COM rende disponibili durante il design della interfaccia grafica alcuni control aggiuntivi rispetto allo standard dell'AWT, (ad esempio lo slider - vedi figura): utilizzando tali oggetti si perde ovviamente la portabilità se non all'interno di un browser che supporta ActiveX.

Il procedimento è veramente un po' troppo macchinoso se si pensa al concetto di visualità comunemente inteso, ma la grande potenza di questo meccanismo è che il template può essere gestito in modo del tutto equivalente in Visual C++, dal quale, col relativo wizard, si può trasformare il template in codice C++.
Direi che questa è una potenzialità incredibile, e forse molti di voi rinunceranno alla pura visualità. Oltre alla condivisione delle risorse esiste un'altra potente caratteristica in questo ambiente: Microsoft infatti non poteva dimenticarsi delle sue tecnologie COM ed l'ultima nata ActiveX. Con VJ++ infatti è possibile mettere in contatto Java con il mondo degli oggetti di Microsoft, ma questo aspetto sarà approfondito in uno dei prossimi articoli pubblicato su MB.

Dirò adesso solamente che con questi meccanismi è possibile scrivere una risorsa in Java ed esportarla per altri ambienti di sviluppo, o viceversa inglobare ad esempio una interfaccia creata col Visual Basic CCE. Per chi volesse seguire queste strade oscure della programmazione, si deve dire che, ovviamente, si perde una buona percentuale della portabilità multipiattaforma, ma la potenza che ne scaturisce è immensa.
Senza scomodare la facilità di sviluppo del Visual Basic associata alle potenzialità WEB di Java, quanti di voi non gradirebbero scrivere codice pulito a prova di debug in Java e poi inglobarlo in un velocissimo pacchetto C++? Beh prossimamente affronteremo questi aspetti.
 
 

Compilatore e compilazione

Veniamo all'aspetto più importante: un tool è pur sempre un oggetto che dovrebbe facilitare il lavoro del programmatore, il quale affida la sua opera al componente principale, il compilatore. Per quanto riguarda la velocità di compilazione e del codice bytecode, il confronto col javac di Sun è nettamente a favore di Microsoft: compilando alcuni esempi distribuiti col JDK 1.0 di Sun e con VJ, si sono potuti notare miglioramenti anche di 20 volte del tempo di compilazione, ed anche il compilato è assai più efficiente anche se in misura minore.
Il controllo sulla sintassi è molto più rigoroso di quanto non faccia l'interprete di Sun, e non è raro dover ricontrollare molte righe di codice per errori non segnalati con altri compilatori. Visto che l'aspetto fondamentale di Java è la sicurezza, non infastidisce un collaboratore così pignolo.
Tale precisione per la verità non è uniforme, ed inoltre, nella versione da me utilizzata, si sono purtroppo notati alcuni fastidiosi inconvenienti che hanno portato alla generazione di un codice finale in grado di far crashare la pur protetta appletviewer di Sun. Questo è un problema di non poco conto, ma devo dire si è verificato di rado, e comunque ripeto che non ho lavorato sull'ultimissima versione del pacchetto.

Il Visual J++ lavora in stretto contatto con IExplorer, tanto che viene utilizzato per lanciare le applet.
Il cuore di tutto ciò è la nuovissima VM (in casa Microsoft la J di JVM non c'e'... alla faccia dell'originalità): non conosco le specifiche di tale implementazione, per cui non mi avventuro in commenti non giustificabili in maniera rigorosa. Posso solo affermare che da alcune prove ho potuto sperimentare che rispetto a quella di Netscape 3.0 la macchina virtuale è sicuramente più veloce e forse anche un po' più sicura, anche se sembra il garbage collector a volte tarda un pò ad intervenire.

La nuova VM ha finalmente fissato i bug del debugger ;-) ed adesso è quasi possibile disporre di uno strumento decente. Nonostante questo progresso il debug con le println è spesso referibile, a voi la scelta.....
 

Un aspetto fastidioso è che durante la sessione di sviluppo, per l'esecuzione delle prove viene lanciato il browser di casa MS che ingloba la VM. Tutto ciò è molto bello, e sempre più nell'ottica document centred tipica dei prodotti di Office, ma se non si dispone di un pentium pro 200, questa procedura è un pò fastidiosa: per ogni prova viene lanciato un browser in un task indipendente e la cosa non è molto comoda.
 
 

Compatibilità

Vorrei rispondere alle molte persone che mi hanno chiesto se il codice finale sia compatibile con le specifiche di Sun: attualmente il compilatore genera codice allineato e totalmente compatibile con la versione 1.02 del JDK. A conferma di ciò io personalmente ho sempre compilato con VJ e poi eseguito per comodità le prove con appletviever. Una ultima nota veramente positiva: il pacchetto è forse il più leggero disponibile sul mercato tanto che è possibile lavorare in tutta comodità su un 486 66 MHz con 16Mb di RAM. Anche se si tratta ormai di una architettura un pò vecchia, devo dire che la cura dimagrante fatta fare al VJ non è per niente indesiderata.
 
 

Commenti finali

Dare un giudizio finale al prodotto non è facile. Devo dire a che a favore del VJ++ giocano sicuramente la nuova VM e la potenza del compilatore. Non metterei in secondo piano la di tutto il pacchetto leggerezza, e la documentazione molto completa. Per quanto riguarda la non visualità si deve dire che sull'altro piatto della bilancia troviamo la programmazione mista e condivisa. L'integrazione fra Java e COM è un aspetto di una importanza enorme ed al momento non possiamo immaginare cosa tale caratteristica ci riservi per il futuro. Forse molti di voi si accontenteranno di quanto VJ++ ci permette di fare adesso, ma sicuramente coloro che hanno sentito parlare dei futuri prodotti di Borland sanno che non bisogna mai desistere dal pretendere qualcosa in più....
 

A questo punto non mi resta che augurarvi buon lavoro ricordando che Microsoft distribuisce attualmente una versione trial completamente fuzionante del pacchetto con cui potete rendervi conto se questo prodotto è per voi.
 
  

 

MokaByte rivista web su Java

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