In questo post intervistiamo Francesca Tosi, fondatrice assieme Alberto Mancini del Google Developer Group di Firenze, co-founder di Jooink e Intel Software Innovator. Di recente Francesca è diventata moderatrice della community italiana su Google Plus dedicata a Google Web Toolkit, anche se ora il nome corretto sarebbe GWT Web Toolkit. Francesca da sempre tiene talk su questa tecnologia e, tra l’altro, sarà anche speaker assieme ad Alberto Mancini al GWT.Create 2015, la principale conferenza mondiale su GWT. Le abbiamo rivolto alcune domande su questo toolkit.

Benvenuta Francesca su CNJ

[pullquote]Innanzitutto grazie a CNJ ed a Giampaolo.[/pullquote]

Puoi spiegare brevemente cos’è GWT per chi non lo conosce?

[pullquote]GWT (http://www.gwtproject.org) è un Java development toolkit open source che consente di realizzare applicazioni AJAX, come per esempio Blogger e Google Spreadsheets, sviluppando direttamente in Java grazie, tra l’altro, ad un compilatore da Java a Javascript ed una JRE emulata nel browser.

 

Ma più personalmente è la mia arma segreta ;-). È lo strumento che ha permesso, a me che per background ed esperienze sono una matematica e sviluppatrice C/C++/Java, di superare l’idea che le pagine web sono “pagine”  e non applicazioni.

 

Con GWT ho potuto ritrovare un linguaggio tipato, un compilatore.. insomma un ambiente in cui a mio parere si può progettare e scrivere un’applicazione. E, lasciatemelo dire, non un framework che decide come strutturare le mie applicazioni ma un ambiente di sviluppo in cui posso progettare, testare, fare il debugging ed eseguire i miei programmi usando strumenti maturi e tecniche consolidate: quelle del mondo Java.[/pullquote]

Tu conosci diversi sviluppatori che usano GWT, quanto è diffuso nel mondo?

[pullquote]Guarda, credo che sia difficile dirlo. Io sviluppo sempre in GWT e per forza di cose mi trovo spesso in ambienti in cui incontro sviluppatori GWT; tenderei quindi a dire che è molto usato, la mailing list è molto attiva, insomma un progetto molto vivo. Parlando con altri però, alle volte, sembra che nessuno lo usi quindi mi erano nati diversi dubbi a riguardo. Pensandoci poi, ho concluso che la ragione di questa diversa visione deve stare nel fatto che, come si vede dal rapporto annuale realizzato da Vaadin, GWT è usato prevalentemente per applicazioni mediamente grosse (oltre 20 schermate indicano a pagina 10 del report), business oriented (70%) ed a pagamento (40%) quindi immagino che sia relativamente difficile imbattersi per caso in sviluppatori GWT.

 

Anche se, magari non tutti sanno che, Google Groups, AdWords, Wallet sono tutte scritte in GWT ed allo stesso modo parte dei nuovi Google Spreasheets,  http://www.google.com/fonts , https://www.google.com/flights/ , https://www.google.com/moderator/ , https://www.blogger.com, e, uscendo dal mondo Google: http://aws.amazon.com  http://chrome.angrybirds.com/, http://bombermine.com/, http://evernote.com/ e poi mi fermo perchè non voglio fare pubblicità. Quindi magari avete usato GWT anche senza saperlo.[/pullquote]

Ed in Italia?

[pullquote]Come sopra, io ne conosco diversi ed ogni volta che facciamo lezioni di GWT ci sono grandi aziende che  mandano i loro sviluppatori per migliorare o iniziare con GWT, ma non è di sicuro il tool di sviluppo di cui parlano tutti. Il report di Vaadin dice che il 58% degli sviluppatori sono in Europa, in Germania prevalentemente, ma anche in Italia ci difendiamo bene.

 
Magari il prossimo 5 novembre avremo modo di “toccare con mano” l’interesse intorno a GWT in Italia; l’occasione sarà la GWTcon (www.gwtcon.org), la prima conferenza italiana completamente dedicata allo sviluppo GWT con talk di grandi aziende italiane e con speakers nazionali ed internazionali (anche qualcuno della Steering Commettee).[/pullquote]

Cosa è cambiato per gli sviluppatori ora che Google non si occupa più direttamente dello sviluppo di GWT?

[pullquote]È difficile da dirsi. Dal punto di vista dell’immagine del progetto, il fatto che BigG lo abbia “open-sourced” è stato visto da molti come la decisione di non investire più in GWT con le immancabili, e probabilmente inutili, discussioni fiume su quale fosse lo strumento su cui Google investisse d’ora in poi, su come GWT sarebbe andato a sparire eccetera.  Dall’altro lato, l’essere open-source rende gli sviluppatori molto più partecipi nello sviluppo del progetto stesso, il che credo ne possa garantire la crescita nel tempo.[/pullquote]

Inoltre è nata una comunità piuttosto attiva che cura il progetto.

