Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Intervista a John Resig

Botta e risposta con il creatore di jQuery
Botta e risposta con il creatore di jQuery
Link copiato negli appunti

John Resig è il Team Leader del framework jQuery, Javascript Evangelist della Mozilla Corporation e autore del libro Pro Javascript Techniques, nonché uno dei migliori sviluppatori Javascript su scala mondiale. In questa intervista ci parlerà dei segreti di jQuery, di cosa bolle in pentola nelle prossime release ma non solo. Vedremo i consigli che John ci fornisce per rendere migliori le nostre applicazioni e qualche informazione sui suoi progetti, come il Selector Engine Sizzle, la Performance Suite Dromaeo ed ovviamente Firefox.

Questa è la trascrizione in italiano del meeting ufficiale di cui esiste anche la versione in lingua originale.

Riccardo: Come è nata la tua grande passione per il Web Design e per Javascript?

John:L'HTML è stata una delle prime cose che ho imparato quando ho iniziato a lavorare come programmatore (più o meno nel 1997/1998). Stavo lavorando con QBasic quando un amico mi mostrò come creare una pagina web (utilizzando Angelfire) e le basi dell'HTML. A Natale di quell'anno mio padre mi regalò due libri sull'HTML che ho praticamente divorato.

Era la cosa più interessante che avessi mai visto. In quel periodo cominciai anche a fare qualcosa con Visual Basic, ma ero più attratto dall'HTML e dal Web Design. La capacità di creare una pagina web semplice che sia immediatamente disponibile per tutti coloro che vogliono visitarla è una cosa semplicemente fantastica –e può creare dipendenza. Io so di essere stato completamente assorbito da questa cosa.

La mia passione per Javascript è nata più tardi, intorno al 2004. Stavo per laurearmi alla facoltà di Informatica (Computer Science) e nel frattempo avevo un lavoro part-time in un'azienda locale chiamata Brand Logic. In quel periodo stavo creando un sito che richiedeva la particolare aggiunta di scrollbars personalizzate. Era un lavoro frustrante e confusionario, soprattutto perché utilizzavo il codice di altri sviluppatori. Decisi quindi di abbandonare e iniziai a studiare seriamente Javascript. Rimasi profondamente colpito da quello che scoprii.

È un linguaggio semplice ma elegante che risulta incredibilmente potente in molte modalità differenti. A quel punto dovevo solo applicarmi e fare molto di più con Javascript, come creare una serie di applicazioni nei due anni seguenti per poi arrivare alla creazione di jQuery.

Riccardo: jQuery è uno dei framework Javascript più utilizzati (e forse il più utilizzato in assoluto) su
scala mondiale. Quale è stata a tuo parere la ragione principale di questo grande successo?

John: La semplicità. Le API di jQuery sono molto più semplici di quelle fornite nativamente da Javascript e dalla maggior parte degli altri framework. Credo che la maggior parte dei framework tenda a complicare le cose anziché cercare la soluzione più semplice per poter portare a termine un lavoro. La semplicità è la caratteristica principale di jQuery. L'API è semplice, la buona documentazione permette di iniziare immediatamente ad utilizzarla e la totale resa cross-browser ne semplifica notevolmente l'utilizzo.

Riccardo: Quale è stato il motivo principale che ti ha spinto a creare un framework Javascript e quali sono stati i principali obiettivi o scelte progettuali che ti sei imposto?

John: I miei obiettivi per jQuery sono stati principalmente due. Innanzitutto volevo un codice che fosse riutilizzabile e che semplificasse il mio sviluppo con Javascript. Inoltre mi sarebbe piaciuto utilizzare questo script per creare applicazioni Javascript senza dovermi preoccupare della resa cross-browser.

Ci è voluto molto tempo per arrivare a questo punto, non è avvenuto dal giorno alla notte. Mi ricordo quella notte del 2006. Stavo sviluppando un'applicazione Javascript utilizzando jQuery, quando finalmente terminai il mio lavoro. Aprii la pagina in Internet Explorer e... "funzionò"! Ero così felice, lo consideravo un grande successo. Ora il mio obiettivo è proprio quello di fare in modo che tutti gli sviluppatori possano provare quelle mie stesse sensazioni quando lavorano ai loro progetti.

