Si è chiusa con successo Jazoon08, la conferenza internazionale sulle tecnologie Java. MokaByte, in quanto media partner ufficiale, ha seguito da vicino i lavori e questo articolo vuole essere un resoconto su alcuni temi di grande interesse presentati durante la conference.
Introduzione
Nei giorni dal 23 al 27 giugno, si è svolta a Zurigo la seconda edizione di Jazoon (“Where Java people meet”) organizzato da Keynode. La conference si è articolata in 6 keynotes, 9 tutorial e ben 76 talk tecnici.
Anche all’appuntamento di quest’anno hanno partecipato molti personaggi di spicco tra cui, solo per citarne alcuni, Ted Neward, Rod Johnson, Joshua Bloch, Martin Odersky, Simon Phipps e Roy T. Fielding. In un’atmosfera piacevole e tranquilla, e pur con la concomitanza dei Campionati europei di calcio, abbiamo avuto modo di raccogliere interessanti notizie relative al mondo Java e non solo.
Figura 1 – Sihlcity, Arena Filmcity (Zurigo)
Jazoon08 ha radunato circa 850 partecipanti (il 6% in più dell’anno scorso) provenienti da ben 37 nazioni diverse, pur con una ovvia prevalenza di coloro che provenivano dal territorio elvetico. MokaByte, in quanto media partner ufficiale, ha seguito da vicino i lavori e questo articolo vuole essere un resoconto sui temi di maggiore interesse presentati durante la conference. Nell’impossibilità di riportare tutte le attività, ci concentreremo sui temi ritenuti più interessanti, su alcuni argomenti “di tendenza”… e su quello che in definitiva abbiamo potuto seguire…
Del resto, siamo in presenza non di un singolo simposio o di una tavola rotonda focalizzata su un tema ristretto: queste conferenze, proprio per il ricco panorama di argomenti che presentano, anche in maniera contemporanea, vanno seguite con il giusto “distacco”, valutando e selezionando gli eventi da seguire, sulla base dei propri interessi, anche a rischio di “perdersi qualcosa”.
Lunedì 23/06
I tutorial
Lunedi 23 giugno: parte il Jazoon con il primo giorno dedicato ai tutorial. Si inizia con due serie di tutorial in contemporanea in due arene diverse: gli argomenti sono le nuove versioni di NetBeans 6.1 e GlassFish v3.
Figura 2 – Ingresso Arena Filmcity (Zurigo)
La terza versione di Glassfish è stata ristrutturata rispetto alla versione v2 per renderla più modulare e flessibile. I principali obiettivi di GlassFish v3 sono:
- piattaforma modulare e flessibile
- supporto OSGi
- gestione modulare dei container e relativo start on demand
- supporto per linguaggi dinamici come Ruby e Groovy
- supporto per Java EE 6 (profiles, web annotations, EJB 3.1 / JPA)
La suite di Sun sta veramente crescendo in modo rapido, ma occorrerà ancora tempo per comprendere se convincerà del tutto come del resto sembra possibile.
Figura 3 – Tutorial Glassfish v3 tenuto da Jerome Dochez
Nel pomeriggio fa la comparsa il primo pezzo da novanta della conference: Ted Neward, un rappresentante autorevole sia della comunità Java che di quella Microsoft [TN]. La track intitolata “The Busy Java Developer’s Guide to Groovy – Everything You Ever Wanted to Know About Groovy to Get Stuff Done” è un tuorial di ben 3 ore dedicato interamente a Groovy.
Figura 4 – Ted Neward durante il suo tutorial su Groovy
Groovy è un linguaggio di programmazione di nuova concezione che può essere considerato una versione più semplificata di Java o come un’estensione stessa del linguaggio per diversi motivi (NdR: su MokaByte 130 di Giugno 2008 è già partita una serie sullo Sviluppo rapido di applicazioni con Groovy & Grails ad opera di Alberto Brandolini, che continuerà a introdurre i lettori a questo nuovo linguaggio sulle nostre pagine per alcuni altri articoli).
Partendo da un semplice esempio di codice Java, la classica classe Person, Neward arriva, spiegando passo dopo passo, a realizzare l’analoga classe in Groovy passando per tutte le differenze sintattiche del linguaggio. Neward sottolinea più volte che Groovy è meno “cerimonioso” di Java. Groovy usa una sintassi molto simile a quella Java ma ha alcuni costrutti che ne semplificano l’utilizzo e che rendono il codice più facile da scrivere, da leggere e da mantenere. Prendendo come classico esempio la classe Person in Java, si evince subito come l’analoga versione Groovy risulti essere più “snella” non necessitando ad esempio dello sviluppo di metodi getter e setter, della la terminazione obbligatoria delle istruzioni con il “;” e di avere il metodo statico main come entry point dell’Applicazione. Si vedano, in tal senso, le differenze nel confronto che segue
Figura 5 – Esempio Java e corrispettivo codice Groovy
Groovy è quindi uno fra i linguaggi di programmazione che possono essere eseguiti sulla JVM (tra gli altri ci sono Scala, JRuby e Rhino, Jython), ma è anche il primo ad avere ottenuto un’investitura ufficiale da parte di Sun con la JSR-241. È un linguaggio dinamico ma può essere utilizzato anche con oggetti tipizzati e può essere usato semplicemente per creare script lanciabili da Shell o da un task di Ant. È basato sul JDK Java e di conseguenza tutte le classi Java sono disponibili anche in Groovy. Il compilatore produce file .class compatibili con quelli generati dal compilatore javac di Java e quindi il codice Java e Groovy possono tranquillamente coesistere e interagire nello stesso progetto.
Durante il tutorial le classi Groovy venivano compilate con il compilatore JDK javac e lanciate con l’interprete groovy. Ted Neward ha dimostrato come sia facile per uno sviluppatore Java trovarsi a suo agio nello sviluppo di codice Groovy, come certi costrutti semplifichino la vita allo sviluppatore (niente getter/setter, facilità di ispezionare le collezioni, …) e come caratteristiche innovative (tipo le closure) possano essere effettivamente utili.
A fine tutorial, Neward ha dato un breve accenno anche a Grails, il framework per lo sviluppo rapido di applicazioni web sulla piattaforma Java. Grails si appoggia a Groovy come linguaggio di programmazione; il loro intento congiunto è di permettere di essere più produttivi sia pure restando sulla JVM e senza perdere la preziosa pregressa esperienza Java.
Le sue conclusioni sono che Groovy è un linguaggio che può essere visto sia come una versione più semplificata di Java ma anche come una sua estensione. I tempi per Groovy sono ormai maturi, sebbene rimangano ancora alcune “viti da stringere” (tipo la documentazione delle classi un po’ misera in certi package di non immediato utilizzo).
Martedì 24/06
Martedi è il giorno di apertura vero e proprio della conferenza ed è introdotto da Juerg Eberhard, CEO di Keynode e organizzatore della conferenza.
Una Scala per arrampicarsi sulla Torre di Babele
Il primo speaker [MO] della conference “gioca in casa”: è Martin Odersky, Professore del Politecnico di Losanna (Ecole Politechnique Federale de Lausanne – EFPL) creatore del linguaggio Scala. Odersky inizialmente ha parlato dell’attuale situazione dei linguaggi di programmazione: una torre di Babele. I sistemi sono costruiti con tanti differenti linguaggi: linguaggi client side, linguaggi server side, linguaggi per accedere agli EIS… il tutto spesso “incollato” con un uso massiccio di XML.
Figura 6 – Martin Odersky (EFPL) e la torre di Babele dei linguaggi nella presentazione di Scala
Scala è un linguaggo di programmazione di tipo general-purpose progettato e sviluppato per esprimere i più comuni pattern di programmazione in maniera concisa, elegante, e “type-safe”. Integra agevolmente le caratteristiche di linguaggi object-oriented e funzionali ed è scritto in Java. Odersky ha introdotto Scala come il “Java del futuro” effettuando una rapida ed efficace carellata sui principali costrutti del linguaggio, ovviamente partendo dall’immancabile HelloWorld:
object ScalaHelloWorld { def main(args: Array[String]) { println("Hello, world SCALA!") } }
Come si vede dal codice riportato, la sintassi di base del linguaggio è piuttosto simile a quella di Java. Compilare un programma Scala significa generare dei normalissimi file .class che contengono bytecode interpretabile da una qualsiasi JVM 1.4 o superiore. Questi file possono essere eseguiti tramite il comando scala, che altro non è se non un file batch per lanciare l’ambiente di esecuzione Scala all’interno della JVM.
Scala unisce in uno stesso linguaggio i paradigmi della programmazione Object Oriented e della programmazione funzionale, con la peculiarità che ogni elemento del linguaggio è un oggetto, inclusi numeri e funzioni.
Open source: verso la terza ondata
È poi il turno di Simon Phipps [SP], Chief Open Source di Sun Microsystems sul tema “The Adoption-Led Market”. Phipps ha incentrato la sua presentazione inerente il mercato guidato dall’adozione di tecnologie, parlando di quelle che lui chiama le tre “ondate”: tre generazioni open source, ognuna della quali spinta da una diversa motivazione.
La prima ondata è stata all’insegna della “Easy Collaboration”, dettata più da ragioni “ideologiche”, e fu segnata da Richarda Stallman che seguì il principio della “Software liberty” per creare il primo GNU Emacs e successivamente da Bill Joy per la versione del Berkeley Unix sotto licenza BSD. È quella più propriamente del “software libero”, che si contrappone all’approccio meramente commerciale delle grandi aziende del software proprietario.
La seconda ondata, più “strutturata”, ha visto diversi approcci sull’open source, in certi casi meno “duri e puri” del precedente, ma capaci di realizzazioni che hanno incontrato un duraturo successo planetario. Si è assistito a diverse “modalità operative”: per esempio, da una parte la “democrazia” della Apache Software Foundation e, dall’altra, l'”autocrazia” di Ubuntu Linux dove molti sviluppatori lavorano per la Canonical Ltd, lo sponsor commerciale di Ubuntu.
La terza ondata, quella in cui ci troviamo coinvolti, porterà ad alcuni cambiamenti nei paradigmi e negli atteggiamenti finora tenuti nei confronti dell’open source: per il 2012, si prevede che il 70% del software commerciale deriverà da progetti open. Sempre più persone entreranno a far parte del mondo open source, pur non conoscendone o non condividendone appieno le istanze ideali: ciò però è inevitabile dal momento che lo sviluppo software si muove in quella direzione.
Le aziende punteranno sempre più a una adozione di software “non monolitica”, ma progressiva e modulare, con scelte fatte, volta per volta, “per soluzione”, se non addirittura “per componente”. Tutto ciò impone di riconsiderare le modalità con cui il software viene adottato nei processi “business”, e a sua volta causa delle conseguenze che ricadranno sul movimento Free/Open Source Software. La collaborazione necessaria nell’ambito open source, la revisione continua a più livelli, la continua correzione dei bug, portano a un software più “conveniente” anche per il mondo business, laddove la convenienza non deve stare nel prezzo, ma nel controllo totale che si ha sul software, e nella “personalizzazione” rispetto al prezzo che si paga.
In questo senso, anche la politica di Sun, che ha deciso di adottare licenze open source, deve essere vista come il tentativo di andare in tale direzione, sebbene restino ancora aperti dubbi e problematiche inerenti la proprietà intellettuale.
Figura 7 – Simon Phipps parla della terza ondata del software open source che impatterà sensibilmente sul sofware per il business
Un nuovo modo di concepire il software enterprise
Rod Johnson [RJ], creatore di Spring, altro rinomato speaker che non ha bisogno di presentazioni, ha proposto lo speech dal titolo “Where Will Tomorrow’s Innovation Come From in Enterprise”.
Secondo Johnson, Java Enterprise si deve innovare e deve evolvere, visti i nuovi requisiti derivati dall’adozione di SOA e Web 2.0 nelle architetture Enterpise, la necessità di modularità e il crescente utilizzo della virtualizzazione. Citando Gartner, per Johnson le piattaforme J2EE e .Net sono inadeguate per soddisfare le esigenze delle attuali applicazioni Enterprise: per questo gli sviluppatori stanno provando soluziooni alternative come Ruby on Rails visto che Java si dimostra lento nell’innovarsi e le innovazioni arrivano più da framework open source come Spring e Hibernate che dalla JCP.
Johnson individua 4 ere:
- era precedente la J2EE
- era della promessa (e dell’effettivo dominio) di Java EE
- era del declino
- era della crescita dell’open source.
Di fatto Johnson si allinea al pensiero già espresso da Neward e Odersky sul fatto che, dopo dieci anni, è oramai tempo di “riordinare” un pò le cose o quantomeno di “svecchiare” la piattaforma a fronte delle nuove esigenze sopraggiunte (“systems need a regular clean-out”).
Java Enterprise Edition è cresciuto molto e nuove funzionalità sono state aggiunte nel corso di questa decade ma alcune, a sue avviso, poco utili e tardive (un esempio su tutti, EJB 3.0: un “non evento”). Inoltre Johnson sostiene da sempre che per fare un’applicazione Java Enterprise non è assolutamente necessario l’intero stack tecnologico proposto da Java EE. Ogni applicazione agisce in uno specifico dominio e necessità che non possono essere risolte con un unico stack tecnologico monolitico che “va bene per tutto”.
Johnson descrive come gli standard siano importanti ma anche come a volte siano fini a se’ stessi o inquinati da ragioni politiche. Crede che le istituzioni che controllano lo sviluppo di Java EE necessitino di maggiore apertura mentale (e stanno iniziando a muoversi in tal senso). Infatti non mancano frasi al vetriolo sulla JCP che viene paragonata al regime dell’ex Unione Sovietica in quanto ha effettuato epurazioni (JDO) e che rischia di scomparire se rimane “chiusa e oligarchica”: in una parola, rischia di fare la fine di CORBA, ucciso dallo stesso standard. Continuando nell’analogia con l’ex URSS, Johnson ravvisa comunque dei segnali positivi (Perestrojka) soprattutto anche in virtù del grande interesse che Sun mostra verso l’open source.
Figura 8 – Rod Johnson parla delle innovazioni necessarie al software Enterprise
Infine Johnson si reputa soddisfatto della versione Java EE 6 (nuovo rebrand di J2EE, dopo Java EE 5) che a suo modo di vedere è un radicale ripensamento della piattaforma visto che implementa la nozione di “profili” (vedere la JSR-316). I profili permettono quindi una “rimessa a fuoco” della piattaforma J2EE, in una nuova piattaforma Java EE più attenta alle esigenze e necessità dei progetti enteprise moderni. I profili propongono uno stack tecnologico man mano più completo (o più complesso, o più pesante, dipende dal punto di vista con cui li si osserva).
Ovviamente quello che per Johnson è il meno rilevante è il “full stack” che reputa pesante e poco utile essendo maggiormente interessato ai profili più “lightweight”, per lui più vicini alle esigenze attuali di mercato.
Mercoledì 25/06
La mattinata di mercoledì è stata caratterizzata da due speech di alto profilo, con taglio quasi “filosofico”, orientati cioè più alla riconsiderazione delle metodologie e degli approcci nei confronti delle tecnologie, che non da un’illustrazione puntuale di specifiche tecnologie: in una sorta di recupero dello spirito “delle origini” Java, due nomi di spicco si sono succeduti nell’illustrare le loro visioni.
Ripensare l’impresa, ripensare le tecnologie
Ted Neward ha affrontato il tema “Rethinking the Enterprise”. Neward è partito da due aspetti apparentemente separati. Per prima cosa ha raccontato come, specie negli ultimi anni, gli vengano poste sempre più spesso domande del tipo “Che framework web devo scegliere?”, “Qual è la migliore API per la persistenza”?, “Che linguaggio di scripting è meglio scegliere?”: questo è indice, da un lato, di un genuino quanto ingenuo desiderio di avere sempre una risposta giusta; dall’altro sottolinea anche il timore di “non essere aggiornati” con le ultime tendenze, rischiando pertanto di essere estromesso dal mondo del lavoro.
In seguito, ha proposto dei problemini, di per se’ risolvibili con competenze logico-matematiche relativamente semplici, dimostrando come persone anche molto istruite e inserite nel mondo tecnologico abbiano però tante difficoltà nel risolverli, proprio perche’ si concentrano maggiormente sul conoscere già “la soluzione giusta”, piuttosto che sull’analisi distaccata del problema.
Tutto questo, nell’intenzione di Neward, vuol dimostrare che spesso in ambito tecnologico ci si concentra troppo sull’ultimo tool o sulla “moda” del momento, cercando di applicarla a tutti i problemi reali che si affrontano: in questo senso occorre ripensare le tecnologie e il ruolo che rivestono nell’impresa.
Da qui, parte una serie di linee guida, alcune delle quali piuttosto “eretiche” rispetto alla pratica comune, che secondo Neward andrebbero prese seriamente in considerazione quando si fa impresa tecnologica. Tra queste indicazioni eccone alcune: ciascun progetto è diverso dall’altro, dal momento che molte variabili cambiano, pertanto le “best practice” rischiano a volte di essere solo una scusa per non porsi problemi, e così non fare qualcosa di diverso e migliore; lo scopo del riuso, per quanto legittimo, resta spesso una chimera quando i progetti non siano proprio uguali; non sedersi sugli allori e indagare sempre i nuovi sviluppi tecnologici, adottandoli però solo se effetivamente utili al progetto che si sta svolgendo; adottare un atteggiamento di “distruzione creativa” in cui si mettono in discussione i risultati raggiunti, non in senso negativo, ma con lo spirito di costruire qualcosa di nuovo… e in definitiva, ricordarsi che il contesto, con tutti i suoi aspetti diversi, ha sempre la sua grande importanza.
Architettura aperta: evoluzione decentrata del software
Roy T. Fielding [RF], attualmente alla Day Software, ma precedentemente dirigente della Apache Software Foundation, ha affrontato il concetto di “Open Architecture”, riprendendo una dissertazione di qualche anno fa, tenuta da Peyman Oreizy all’Università della California nel 2000 (e questo a dimostrazione che negli atenei, se si fa ricerca in maniera oculata, magari non si forniscono soluzioni immediatamente applicabili in azienda, ma si scoprono e si razionalizzano le tendenze e le tecnologie che daranno frutti negli anni successivi).
Fielding ha individuato alcune caratteristiche dello “sviluppo aperto” in cui si enfatizza l’importanza della comunità, la scalabilità connessa alle organizzazioni “virtuali” che si vengono a creare in Internet, la natura volontaristica dei partecipanti, l’importanza della legge di Conway che spiega come la concezione di un sistema tenda a riflettere la struttura delle comunicazioni esistente nell’organizzazione che lo crea.
Partendo da questi aspetti, Fielding ha quindi suggerito come sia inevitabile, in un progetto open, una certa decentralizzazione dello sviluppo del software: anzi, una certa “anarchia” è pure auspicabile poiche’ inserisce nel progetto delle componenti “impreviste” che possono rivelarsi positive nel migliorarne la qualità e impedirne una rapida obsolescenza.
Ovviamente però, occorre anche mantenere un certo ordine in quello che si crea e in tal senso Fielding ha elencato una serie di progetti open source che hanno avuto successo: GNU Emacs, il server HTTP Apache, Linux, Firefox, l’IDE Eclipse, Apache Sling: In tutti questi progetti open source di successo, si nota come un punto di forza sia un’archittettura del software che da un lato promuove una collaborazione libera attraverso le estensioni, dall’altro mantiene comunque un controllo sulle interfacce principali. È in pratica un valido compromesso tra adattabilità e uniformazione, in un modello a “plug-in”, che se ben architettato si rivela vincente.
In definitiva, i progetti open source che sono sopravvissuti e hanno avuto successo sono quelli in cui c’è un design ad architettura aperta del tipo descritto.
Le presentazioni
Oltre alle conferenze dei “luminari”, Jazoon08 si è incentrato sulle presentazioni (tech talks) da parte di singoli studiosi, di consulenti, di aziende etc. che hanno illustrato soluzioni, tecnologie, esperienze, progetti. Molte di queste presentazioni si sono svolte in contemporanea, permettendo ai visitatori di scegliere quali argomenti seguire tra i molti presentati.
In particolare vogliamo ricordare come nella giornata di mercoledì il nostro Raffaele Spazzoli abbia effettuato un intervento inerente la buone pratiche di integrazione, presentando “Writing Integration Logic with JBI ESB: Best Practices and Examples” in cui ha illustrato dettagliatamente gli aspetti teorici, tecnologici e metodologici che sono alla base della realizzazione di componenti per l’integrazione.
Giovedì 26/06
La giornata di giovedi è stata aperta da Joshua Bloch, Principal Engineer di Google.
Java efficace
Bloch ha incentrato il suo speech [JB] sulla presentazione dei nuovi capitoli della seconda edizione del suo libro “Effective Java”. Visto che Jazoon è stato scelto come anteprima per il lancio del libro (il volume era in vendita esclusivamente nella manifestazione, prima di essere disponibile nelle librerie), dopo lo speech Bloch si è dedicato ad autografare le copie del suo libro ai partecipanti, come viene orgogliosamente mostrato sulla home page della conference.
Durante il suo intervento, Bloch si è soffermato soprattutto sull’utilizzo dei generics, sugli enum types, sulle annotazioni a sulla gestione della concorrenza.
Figura 9 – La copertina del nuovo libro di Joshua Bloch
Il libro è proprio bello e, nella sua seconda edizione, assolutamente consigliato a tutti gli sviluppatori. D’altronde il commento di James Gosling, tra l’altro vice presidente di Sun, per quanto molto in linea con il classico stile americano di promozione editoriale, è veramente significativo in questo senso: “Avrei voluto avere questo libro dieci anni fa. Molti potranno pensare che io non abbia bisogno di libri su Java; ma di questo libro ho proprio necessità”.
Venerdì 27/06
Il venerdì è stato un giorno “extra” alla Conference, interamente dedicato a OWASP (Open Web Application Security Project).
Conclusioni
Il bello di eventi come questi è che consentono, anche se per poche ore, di concentrare l’attenzione su argomenti di ampio respiro, e che propongono spunti di riflessione che spesso esulano dal modo comune di pensare che sviluppiamo con la nostra esperienza di tecnologia applicata su progetti reali in azienda. In tal senso, abbiamo voluto presentare ai nostri lettori proprio quegli interventi più particolari, che si caratterizzano per l’alto profilo e l'”alterità” dei temi trattati.
Jazoon08 non ha dalla sua, ovviamente, i numeri che possono avere certi mega-eventi negli Stati Uniti. Ma forse proprio questa dimensione un po’ più raccolta e meno caotica potrà farne, con il passare degli anni, un punto di riferimento in Europa per capire umori, sviluppi, tendenze di tutto ciò che si incentra e ruota intorno a Java.
Riferimenti
[JAZOON]
[TN] Ted Neward
http://jazoon.com/jazoon08/en/conference/speakerdetails.html?type=author&detail=Ted_Neward
[MO] Martin Odersky
http://jazoon.com/jazoon08/en/conference/speakerdetails.html?type=author&detail=Martin_Odersky
[SP] Simon Phipps
http://jazoon.com/jazoon08/en/conference/speakerdetails.html?type=author&detail=Simon_Phipps
[RJ] Rod Johnson
http://jazoon.com/jazoon08/en/conference/speakerdetails.html?type=author&detail=Rod_Johnson
[JB] Joshua Bloch
http://jazoon.com/jazoon08/en/conference/speakerdetails.html?type=author&detail=Joshua_Bloch
[RF] Roy T. Fielding
http://jazoon.com/jazoon08/en/conference/speakerdetails.html?type=author&detail=Roy+T._Fielding