MokaByte 62 - Aprile 2002 
JavaOne 2002
allacciare le cinture prego
di
Giovanni Puliti
dal 25 al 29 marzo scorsi si é svolta a S.Francisco l'edizione 2002 di JavaOne. La redazione di MokaByte era presente in forze per raccogliere le ultime novità del momento

Anche quest'anno é finito, l'evento più importante dedicato a Java si e' appena concluso e sto già preparando l'articolo mentre sono sul volo di ritorno. Ricordo il viaggio di andata quando sull'aereo si potevano notare numerose magliette con loghi inequivocabili, le borse di JavaOne delle scorse edizioni posizionate nei vani portaoggetti, il mio vicino che stava consultando alcuni diagrammi UML. Erano tutti segni inequivocabili: ero seduto su un gigantesco pulmino volante che stava portando vari geek da mezza Europa nella sede mondiale di Java.
Adesso che tutto é finito mi sembra di essere invece sul treno che riporta in a casa i ragazzi dalla colonia estiva. Un po' di amarezza pervade quei viaggiatori che come me se ne rientrano con lo zaino-trolley di JavaOne 2002 al posto di quello dell'anno passato. Ma a parte questi sprazzi brutta copia di un film di
Fellini, quello di quest'anno é stato JavaOne veramente interessate.
Diverse le novità presentate ex novo (o from scratch come si dice da quelle parti), ma soprattutto moltissime le modifiche apportate alle varie API e tecnologie già presenti all'interno della piattaforma Java2.
In questo articolo cercherò di presentare tutto quello che ho potuto vedere e che mi è parso particolarmente interessante. Premetto che purtroppo per mancanza di tempo non sono riuscito a seguire alcune presentazioni e che ad ora rimangono per me misteri termini come puzzling programming, remote w-services, ed OSGi. Spero di poter colmare queste lacune al mio rientro anche se immagino che in alcuni casi si tratti per lo più di buzzwords.


Figura 1 - James Gosling come ormai tradizione ha aperto
la conferenza dando un un po' di folklore e spettacolo alla conferenza.

 

Le novità di JavaOne
Quest'anno le novità più interessanti ruotavano tutte intorno alle parole Web Service e J2ME, avendo particolare attenzione al problema della integrazione con le nuove proposte da parte di Sun ma sopratutto con il resto della piattaforma J2EE giunta ormai ad un livello di affidabilità e potenza sicuramente invidiabile.


Figura 2 - uno schema riassuntivo della piattaforma J2EE


In tal senso il messaggio di Sun é quanto mai chiaro ed esplicito: partendo dalla piattaforma J2EE la parola d'ordine é astrarre maggiormente e spingere il processo di integrazione delle varie e tecnologie. Per questo moltissimo é stato detto a proposito di JMS (che sta diventando ormai la spina dorsale di tutto Java2) e su Connector Architecture.
Questi due strumenti dovranno essere pensati ed utilizzati in misura sempre maggiore per permettere l'interoperabilità dei vari moduli (tramite JMS) e la capacità di astrarsi dai dettagli implementativi sottostanti (l'architettura Connector).

 

Il nuovo processo di sviluppo e rilascio
JavaOne con i suoi 5 giorni di conferenza 8 ore al giorno (più le sessioni serali) é stata l'occasione per rispolverare tutto quello che Sun ha presentato di recente ed integrarlo sulla base di una filosofa fortemente spinta nella direzione della astrazione e della integrazione. Le molte tecnologie presentate negli ultimi 12 mesi sono state qui ripresentate e riviste a dimostrazione che Java2 é ormai una piattaforma quanto mai complessa, articolata e sicuramente ben progettata.
JMS ad esempio non é più un semplice meccanismo per la gestione della messaggistica asincrona ma anzi viene presentato da Sun sempre più come la colonna portante di tutto J2EE. Concetti come Java Server Faces, Portlets e Connector Architecture, pur non essendo recenti novità sono stati rivisti alla luce di questa nuova filosofia.
In questo nuovo scenario é sempre più evidente che le tre implementazione J2SE, J2ME e J2EE seguono un processo evolutivo parallelo ma non strettamente sincrono, tanto che ad esempio il rilascio di J2SE 1.4 (JDk 1.4) non é seguito di pari passo da J2EE fermo per il momento alla release 1.3.

 