Riccardo: Tra i numerosi componenti che compongono jQuery, quale è stato il più difficoltoso da realizzare?

John: Devo proprio dire che il componente più ostico è rappresentato dall'Event Core. Sembra che si possa sviluppare in modo semplice e diretto, invece ci sono un gran numero di problemi da superare. Nella realizzazione di un'interfaccia per gli eventi bisogna tenere in considerazione molti fattori: la possibilità di estensibilità, la performance e l'eleganza del codice. Tutto ciò rende il lavoro piuttosto complesso.

Riccardo: jQuery offre una grande flessibilità per quanto riguarda la possibilità data agli sviluppatori di estendere le funzionalità di base con features personalizzate. A tuo avviso quando uno sviluppatore dovrebbe creare dei plug-in personali invece che usare le funzionalità offerte nativamente?

John: Ogni volta che utente necessita di un codice riusabile dovrebbe creare un plug-in. È una grande tecnica per evitare di scrivere codice ridondante. Nel web esistono centinaia di plugin per jQuery, ognuno dei quali soddisfa esigenze diverse in base al tipo di sviluppatore, e questo aspetto è estremamente importante.

Un plugin non deve comunque essere completamente generico. Per esempio, Digg.com utilizza piccoli plugin personalizzati basati su jQuery, creati per interagire esclusivamente con il sito in questione. Questi plugin velocizzano e semplificano le sviluppo e questo è proprio quello a cui i programmatori dovrebbero puntare.

Riccardo: Che progetti hai per il futuro? Quali novità dovranno ancora aspettarsi gli utilizzatori di jQuery?

John: Al momento stiamo lavorando a jQuery 1.3. Sarà molto più veloce rispetto alla precedente versione (selettori più veloci, manipolazione DOM più veloce, calcolo degli offset più veloce). Puntiamo sempre a fortificare e a rendere il codice più resistente di fronte ai cambiamenti del browser - e proprio per questo sembra che jQuery 1.3 sarà la prima versione, tra tutti i più importanti framework Javascript, che non avrà particolari sniffing interni. Questo è un aspetto fondamentale per l'integrità del framework, soprattutto perché verra rigidamente fornito come regola/modello di sviluppo per tutti i programmatori.

Riccardo: Gli sviluppatori sanno che oltre a jQuery esistono altri ottimi framework sulla piazza, come Protype, Dojo, MooTools, Ext e cosi via...
A tuo parere perché uno sviluppatore dovrebbe scegliere jQuery per sviluppare le proprie applicazioni?

John: Penso che uno sviluppatore debba scegliere jQuery se, e solo se, esso rappresenti la scelta che più gli si addice. Se con jQuery è possibile risolvere il proprio problema, allora dovrebbe essere scelto; altrimenti, se con jQuery o qualsiasi altra libreria non è possibile ottenere il risultato desiderato, non dovrebbe essere scelto. Io credo nella qualità del framework, della comunità e della documentazione, ed è per questo che ritengo che jQuery debba essere provato subito.

Riccardo: Sappiamo che in rete esistono moltissime risorse legate a jQuery; ad uno sviluppatore principiante che vuole iniziare ad utilizzare jQuery nelle proprie applicazioni, che consigli daresti per imparare a padroneggiarlo al meglio?

John: Iniziare con i tutorial di base di jQuery, "giocare" con qualche semplice funzione e familiarizzare con il framework. Il peggior modo per iniziare ad utilizzare jQuery è proprio quello di migrare bruscamente da un framework all'altro. Bisogna procedere a piccoli passi ed immergersi gradualmente nelle modalità di scrittura di codice offerte da jQuery, per poter ottenere risultati migliori di quanto ci si possa apettare.

Riccardo: Seguendo i tuoi progetti, ho notato che sei al lavoro su di un nuovo Selector Engine, Sizzle, che una volta stabile, verrà promosso ad engine ufficiale di jQuery. Che vantaggi apporta rispetto al motore attualmente presente in jQuery?

