MokaByte 80 - Dicembre 2003 
JBoss Advanced Training
Un reportage completo dalla 4 giorni romana
di

F. Pavoncelli
e
G Puliti

Nella settimana del 10 dicembre scorsi insieme al mio fido collega di redazione Federico Pavoncelli ho partecipato ad una sessione di "ADVANCED JBOSS TRAINING" i corsi che il JBoss Group sta organizzando in questi mesi per il mondo. Il corso di 4 gg, tenutosi a Roma vedeva in una sala di un lussuoso hotel programmatori e progettisti J2EE provenienti dalla Francia, Ungheria, Germania, Danimarca, Norvegia, Svezia, e dagli USA, oltre ovviamente ai 5,6 iscritti italiani (alcuni dei quali sono volti noti da anni dato che ci incontriamo regolarmente in occasioni come queste).
Il corso ha toccato in modo avanzato ed approfondito gli aspetti più importanti della programmazione ed amministrazione dell'application server. I due speaker erano Marc Fleury e Sacha Labourey, certamente due dei personaggi più importanti all'interno dello staff del JBoss Group.

Il corso
Gli argomenti trattati sono stati veramente molti, ed alcuni sono stati affrontati con particolare: oltre all'interesse tecnologico per gli argomenti in se, la cosa è interessante perché a posteriori fornisce una interessante visione dello stack tecnologico che il gruppo ha in questo momento, e fornisce qualche indicazione per le possibili evoluzioni future.
Certamente AOP (Aspect Oriented Programming) è stata la sigla più utilizzata: tanto per capire l'interesse che il team nutre in questo nuovo paradigma di programmazione, ad ogni intervento su AOP, Marc si trasformava in Zorro (con tanto di mascherina e cappello nero) per parlare di questo importantissimo argomento…. AOP è il modo per liberare gli oppressi (programmatori) dalla schiavitù a cui soggetti (scrivere migliaia di righe di codice)?
Certamente un tocco di geniale follia aleggiava la stanza, e per certi versi era piuttosto strano vedere 20 persone che, giunte da tutta Europa e dopo aver pagato 3200 Euro per assistere al corso, stavano a bocca aperta a pendere dalle labbra del deus ex-machina di EJB e J2EE. Se fosse entrata una mamma, moglie o fidanzata di uno qualsiasi di noi, presumo che avremmo potuto perdere stima e reputazione in un sol colpo.
Altro argomento molto a cuore dei due speaker è quello della serializzazione: i due hanno a lungo parlato sugli aspetti legati a questo meccanismo, a come cercare di ridurne l'utilizzo e come all'interno di JBoss in realtà essa sia poco utilizzata.
Anche se la serializzazione rappresenta solo uno dei molti argomenti trattati, la sua ripetuta analisi e citazione ha fornito una indicazione importante per capire molte cose relative sia alla implementazione di JBoss, sia al rapporto del team con Sun e con le specifiche J2EE.
La conferenza infatti si teneva a pochi giorni di distanza dalla notizia che IBM e Bea hanno definito una serie di specifiche su EJB che hanno ufficialmente dichiarato di voler implementare senza avere interpellato Sun ed il JCP. Certamente questa è una notizia molto forte ed in un certo senso preoccupante (è ormai il tormentone di fine anno cercare di indovinare cosa ne sarà di Sun da qui ad un anno, se e chi vorrà comprare l'azienda), che fa il paio con la notizia data da Marc che quelli di JBoss Group sono stai invitati ufficialmente da IBM per far parte del team per il rilascio delle prossima specifiche EJB.
La nota di colore è che secondo un certo personaggio molto in alto di IBM (di cui non faccio il nome) nel prossimo futuro le aziende leader nel settore enterprise rimarranno 3: IBM, Microsoft, JBoss Group. Affermazione forte, sulla quale lo stesso Marc si è messo a ridere.
A parte queste considerazioni di fantapolitica e metatecnologia, riprendendo il discorso sulla serializzazione sono degne di nota alcune affermazioni fatte dai due:

"[..] non abbiamo utilizzato la serializzazione in alcuni punti dell'application server (vedi la discussione sul nostro forum [forum]) perché era lenta e poi nemmeno gli altri prodotti seguono alla lettera le specifiche.
"[…]Essere completamente aderenti alle specifiche J2EE non sempre è un bene. […] Noi abbiamo implementato alcuni pezzi seguendo una strada nostra […] le performance e la scalabilità sono più importanti degli standard [...]"
E poi anche "[…] la programmazione per pattern è una cosa molto bella ma non dovete seguirla alla lettera […] in certi casi è molto meglio non usarla […] il vostro codice deve essere molto semplice da leggere, come la lettura di un libro riga dopo riga deve essere possibile leggere i vostri sorgenti[…]".
Infine "[…]le specifiche J2EE sono troppo complesse e l'approccio intrapreso è lontano da quello che realmente serve ai programmatori: architetture orientate ai serivizi e AOP".

Certamente alcune di queste affermazioni sono discutibili, e presumo che un alone di mania di onnipotenza pervadesse l'aria, Zorro o non Zorro…
Personalmente non mi reputo allo stesso livello di conoscenza di J2EE e di padroneggiare EJB come Marc o Sacha, ma proprio per questo l'aderenza alle specifiche, l'aver potuto disporre di pattern programming, e di sapere che al mondo c'è un solo modo da seguire (il Java di Sun) mi ha molto aiutato a crescere e soprattutto a non perdere la strada ad ogni incrocio.
Certo per chi deve tracciare la via quando il sentiero finisce le cose sono un po' differenti, ma non so fino a che punto sia utile spingere per muoversi in una direzione autonoma e forzare le cose.
Il fatto che Sun per l'ennesima voci di sottofondo diano ormai per defunto l'application server di Sun (SunONE) non è certo incoraggiante per una azienda che invece dovrebbe segnare il passo.
Non so cosa riservi il futuro a Sun ma tutti in sala eravamo convinti che per il momento niente sarebbe successo.

Altro tormentone della 4 giorni è stato JMX: è la API più utilizzata in JBoss, la più amata da Marc e la più utile per tutta la parte di management. Esemplare l'esempio di utilizzo di JBoss in modalità embedded che ne viene fatto in AMD come container EJB ma anche come framework di management remoto (tramite JMX) nella catena di montaggio fatta dai robot che costruiscono i microchip (sorrisetto di Marc "Noi forniamo l'application server alla ditta che costruisce i processori per IBM").
E' forse questo un nuovo modo di intendere gli application server, ed il motivo per cui JBoss 3.x sia stato pesantemente progettato sul framework JMX è probabilmente proprio per andare in questa direzione: il settore embedded.

Un ulteriore importante argomento trattato a lungo è stato CMP: se si vede la risposta data da Marc relativamente a quale sarà il framework utilizzato per il mapping OR e per la gestione della persistenza, si capisce l'importanza di questo servizio. E'anche importante e rassicurante da questo punto di vista l'aderenza fedele alle specifiche.
Infine la parola cache ha rappresentato la scommessa vinta dal team in fatto di architetture J2EE. Avere in un application server quello che ormai tutti i programmatori in vario modo si implementavano manualmente è una cosa molto importante.

 

L'intervista
Al termine del secondo giorno Federico ed io abbiamo effettuato una mini intervista a Marc (questa volta senza mascherina e cappello da Zorro). Ecco le domande e le risposte fornite dal padre di JBoss.

[Giovanni] J2EE è un framework molto potente e complesso. Sembra che ormai abbia raggiunto una buona maturità, stabilità e completezza. Cosa pensi che manchi ancora alla specifica J2EE secondo voi?
[Marc] In una parola… semplicità. Ci sono un sacco di features molto importanti, ma come abbiamo avuto modo di vedere in questi due giorni quello che vorrei io e che reputo sia molto importante sono una serie di servizi e sistemi che mi nascondano la complessità che sta dietro un servizio. Vorrei qualcosa che semplicemente con un tag XML mi trasformi un meta oggetto in un sistema di servizi e sottosistemi in modo trasparente. In una parola vorrei AOP.
Alcuni aspetti di questa filosofia sono stati introdotti in C#, li vorrei anche in J2EE.

[Giovanni] Allora reputi che .net sia avanti a J2EE?
Non credo, mi piacciono molto alcune idee che ci sono li e l'approccio AOP-oriented che hanno intrapreso. Però non mi piace l'implementazione "A la" Microsoft.
Non ci sono cose come Hibernate per il cache dei dati. I PC devono fare reboot ad ogni installazione o re-deploy di componenti: non è una cosa accettabile in uno scenario enterprise di produzione.

[Giovanni] Credi che potranno competere con J2EE per il mondo enterprise?
[Marc] Fino a quando non implementeranno la portabilità fra le piattaforma no

[Giovanni] Credi che faranno mai questa scelta?
[Marc] …. No

[Giovanni] La mancanza di un container con servizi degno di questo nome non credi che sia una limitazione?
[Marc] E' vero, ma adesso la cosa concettualmente più importante è la mancanza di portabilità.

[Giovanni] AOP potrà essere una evoluzione di J2EE, una complementazione? Oppure la sostituirà?
[Marc] Non lo so. Abbiamo chiesto di far parte nel team di definizione delle specifiche EJB 3.0. Vedremo cosa ne uscirà.

[Federico] A che punto e' il processo di certificazione J2EE di JBoss e quando sarà disponibile la versione 4 ?
[Marc] JBOSS è stato da poco certificato J2EE Compliant (in dicembre ndr) , mentre il rilascio della versione 4 è prevista per la fine del primo trimestre del 2004

[Giovanni] Dato che avete inserito pesantemente JMX come sistema di invocazione anche internamente a JBoss quali garanzie sulle performance ci sono rispetto alle invocazioni tipate by contract.
[Marc] Per il momento non ho risposte ne numeri ufficiali. Non abbiamo fatto benchmark, ma il fatto stesso che JBoss utilizzi pesantemente JMX è una buona garanzia. Considera che ogni chiamata locale passa per JMX e non per RMI/IIOP.

[Federico] La JSR-175 prevista per il prossimo J2SE (tiger ndr) introdurrà nuove caratteristiche al linguaggio java. Una di queste è la possibilità di aggiungere tag alle classi Java sul modello di XDoclet. Consideri questa una caratteristica importante per la programmazione AOP e quindi per JBoss?
[Marc] Gestire i deployment descriptor come file XML è scomodo, potere aggiungere tag alle classi in modo standard (tipo XDoclet) sarà utile. Non una grande cosa, ma sicuramente utile. Alcuni delle mancanze della AOP rimarranno. Per esempio la JSR175 non risolve la mancanza di poter aggiungere comportamenti a livello di istanze di oggetti (come e' invece possibile a livello di JVM e classi).

[Federico] Che progetti avete per gestire il monitoring delle applicazioni e delle performance ? C'e' qualche novità all'orizzonte, come ad esempio qualche protocollo specifico (es ARM o PMI, ecc)?
[Marc] Ho fatto personalmente parte della JSR-77 (la JSR di JMX) e si è lavorato sul tema cercando di identificare un modello per il problema.
Alla fine penso che JMX sia la soluzione più semplice, flessibile e chiara al problema, anche se non la migliore. E per interfacciarsi con sistemi di monitoring sono disponibili JMX adpater come ad esempio quello per SNMP.

[Giovanni] Che futuro prevedete per i competitor principali su Java?
Non credo Sun sparirà e nemmeno BEA, anche se la situazione è critica. Sun diventerà forse come una Unisys. Microsoft non credo che diventerà il dominatore.

[Federico] Hybernate JDO o CMP?
I due standard JDO e CMP sono due specifiche che intendiamo continuare a supportare. Per quanto riguarda la loro implementazione intendiamo utilizzare Hybernate come motore di persistenza. Nella versione 4 sarà anche possibile utilizzare direttamente Hybernate senza passare da altre specifiche.

[Federico] Quale servlet container intendete supportare per il futuro (è spesso cambiato tra Jetty e Tomcat) ?
[Marc] Nel recente passato Jetty era sicuramente migliore di Tomcat nella versione 3.X, ma nonostante questo ci veniva chiesto di passare a Tomcat.
Per il futuro intendiamo continuare a supportare entrambi i web engine, mantenendo Tomcat con la distribuzione principale (Tomcat diventerà sempre più importante perché il project leader di Tomcat 5 sarà impiegato a tempo pieno nel team di JBoss, ndr).

[Federico] e Geronimo?
"It's a player"…. Il futuro ce lo dirà. Per adesso è presto. I ragazzi che hanno lasciato il progetto lo chiamano "Elba Project" (in riferimento l'isola in cui Napoleone era al confino, ndr)

[Giovanni] Quale è l'ambiente migliore per sviluppare EJB per JBoss? Immagino JBoss IDE? Ce ne puoi parlare?
Personalmente le preferenza di un ambiente di sviluppo è come decidere quale sia il mio colore preferito. Sono cose di cui non mi preoccupo o occupo (ovviamente la sua mente vola più in alto dei problemi di ogni comune programmatore, ndr). JBossIDE è buono ma non ho preferenze in tal senso. Abbiamo ottimi rapporti con tutti. Borland ci ha aiutato un bel po' anche a certificare JBoss. IntelliJ è un altro prodotto valido, ma ce ne sono molti.

[Federico] Puoi parlarci del recente lancio del programma JASP ?
[Marc] Il mercato europeo e' differente da quello americano. In Europa la consulenza è un fenomeno decisivo per il mercato. Per questo motivo intendiamo collaborare con consulenti, system integration system e ISP vendor per fornire il massimo supporto agli utenti finali. Legato a JBoss c'e' un business sommerso che abbiamo intenzione far emergere, con collaborazioni con partner qualificati. La nostra intenzione è di non inflazionare il mercato con moltissimi partner certificati, ma solo pochi e bravi team di consulenti in ogni paese.

 

Conclusione
Il corso è stato effettivamente molto interessante, e consente di andare a fondo su determinate tematiche progettuali e di programmazione non banali. Il confronto con progettisti e programmatori EJB venuti da mezza Europa è certamente una esperienza utile ed esaltante. Per chi volesse partecipare ad una delle prossime tappe del corso raccomandiamo una buona conoscenza di EJB, degli aspetti legate alle transazioni ed ovviamente una alta padronanza di JBoss perché tutta la parte introduttiva e di medio livello viene data per scontata.

 

Riferimenti
[forum] Thread di discussione sul forum MokaByte a proposito di Tomcat e JBoss http://www2.mokabyte.it/forum/thread.jsp?forum=6&thread=184
JBoss - www.jboss.org
JBoss Advanced Training
http://www.jbossgroup.com/index.html?module=html&op=userdisplay&id=services/training/advanced
JBossIDE - http://www.jboss.org/developers/projects/jboss/jbosside

 
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