Java2 ed i Web Services
A JavaOne è apparso chiaro quanto ormai tutte le aziende stiano puntando su questa tecnologia. Da molte parti é arrivato il segnale che indica i web services come un importantissimo strumento di integrazione: si pensi ad esempio alla nuova specifica EJB 2.1 alla quale é stato aggiunta la possibilità di invocare un web services da parte di un session bean (per adesso di tipo stateless). Altro esempio sicuramente molto importante è quello relativo all'annuncio della aggiunta alla J2ME di una serie di API che dovranno permettere l'invocazione di web services alle applicazioni basate sulle configurazioni CDC e CLDC.
I web services sono stati presentati più come strumento di standardizzazione ed evoluzione del protocollo SOAP tramite l'utilizzo di WSDL, che come meccanismo di integrazione fra imprese tramite lookup e discovery secondo la filosofia alla base di UDDI. A conferma di ciò si può trovare sicuramente quanto detto da Tim Roth di Sun nell'intervista di cui Giancarlo Crocetti nel suo articolo MokaAmerica (www.mokabyte.it/mokamerica) questo mese riporta un breve stralcio.


Figura 3 - Gli standard aperti basati su XML e SOAP rappresentano
lo strumento per la integrazione delle architetture del prossimo futuro



Figura 4 - I web services permetteranno di integrare architetture
e tipologie di applicazioni differenti in modo da offrire un più ampio
spettro di servizi in modo più semplice per l'utente finale

Personalmente sono perfettamente d'accordo con tale modo di vedere il futuro tecnologico di Java e non solo: immagino infatti ancora lontanissimo il momento in cui una azienda possa utilizzare dinamicamente i servizi messi a disposizione da altre aziende tramite l'utilizzo di registri comuni e remoti (e questo più per motivi culturali che tecnologici).

 