John: È più veloce rispetto all'engine attualmente utilizzato da jQuery ed è molto più flessibile. Era molto importante creare un engine che fosse ancora più veloce, senza però sacrificare la flessibilità e l'estensibilità che attualmente viene offerta. Inoltre, sto attualmente lavorando con altre librerie per tentare di integrare Sizzle all'interno delle loro funzionalità di base.

Riccardo: A mio parere personale la tecnologia Processing.js, che unisce Javascript alle teorie Processing, è una vera e propria rivoluzione in ambito Web. Qual è la tua opinione sugli elementi canvas? Arriveranno mai a "competere" con Flash?

John: Grazie, anch'io la penso esattemente allo stesso modo su Processing.js. Penso inoltre che l'elemento canvas sia fantastico. Fornisce una fonte di funzioni sempre nuove per gli sviluppatori e non credo che tutti si rendano conto di quanto sia utile. Possono cominciare ad usarlo da subito in tutti i browser, senza esitazioni. È incredibilmente veloce (molto di più di SVG per parecchie, semplici funzioni) ed i risultati sono fantastici.

Detto questo, penso che passerà un po' di tempo prima che tutti i browser siano effettivamente in grado di eguagliare Flash alla perfezione, ma ci stiamo comunque avvicinando ad un risultato. Firefox 3.1, per esempio, avrà dei supporti per canvas e SVG (grafica ed interattività) e supporti per gli elementi audio e video, che, uniti, rappresentano una grande percentuale dell'attuale ragione di utilizzo di Flash da parte degli sviluppatori.

Riccardo: Recentemente ho scritto su Edit riguardo alle collaborazioni sia tra jQuery e Microsoft che tra jQuery e Nokia.

"Microsoft sta pensando di integrare jQuery nelle sue piattaforme di sviluppo", recita il blog ufficiale di jQuery. Che tipo di impatto avrà questa novità nella comunità e nello sviluppo di jQuery? Gli utilizzatori devono aspettarsi novità e features addizionali?

John: Siamo molto entusiasti del nostro rapporto con Microsoft e con Nokia. Non penso che ci saranno novità specifiche legate a queste aziende. Noi continueremo a lavorare e ad offrire il prodotto migliore per tutti gli utenti di jQuery. Microsoft e Nokia sono interessate alle stesse cose che interessano a tutti gli utenti di jQuery, ossia velocità, stabilità, migliore documentazione, ecc. Continueremo a concentrarci su questi punti per migliorare la qualità complessiva del framework. Non è attraente, ma è comunque un aspetto di vitale importanza per la longevità del framework.

Riccardo: John, tantissimi sviluppatori vorrebbero scoprire i segreti e le modalità con cui scrivi il codice Javascript e, di conseguenza, jQuery. Usi qualche tecnica o metodologia particolare per sviluppare la libreria (ad esempio, il test delle performance con Dromaeo)? Come può un semplice script o plug-in diventare parte del core ufficiale di jQuery e quando può essere considerato "stabile"?

John: Una delle necessità fondamentali per il team di jQuery è rappresentata dallo unit testing. Dal momento che esiste una grande quantità di sviluppatori che contribuiscono potenzialmente al codice base di jQuery, dobbiamo assicurarci che tutti i contributi mirino alla qualità. Gli Unit Test ci permettono di assicurare che il giusto livello di qualità venga sempre mantenuto. Nella mia attività di sviluppo personale, questa è la caratteristica che mi è stata maggiormente d'aiuto nell'elaborazione di codice cross-browser.

Inoltre, la possibilità di avere delle suite per controllare le performance (come Dromaeo) è stata di fondamentale importanza per poter migliorare la velocità complessiva di jQuery. Gli strumenti di questo genere sono ancora abbastanza nuovi, ma quelli che abbiamo creato sono davvero stati di grande aiuto. Come per esempio questo tool per il Deep Profiling che ho personalmente elaborato: http://ejohn.org/blog/deep-profiling-jquery-apps/.

Per fare in modo che un plugin diventi parte ufficiale di jQuery, è necessario che possieda una serie di caratteristiche. La più importante è il suo utilizzo da parte della comunità. Deve essere utilizzato da un gran numero di utenti e/o deve costituire la parte necessaria al funzionamento di molti plugin. Dopodiché verrà valutato per la qualità ed eventualmente incluso nel codice ufficiale di jQuery. Naturalmente il codice deve raggiungere la stessa qualità di jQuery (unit test, eleganza e stile, ecc).