[pullquote]Google, come aveva preannunciato, continua ad essere il committer più attivo e i suoi sviluppatori sono probabilmente ancora gli unici che dominano alcune parti del sistema.  Ma in molti si avvicendano a contribuire ed allo stesso tempo diverse aziende (Vaadin, Sencha, Red Hat, ArcBees, …) sono potute entrare ufficialmente nello sviluppo del toolkit, cosa che altrimenti sarebbe stata di sicuro più difficile. Basta dare una occhiata  a https://www.openhub.net/p/3796 oppure anche direttamente a https://gwt.googlesource.com/gwt/ per rendersi conto di come GWT cresca; anche il numero di domande e risposte su StackOverflow non è da sottovalutare.[/pullquote]

In un contesto in cui Javascript la fa da padrona nel web, ha ancora senso utilizzare GWT nel 2014?

[pullquote]Io credo di si, anzi, personalmente vivo la pervasività di Javascript come una conferma che GWT sia la scelta giusta in molte situazioni: si scrive in un linguaggio molto diffuso come  Java, affidabile (essendo un linguaggio tipato, compilato, OO class-based, …) e se in alcune situazioni si rende necessario “andare nativi” è possibile farlo grazie a JSNI (o comunque con JsInterop fra poco 😉 ). E vi sembra poco!??!?[/pullquote]

Per quali progetti consiglieresti GWT? E per quali invece non lo vedi adatto?

[pullquote]Io lo userei anche per fare la lista della spesa, ma dipende dal fatto che lo uso di continuo e quindi mi resta comodo. Ma mi rendo conto che nella maggior parte dei casi è uno strumento “pesante”, quindi lo definirei più adatto per progetti grossi, complessi, quelli che un tempo si definivano enterprise; che dovranno essere mantenuti per anni; con un team ampio e con alto turn-over e con complesse interazioni fra client e server.[/pullquote]

Quali sono le novità di GWT per il futuro?

[pullquote]Me ne vengono in mente 3 importanti. La prima è il GSS cioè il supporto delle Closure Stylesheets in GWT. I Closure Stylesheets sono un’estensione del CSS che aggiunge variabili, funzioni, condizionali e mixin ai CSS standard. Questo è tra l’altro un progetto portato avanti da Julien Dramaix di ArcBees, quindi uno dei contributor non Google; e, se non avete mai sentito parlare di loro, magari una occhiata a GwtChosen, gwtquery o GWTP. Aiuta a chiarire le idee anche su cosa si intenda quando si dice che GWT open-source ha aperto la strada ad investimenti da parte di altre aziende.

 

La seconda novità è, per quanto mi riguarda, una novità auspicata ma la risposta ad un evento di proporzioni catastrofiche per gli sviluppatori GWT:  il plugin che serve per sviluppare comodamente (e fare debugging) senza lasciare l’IDE sta per essere forzosamente mandato in pensione. Questa è una conseguenza dell’abbandono dei plugin NPAPI da parte di Chrome e delle equivalenti scelte della Mozilla Foundation). L’alternativa è appunto il SuperDevMode che permette di testare il codice Java che state scrivendo direttamente nel browser senza bisogno di un plugin.

 

JsInterop è la chicca che mi sono lasciata per ultima! Il web è un moving target, l’evoluzione dei browser è vorticosa e le API (tecnologie, features, chiamatele come volete: WebGL, WebRTC, WebWorkers, WebSockets) sono un terreno fantasticamente dinamico. Nei prossimi tempi sembra che gli WebComponents faranno da padroni; esistono librerie e framework maturi e decisamente appetitosi nel modo Javascript (AngularJS per citare il più famoso) usati in molteplici contesti e l’investimento migliore che la comunità di GWT poteva fare era quello di rendere l’interazione tra GWT ed il mondo Javascript quanto più semplice possibile. JsInterop è esattamente un nuovo pezzo di GWT che rende l’interazione (bi-direzionale) tra codice Java compilato in Javascript e codice Javascript nativo quanto più semplice ed efficiente possibile. È un terreno complesso ed in evoluzione e che  si intreccia con il supporto di Java 8 (lambda, stream, ..), ma se avete voglia di approfondire, questo documento ne descrive le basi progettuali.[/pullquote]

Infine, una curiosità, come fai a conciliare tutte queste attività e il tuo ruolo di mamma? C’è qualcosa che vorresti dire in particolare alle ragazze che seguono CNJ?

[pullquote]Bella domanda, sto ancora cercando di capirlo 😉 È dura alle volte ma la passione per le cose che faccio mi aiuta. Magari Mattia svilupperà una allergia all’informatica ma … ci penseremo a suo tempo. A tutte posso solo dire, se siete pazze come me seguite tutte le vostre passioni, come in ogni circostanza questa è la cosa più importante.[/pullquote]

34 Posts

Sono laureato in Informatica e attualmente lavoro come Software Engineer in Databiz Srl. Mi diverto a programmare usando Java e Scala, Akka, RxJava e Cassandra. Qui mio modesto contributo su StackOverflow e il mio account su GitHub