MokaByte
Numero 23 - Ottobre 98
|
di Giovanni Puliti |
Prova su strada del nuovo prodotto di sviluppo di Microsoft per la piattaforma Java |
IL 10 di settembre in occasione del DevDays 1998 contemporaneamente a Roma e Milano, Microsoft ha presentato il nuovo Visual Studio 6.0, la completa suite di programmazione per lo sviluppo multi-linguaggio e multi-tecnologia. All’interno del Visual Studio troviamo il nuovo Visual J++ che nella versione 6.0 succede cronologicamente alla 1.1. Vediamo cosa offre di nuovo il prodotto rispetto al passato, e cosa invece è stato migliorato.
Fig 1: la finestra della gestione delle risorese. Permette di controllare la parte di codice e visuale del progetto. |
Il
nuovo IDE è stato completamente modificato, sia per ammodernarlo
rispetto al passato (la versione 1.1 ormai aveva fatto il suo tempo),
sia per uniformare tutti i prodotti del Visual Studio allo stesso look:
è infatti nuova caratteristica del Visual Studio 6.0 il fatto
che i i vari prodotti hanno una interfaccia grafica molto simile
fra loro.
E' addirittura possibile impostare l’ambiente del Visual J++ in modo che sia del tutto identico a quello del Visual Basic 6.0 o viceversa. Fra i vari componenti dell’interfaccia notiamo la finestra di gestione delle risorse del progetto (figura 1), la finestra di gestione delle proprietà dei vari componenti grafici, quella degli eventi (figura 2), e l’ormai classica Toolbox (figura 3). La parte centrale come consuetudine è riservata alla programmazione testuale e visuale delle varie parti del progetto (come in VB, per passare dalla modalità visuale a quella testo, è sufficiente eseguire un doppio lcick su un componete grafico). |
Fig 2: la finestra della gestione degli eventi: si può associare un evento per un certo oggetto, ad un metodo. In quesot caso Form1_click verrà associato al click sul panel per mezzo di un delegato apposito. Un doppio click sulla parte del nome del metodo porta ad aprire automaticamente la finestra del codice. |
Toolbox, componenti
e AWT
Fig 3: la toolbox paginabile e personalizzabile.In questo caso vediamo aperta la pagina dei componenti WFC. |
|
Fig 4: struttura architetturale dell Windows Foundation Classes. Si noti lo strato di J/Direct interposto fra lo strato Java e quello del sistema operativo. |
Ecco la versione
JavBeans dove si utilizzano inner classes per connettere gli event
handlers.
Da notare la
classe adapter anonima dichiarata nel metodo jbInit. Ognuna di queste classi
implementa una interfaccia di gestione degli eventi. Questo Design Pattern
nel quale il codice relativo all'evento è separato dal suo gestore
è un esempio tipico generato da tool di sviluppo basati su JavaBean,
ed è esattamente quello definito da Sun.
class SimpleFrame extends DecoratedFrame { |
Ecco la versione
WFC che utilizza i delegati per connettere gli event handlers.
Si noti l'instanziazione
del delegato EventHandler nel metodo initForm. Quando viene chiamato il
metodo invoke di un delegato, allora viene inovcato il
metodo che è incapsulato nel delegato stesso.
class SimpleForm extends Form { |
Ecco il codice
per collegare l'event handler ad un bottone in WFC
buttonOK.addOnClick(new EventHandler(this.buttonOK_click)); |
buttonOK.addActionListener( |
La particolare
visione di Java
Come molti di voi forse sapranno, Micorsoft non nutre particolare simpatia per il linguaggio Java e la tencnologia annessa. Già in passato proprio su un numero di MokaByte [4] abbiamo avuto modo di analizzare quella che è la politica della casa produttrice di Windows. Come tutti sanno questo ha portato alla battaglia legale contro Sun, che per adesso risulta la vincitrice, e ciononostante non sembra che le cose per il momento cambino. Tanto per fare un piccolo riassunto, ricordo che Microsoft propone una sua versione particolare della JVM (incluse le librerie del JDK), che risultano essere incompatibili con lo standard Java per due motivi. Il primo è che sono state effettuate delle modifiche ad alcune firme di metodi di classi di sistema: questi cambiamenti, seppur minimali, risultano essere fondamentali per la non compatibilità con il codice Java standard. In pratica un programma compilato utilizzando le librerie di MS, può avere problemi se lo si vuole mandare in esecuzione su una JVM standard.
Oltre a ciò, Microsoft ha pubblicamente dichiarato che non intende supportare alcune features del JDK 1.1 come RMI, e CORBA, dato che a suo parere non le ritiene necessarie per lo sviluppo della tecnologia Java. Inoltre non supporta l'utilizzo dei metodi nativi.
Ebbene con l'arrivo del VJ++ altre limitazioni sono state introdotte nel mondo MS-Java: al momento, parlando con uno dei progettisti Microsoft che ha partecipato al gruppo di sviluppo del VJ, il prodotto non fornisce nessun supporto per i JavaBeans, offrendo invece la possibilità di utilizzare i componenti WFC e COM/ActiveX. La motivazione ufficiale è che JavaBeans non è una tecnologia aperta, essendo essenzialmente legata al linguaggio Java, mentre se si desidera realizzare un oggetto COM si può utilizzare un qualsiasi linguaggio utilizzato dai vari tool di sviluppo come VB, VC++, Delphi ed altri.
Ovviamente la posizione di MS rispecchia un comportamento ormai tipico, che più di una volta mi sono trovato a non condividere affatto, e per una volta lascerò ogni commento ed interpretazione al lettore.
In ogni caso quello che importa è che questo elimina una grossa fetta di possibilità applicative, anche se si considera che, pur non avendo trovato nessuna indicazione in merito, non sono riuscito ad attivare l'utilizzo diretto e visuale di componenti AWT (per non parlare dei componenti Swing).
Perché VJ++
Conclusioni
Bibliografia
MokaByte Web 1998 - www.mokabyte.it MokaByte ricerca nuovi collaboratori. Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it |