Convesational Web Services
Una delle presentazioni alle quali ho potuto assistere e che mi ha particolarmente impressionato é stata quella dei web services che implementano meccanismi di comunicazione di tipo conversazionale con il client. Tale meccanismo, tramite poche istruzioni inserite in un file XML (per la verità l'ambiente di sviluppo di Bea permetta di fare tutto in modo visuale con una semplicità incredibile) é possibile raggruppare più web services in modo da creare una vera e propria conversazione. In questo modo, il client invoca il primo web service il quale non risponde direttamente al client ma passa il controllo agli altri della catena; l'ultimo servizio invocato invia una risposta al
client.
Il meccanismo ricorda molto da vicino le servlet chain, ed anzi potrebbe essere visto come un modo per rivedere in chiave moderna quello che già si poteva fare in passato con tecniche differenti. Sempre utilizzando il tool di Bea é possibile realizzare sistemi temporizzati (ovvero introdurre un delay nella catena delle chiamate dei vari servizi); infine si possono implementare tecniche di buffering sulle chiamate dei servizi tramite l'utilizzo di code di messaggi JMS.
Per il momento i web services conversazionali non mi pare che possano essere considerati uno standard offerto da tutti i server (infatti é stata presentata in un workshop di Bea durante la presentazione del nuovo ambiente di sviluppo di Bea), ma presumo che non si dovrà attendere molto per vedere tale tecnica divenire uno standard accettato ed integrato in J2EE.



Figura 5 - Una esempio di unione di due web services per la
realizzazione di una conversazione con il client

Tutte queste novità hanno sicuramente l'obiettivo di proporre i web services come strumento di connessione nelle architetture distribuite, indipendente dal protocollo utilizzato. I WS consentono infatti di implementare sistemi di RPC asincrono multithread in modo semplice e leggero, è sicuramente un aspetto molto importante quando l'obiettivo del progettista non sono tanto le performance secche, ma piuttosto la scalabilità e la capacità di reggere grossi carichi di lavoro.
Queste considerazioni si sposano perfettamente con quanto Sun aveva già definito ad esempio all'interno della piattaforma EJB: il fatto quindi che tramite la specifica EJB 2.1 sia stata aggiunta la possibilità ad un bean EJB di interagire con un web services non e' casuale.

 

Web Services e la piattaforma .net
Sempre per quanto riguarda il mondo dei web services, interessante notare come in molte occasioni i vari speaker hanno mostrato come utilizzare tale tecnologia per l'integrazione con altre piattaforme, prima fra tutte la piattaforma .net di Microsoft.
In tal senso, nonostante l'indubbio vantaggio ormai accumulato da Java2 e la fiducia che le varie case produttrici di software ed hardware ripongono ormai in tale tecnologia, era palpabile nell'aria un certo nervosismo. Come ho più volte avuto modo di osservare, non credo che la imminente piattaforma .net possa impensierire quanto Java ha dimostrato di poter offrire: la casa di Seattle ha più o meno dichiaratamente espresso la volontà di aggredire, tramite .net, il terreno proprio adesso di Java e Unix.
Se da un lato il ritardo rispetto alla concorrenza è molto (Java ha ormai superato la fase in cui era una tecnologia embrionale e poco stabile, per diventare oggi una piattaforma potente ed universalmente accettata), Microsoft ha da sempre dimostrato di disporre del potere necessario per potersi permettere il lusso di compiere molti errori o di accumulare grosso ritardo. Il settore enterprise è però da sempre uno scenario dove standard aperti, portabilità, stabilità degli applicativi e della piattaforma sottostante ed infine gestione della sicurezza sono caratteristiche irrinunciabili. Tutto queste caratteristice rappresentano anche gli aspetti che da sempre caratterizzano in negativo la piattaforma Microsoft.
In conclusione prevedo che la spartizione/separazione dei due mondi (il lato server di fascia alta a Java, il client-desktop a MS) debba considerarsi ancora per molto tempo il tema dominante dello scenario IT mondiale.
Java da questo punto ha innegabilmente un vantaggio dato dalla dominante posizione nel mondo J2ME, zona dove Microsoft al momento è tagliata fuori.
Questo Sun lo sa bene, tanto che più volte i web services sono stati presentati come lo strumento per integrare i due mondi. É sorprendente come in una delle molte sessioni dimostrative si sia utilizzato l'ambiente VC++ di Microsoft per realizzare una applicazione stand alone in C++ che si interfacciasse con un web service scritto in Java.

 

JXTA
JXTA (pronuncia Jaxta) é una interessante materializzazione della mente geniale di Bill Joy, il padre di Java che già in passato aveva contribuito alla creazione di tecnologie distribuite come il famosissimo NFS.

Presentata quasi un anno fa' sembra che JXTA si appresti a diventare la prossima rivoluzione tecnologica legata alla rete.
Almeno questo é quello che sta proponendo Sun. In effetti la tecnologia é quanto mai interessante: un sistema peer to peer in grado di astrarsi dalla piattaforma sottostante e dal protocollo di esecuzione (HTTP, TCP, SMTP, RMI).
JXTA potrebbe essere semplicisticamente descritto come un Jini rivisto e corretto. In tal senso la scarsa diffusione del mago della lampada (Jini appunto) ed la limitata accettazione da parte dell'industria e dei vari produttori, sono probabilmente da imputarsi alla impostazione di base di Jini (protocollo proprietario, tecnologia non aperta ad altri standard differenti da Java, concetto di registry centralizzante); Sun sembra che abbia fatto tesoro delle esperienze del passato proponendo JXTA, una tecnologia altamente innovativa ma basata su un concetto rivisto di network cooperativo.
E' stato eliminato infatti il concetto centralizzato e centralizzante di reigistry (il modello di base é il peer to peer appunto) e non sono più utilizzati protocolli proprietari, per dar spazio a concetti come peer to peer, pipe, advertise, e multi hop cooperative network, che complessivamente dovrebbero dare un maggiore impulso alla diffusione di Java.
Personalmente credo che ancora molti siano aspetti lasciati in sospeso tali da richiedere approfondimenti e rivisitazioni: la mancanza di un registry e l'adozione del peer to peer comporta da un lato un notevole volume di traffico anche per le operazioni più semplici, ma anche il problema della identificazione dei peer. Tale carenza induce la mente a pensare alle questioni legate ai diritti d'autore sul software ed altri prodotti d'intelletto (si pensi ad un naptser peer to peer in cui nessun content provider possa essere univocamente identificato), o peggio ancora a peer aventi scopi illegali (riciclo di denaro, pedofilia etc..).
Sicuramente a parte gli scenari pessimistici appena citati, il modello rappresenta un ottimo punto di partenza su cui lavorare per le successive evoluzioni di questa tecnologia. Ad esempio un sistema di DNS dinamico e distribuito potrebbe risolvere la maggior parte dei problemi legati alle prestazioni (traffico di rete) e di sicurezza.
E' però vero che dopo un anno dalla sua presentazione, JXTA rappresenta una interessantissima tecnologia, ma che stenta ad affermarsi come rivoluzione prossima ventura.
La comunità degli sviluppatori é cresciuta moltissimo in questo periodo, ma ancora nessuno dei big sembra abbia fatto una qualche mossa ufficiale.
Insomma l'idea é buona ma ancora grossi pezzi del muro sono mancanti. Positivo il fatto che non si intravede al momento nessun vincolo strutturale o progettuale che permetta di trovare i mattoni giusti.
JXTA mi ricorda una volta di più che troppo presto equivale in genere a troppo tardi; speriamo in questo caso che non sia così.


Figura 5 - Il logo di JXTA

Per chi fosse interessato ad approfondire l'argomento Sun ha realizzato un sito dedicato a JXTA che si trova all'url http://www.jxta.org.

 

J2ME
Moltissime le novità nel settore embedded-wireless. Finalmente sin sono viste molte implementazioni di JVM per diversi dispositivi: molti i cellulari presentati con JVM integrata, ma anche palmari (Sharp ha presentato il nuovo Zaurus basato su sistema operativo Linux).


Figura 6 - Zaurus, il palmare basato su Linux,
è stato presentato in anteprima da Sharp a JavaOne.
Da oggi Apache e sito web sul palmare non sono più fantascienza.

Elevato l'interesse dei produttori di cellulari si è finalmente concretizzato dando inizio al processo di rilascio di cellulari con JVM integrata. Sembra finalmente che la tanto attesa era del Java embedded sia iniziata.
Sun ha annunciato il rilascio del MIDP profile 2.0 con interessati novità, ma anche l'integrazione dei web services per la J2ME. Questa in particolare è una delle novità fra i le più interessanti di tutto JavaOne: è la dimostrazione della potenza di Java come tecnologia in grado di offrire soluzioni a 360° per la realizzazione di applicazioni enterprise. Dalle pagine JSP alla applicazione stand alone ai componenti EJB, dal database al telefono cellulare o palmare tutto può essere integrato tramite la medesima tecnologia.
Erano anni che si prometteva l'ottenimento di questo risultato e sembra che finalmente le promesse inizino a concretizzarsi.
Avendo passato un bel po' di ore a risolvere il problema della comunicazione client-palmare con applicazione EJB tramite XML e SOAP, valuto questo annuncio particolarmente interessante.
JXME (questo il nome che dovrebbe avere la nuova API) dovrebbe mettere a disposizione parser minimali XML e runtime per JAXRPC effettuando una operazione di subsetting delle API attualmente disponibili. Il tutto senza alterare quelli che sono gli standard definiti dai vari W3C e OASIS.
La cattiva notizia é che si dovrà attendere ancora un bel po' di tempo per poter utilizzare i web services, SOAP e quant'altro su un telefono o un palmare, (a patto di non fare tutto a mano) visto che la data del rilascio di queste API é stata annunciata per l'estate del 2003. JXME verrà rilasciata per le configurazioni CDC e CLDC.

 

EJB 2.1
Sebbene questa nuova release non rappresenti una novità presentata a JavaOne, alla conference se n'è parlato molto. Le innovazioni più interessanti introdotte con questa nuova specifica sono essenzialmente tre: la possibilità di creare bean message-driven basati su messaggistica JAXM, a fianco del sistema di comunicazione JMS; l'introduzione di un nuovo servizio di timer nel container che potrà essere utilizzato per effettuare chiamate in callback sui beans in particolari momenti della giornata oppure a periodi prederminati; l'ampliamento del linguaggio di interrogazione EJB QL (con il supporto per alcune delle più comuni operazioni di interrogazione come le aggregazioni e gli ordinamenti); la possibilità di definire in fase di deploy il legame fra ascoltatori e produttori di messaggi; il supporto per i web services, grazie al quale non solo è possibile invocare un web service da un enterprise bean, ma anche associare un business method ad un web service in modo da permetterne l'invocazione remota.
Quest'ultima associazione verrà effettuata in modo pressoché automatico dal contaier sulla base della interfaccia remota corrispondente al web services ed alle informazioni contenute nel file di deploy (il meccanismo è molto semplice e ne parleremo in uno dei prossimi articoli).
Fra tutte le presentazioni basate su XML (JAXM e WebServices) sono quelle di cui di più si é parlato e possono essere prese ad esempio dello sforzo di Sun di integrare le differenti tecnologie di fascia enterprise. Probabilmente l'accoppiamento EJB-web services rappresenta una delle innovazioni più interessanti e implica conseguenze non di poco conto. Si pensi ad esempio alla possibilità di mettere in comunicazioni più applicazioni basate su EJB tramite il supporto dei web services. Se XML e EJB possono spaventare per quanto riguarda le prestazioni, si pensi alla possibilità di scalare in modo semplice e veloce una architettura distribuita in modo da garantire maggiore tolleranza in caso di un aumento delle prestazioni.
Quando si potrà disporre di una implementazione di EJB 2.1 non é al momento dichiarato, anche se ufficialmente é stato annunciato il rilascio in contemporanea con il J2EE 1.4

 

Flash Gateway
Macromedia quest'anno era presente in qualità di sponsor platinum alla manifestazione. Se fino alla settimana scorsa non riuscivo a comprendere a fondo l'interessamento di questa azienda al mondo Java (tanto da farle acquisire JRun), tutti i dubbi sono spariti appena ho assistito alla presentazione di Flash Gateway. Il nuovo prodotto server, che si integra con il ben noto plugin client side, dovrebbe rappresentare una vera e propria rivoluzione proponendosi come sistema per la realizzazione di applicazioni in esecuzione in un browser, andando a prender il posto lasciato per il momento vacante dalle applet.
Flash Gateway fornisce accesso di alto livello tramite il protocollo HTTP ad applicazioni client side in esecuzione all'interno del browser. Il modulo server é rappresentato da uno o più servlet che consentono in modo automatico la comunicazione con il client.
Utilizzando una terminologia in voga in questo momento il prodotto di Macromedia consiste in una serie di web services per il momento compatibili con JRun e WebLogic; Macromedia a tal proposito afferma che presto la compatibilità verrà allargata anche agli altri application server dato che per adesso Flash Gatetway utilizza solo alcune classi proprietarie di JRun (quelle legate al meccanismo di autenticazione). Facendo le debite considerazioni ed adattamenti, già adesso Gateway potrebbe essere utilizzato con altri server.
La dimostrazione che ho avuto modo di vedere é stata realmente impressionante in quanto a potenza espressiva: le applicazioni Flash adesso non solo permettono la visualizzazione di accattivanti animazioni, ma altresì rappresentare una valida alternativa alle applet, non avendo in tal caso nessun vincolo di compatibilità con i browser. Il client deve infatti supportare il plugin Flash 6 (la prossima versione): si presume che in questo caso Microsoft non desideri ostacolarne la diffusione eliminando il plug in dal proprio browser ma non é detto, visto quello che è successo con il plugin Java o QuickTime.
La potenza espressiva del linguaggio di programmazione di Flash é sicuramente limitata (ambiente script based alla Visual Basic senza OOP, ma con il concetto della timeline); si deve però considerare che in questo caso il client deve essere considerato come un estensione minimale del server e che deve svolgere pochissime operazioni, nessuna funzione di business logic, ma piuttosto semplice visualizzazione dei dati e gestione della interazione con l'utente.
Per quello che ho potuto vedere questo obiettivo é stato brillantemente raggiunto grazie anche all'introduzione di una serie di widget nuovi molto belli e potenti. L'assunzione secondo la quale il client deve fare il client in questo caso é quanto mai adatta.
Maggiori informazioni su Flash Macromedia possono essere ottenute all'indirizzo http://betaprograms.macromedia.com/nozomi

 

La nota di colore
Come ormai sono uso fare ad ogni trasferta statunitense, scelgo un evento particolare come la nota di colore da raccontare ad amici e colleghi. Quest'anno la nota di colore è stata eletta ufficialmente una cosa capitatami in albergo la penultima notte: il venerdì sera, a termine della cinque giorni statunitense dedicata a Java, immerso nei miei pensieri relativi al futuro di Java ed alla probabile lotta che ci apprestiamo a vedere in atto fra J2EE e .net, mi accingevo ad andarmene a letto quando una delle emittenti della televisione via cavo dell'albergo é andata in crash, mostrando un notissimo blu screen tipico del sistema Windows NT. Anche se in genere non sono solito assecondare guerre di religione legate alla battaglia legale Sun vs Microsoft, la cosa in se mi è apparsa alquanto buffa, ed ho deciso che era mio preciso compito immortalare il bug televisivo.


Figura 7 - Vedere uno schermo blu anche alla televisione è
una esperienza che ricorda gli scenari da fantapolitica di George Orwell

Mi sono addormentato ripensando ad una frase di un collega italiano che affermava come Microsoft abbia indotto a considerare normale che un software possa essere non stabile. Non so se questa cosa sia vera, ma quando il sonno infine ha vinto ogni mia ultima resistenza, ricordo che stavo ironizzando sul fatto che probabilmente questa cosa non sarebbe mai successa se la televisione avesse utilizzato Unix e Java come piattaforma di base.
Buonanotte e sogni doro, anzi no, sweet dreams….

 

Conclusioni
Quest'anno JavaOne ha visto un pubblico sicuramente ridotto rispetto agli anni passati (si parla di appena 10.000 persone) sia per la crisi che ha stravolto il mondo dell'informatica, sia per l'organizzazione della edizione giapponese di JavaOne (e di fatti era del tutto assente il pubblico orientale).
Nonostante questo si sono notati alcuni importanti segnali di ripresa: innanzi tutto interessante il coinvolgimento di aziende che fino ad ieri seguivano solo marginalmente il mondo Java (solo per fare un nome Nokia quest'anno era uno degli sponsor principali, così come Motorola e Macromedia).
L'esplosione del settore wireless-embedded ha dato finalmente dimostrazione della supremazia di Java in questo settore dove non esistono tecnologie concorrenti in grado di offrire lo stesso livello di flessibilità ed integrazione con il lato server.
Insomma è stato un Java One sicuramente molto interessante, denso di novità e di segnali positivi. Sun da 6 mesi a questa parte ha iniziato nuovamente a correre e sfornare novità a ripetizione, una più interessante e promettente dell'altra. E' indubbio che sarà impossibile seguire tutte queste novità, e solo il tempo potrà far comprendere cosa effettivamente sia utile ed importante. La regola che si dovrebbe tenere a mente per i prossimi due anni é che probabilmente 24h al giorno potrebbero non bastare per rimanere allineati con tutte le nuove uscite.
Forte è però la sensazione che questa nuova attività produttiva abbia due scopi paralleli, oltre a quello prettamente legato al progresso tecnologico. Da un lato cercare di dare nuovamente fiducia ad un settore che risente ancora della crisi appena passata, dall'altro fornire un segnale forte alla comunità degli sviluppatori Java circa lo stato di salute (buono) della piattaforma Java2 ora che Microsoft sta per rilasciare il suo .net.

MokaByte® è un marchio registrato da MokaByte s.r.l. 
Java®, Jini® e tutti i nomi derivati sono marchi registrati da Sun Microsystems.
Tutti i diritti riservati. E' vietata la riproduzione anche parziale.
Per comunicazioni inviare una mail a info@mokabyte.it