Riccardo: John, tu rappresenti uno dei migliori sviluppatori Javascript del mondo. Uno sviluppatore, a tuo parere, come potrebbe ottenere risultati migliori ed incrementare le proprie conoscenze? Hai qualche "segreto professionale" che ti piacerebbe condividere con noi?

John: Innanzitutto cercare di imparare costantemente nuove tecniche di scrittura di codice Javascript invece che continuare ad utilizzare le stesse metodologie di routine. Inoltre, un mio personale consiglio, è quello di provare a sviluppare codice Javascript in versione server-side. È un'esperienza completamente differente e piuttosto liberatoria.

È molto importante inoltre, esaminare costantemente il codice degli altri programmatori. Cercare di capire perché scrivono il codice in una determinata maniera. Questa metodologia è di grande importanza per imparare tecniche nuove ed incrementare le nostre potenzialità di sviluppo.

Ma la cosa più importante a mio avviso, è la continuità di sviluppo. Se vi fermate tutti i vostri sforzi saranno vani e questo sarebbe davvero un peccato.

Riccardo: Puoi darci qualche informazione sul tuo ultimo libro, Pro Javascript Techniques (disponibile su Amazon)? A tuo parere perché uno sviluppatore dovrebbe leggerlo?

John: Pro Javascript Techniques è stato pubblicato alla fine del 2006 ed analizza i vari aspetti legati allo sviluppo di codice Javascript: le basi del linguaggio, DOM e Ajax. Penso che il libro possa aiutare ogni programmatore a programmare in modo più veloce ed efficace in Javascript.

Al momento sto inoltre lavorando ad un altro libro intitolato Secrets of the Javascript Ninja che analizza in dettaglio alcuni concetti molto avanzati del linguaggio Javascript ed insegna come elaborare codici cross-browser solidi e stabili in Javascript. Il libro dovrebbe essere disponibile dalla primavera 2009.

Riccardo: Diverse volte ho scritto su Edit riguardo ad uno dei tuoi progetti: Dromaeo, la "Javascript Performance Suite" (che trovo davvero utile). A tuo avviso, uno sviluppatore quanto dovrebbe testare le performance delle sue applicazioni Javascript? perché dovrebbe scegliere Dromaeo?

John: Ci sono un paio di questioni importanti arrivati a questo punto: innanzitutto, Dromaeo è una suite elaborata per controllare la performance di un browser Web e non necessariamente un'applicazione Javascript. Dovrebbe essere utilizzato per controllare i componenti o gli aspetti individuali di un'applicazione. Ma personalmente non ho ancora avuto modo di vederlo utilizzato in questo modo.

Inoltre, uno sviluppatore dovrebbe preoccuparsi innanzitutto della compatibilità cross-browser delle applicazioni (assicurarsi che passino una buona parte degli Unit Test) prima di lavorare sulla performance. Se si è davvero certi che il codice stia già funzionando nella maniera desiderata, allora si può essere sicuri che i miglioramenti della performance non si scontreranno con le applicazioni esistenti.

Riccardo: L'ultima domanda ma non la meno importante: Firefox. Sappiamo che sei parte integrante della Mozilla Corporation, quindi ti chiedo: che tipo di novità devono aspettarsi gli utenti con il rilascio delle prossime release?

John: Firefox 3.1 sarà una grande novità e sarà pieno di aspetti interessanti per tutti gli sviluppatori. Innanzitutto arriverà con il nuovo motore Javascript TraceMonkey (che porterà ad un miglioramento esponenziale della performance Javascript), inoltre presenterà un gran numero di nuove feature per il DOM, compresa la nuova Selectors API (che velocizzerà notevolmente molti framework Javascript).

Aspettavi inoltre un gran numero di migliorie varie nelle prossime release.

Riccardo: John, ti ringrazio per la disponibilità e per la completezza delle risposte!

John: Sono contento che le risposte ti siano piaciute. È stato un piacere.

Ti consigliamo anche