MokaByte 96 - Maggio 2005
  MokaByte 96 - Maggio 2005  

 

 

 

Programmare con il Web

Nel corso degli ultimi mesi sono emersi su Internet diversi siti che offrono allo sviluppatore informazioni utili su API e codice open source. Sta emergendo un nuovo modo di programmare, quello che prevede la presenza di una finestra del browser sempre aperta ed in primo piano sulla scrivania

Se fino a pochi anni fa si poteva pensare all'IDE come unico strumento di sviluppo, omnicomprensivo ed in grado di soddisfare a tutte le esigenze del programmatore, con l'attuale evoluzione dell'offerta Web non si può certo dire che la situazione sia ancora così.
Per quale motivo? Ci sono una serie di forze che spingono allo sviluppo di offerte di servizi basati sul Web:

  1. quantità di informazione. Con il crescere della quantità di API della piattaforma Java la ricerca e la fruizione della documentazione su una specifica classe o un particolare metodo diventa più difficoltosa. Il classico formato Javadoc, a cui tutti siamo abituati ed abbiamo imparato ad apprezzare e leggere velocemente, è in grado di trattare anche con una quantità notevole di classi, ma J2SE e J2EE stanno diventando veramente grandi! Cercare la documentazione di java.lang.String o java.util.HashMap diviene dunque problematica e non sempre l'autocompletamento e le avanzate funzionalità degli IDE sono completamente sostitutivi;
  2. supporto della comunità. La comunità di sviluppatori è una risorsa preziosa e spesse volte indispensabile. Molte informazioni escono dai forum, dalle mailing-list ed altri siti collaborativi. Si pensi al manuale online di www.php.net: certe volte sono di più i commenti degli utenti del testo di specifiche originale. Questa forma di documentazione, dall'aspetto prettamente pratico, si aggiunge a quella ufficiale per integrarla ed estenderla al di la delle normali capacità di documentazione di un gruppo di progetto open source o aziendale;
  3. patrimonio dell'open source. I progetti di sviluppo open source hanno prodotto centinaia di migliaia di righe di codice (forse di più ?), spesso con un livello di qualità eccellente. Ogni tanto può capitare di spulciare nel codice di un progetto open source per prenderne esempio, o integrarne funzionalità. Un approccio strutturato è Jakarta Commons, che a livello pratico si occupa di estrarre piccoli elementi funzionali di base dai progetti open source per renderli disponibili a tutti i progetti. La base di codice dei progetti open source è un patrimonio prezioso di codice funzionante.

Sulla base di queste forze sono nate diverse iniziative che enfatizzano uno o l'altro aspetto, ma che in un futuro prossimo potrebbero convergere.

 

Java Documentation Project
Questo progetto sostiene un semplice sito che permette la ricerca veloce di un metodo o di una classe Java all'interno della documentazione ufficiale di SUN (Figura 1). Invece che cercare nella vista a frame o per package tipica di Javadoc è possibile digitare il nome della classe o del package. Se viene trovata una occorrenza esatta, il browser viene rediretto alla relativa pagina di documentazione del sito java.sun.com. Nel caso il termine non venga trovato viene presentato il risultato della ricerca attraverso Google. È possibile restringere poi la ricerca del potente motore di ricerca solo su java.sun.com o su tutto Internet.


Figura 1
- javadocs.org

Java Documentation Project ricerca solo in J2SE 1.5 e J2EE 1.4 e permette di ricercare direttamente dall'URL. Ad esempio, per trovare il Javadoc della classe FileWriter si può caricare, nel browser, javadocs.org/FileWriter. Si ricordi che il testo della documentazione Javadoc è proprietà di SUN e non può essere rielaborato a proprio piacimento. Javadocs.org è quindi solo un servizio di ricerca e redirect alla documentazione online di SUN. Non ha la possibilità di ospitare sui propri server la documentazione di SUN.

 

JDocs
Questo progetto del Javalobby Network raccoglie la documentazione di centinaia di progetti open source, presentandoli nel classico formato Javadoc, a cui però sono stati aggiunti alcuni elementi particolari. Per ciascuna classe, metodo o proprietà è presente la sezione Elsewhere on the Web con pulsanti per la ricerca su Google, MSN e Yahoo. Un ulteriore link fornisce il trackback, che permette di ottenere un collegamento all'elemento nel proprio blog.

 


Figura 2
- jdocs.com

Un altro elemento aggiuntivo al normale Javadoc è la presenza dei commenti degli utenti, che è possibile associare a qualsiasi elemento della classe. Questo aspetto è fondamentale per includere la conoscenza della comunità in un unico punto. Purtroppo però, pare che ad oggi, dopo qualche mese dal lancio, non siano presenti così tanti commenti degli utenti. Forse però la situazione migliorerà in futuro.
Un'altra funzione interessante è la possibilità di inserire metodi e classi nei preferiti di JDocs, in modo da averli sempre sottomano.
Anche JDocs supporta la ricerca, con la possibilità di rivedere le ricerche fatte di recente. Ad esempio, cercando "String" vengono elencati tutti i metodi e le classi che includono questo termine nel nome, in tutti i progetti registrati.
Il progetto elenca ad oggi 130 progetti, ma con una apposita funzione è possibile restringere le ricerche e visualizzazioni solo a quelli effettivamente utilizzati. Un sistema semplice ma efficace per tenere sotto controllo la complessità.
Inizialmente JDocs annoverava anche - e principalmente - le API di SUN, che però a chiesto immediatamente di togliere, per i motivi descritti sopra. Insomma, uno degli aspetti principali per cui era nato JDocs è stato subito contestato. Una gaffe incredibile se si pensa che l'iniziativa parte da Javalobby, che di Java e SUN dovrebbero saperne molto.

 

JExamples
Fino ad ora si è parlato solo di documentazione, ma il codice stesso è fonte di importanti informazioni. Il progetto JExamples analizza il codice sorgente di programmi come Ant, Tomcat o Batik, nelle sue versioni stabili e pronte per la produzione. Il codice sorgente viene indicizzato ed inserito in un database ottimizzato per le ricerche.
L'utente può quindi cercare una classe, un metodo, una sottoclasse, una implementazione di interfaccia e JExamples troverà degli esempi relativi a quanto introdotto (Figura 3).


Figura 3
- JExamples.com

Nel risultato della ricerca vengono riportate le porzioni di codice che utilizzano quanto ricercato e trovati nei progetti indicizzati dal sito. Per ogni pezzo di codice è riportata la classe di appartenenza, il progetto, la tipologia di licenza (GPL, altro) ed il livello di complessità del codice. Questa informazione è rappresentata da una icona (C1, C2, C3) di diversa colorazione. La complessità C1 è la più bassa mentre C3 è la più alta.
Facendo clic sul nome della classe viene aperto il sorgente, con la possibilità di includere o escludere dalla visualizzazione i numeri di riga. In corrispondenza degli utilizzi dell'elemento cercato nel codice viene riportato il numero di riga in rosso ed un collegamento Rate permette di indicare se l'esempio è stato utile o meno.
Durante la visualizzazione del codice è sempre presente una zona in alto per fare ulteriore ricerche ed una zona a destra con l'elenco delle occorrenze trovate nel file con il rating ottenuto.

 


Figura 4
- una ricerca con JExamples




Koders.com
Anche questo sito (Figura 6) permette di cercare all'interno del codice sorgente, ma questa volta scritto anche in altri linguaggi, da Ada ad Erlang a VB e naturalmente a Java. È possibile filtrare per tipologia di licenza

.


Figura 6 - koders.com

Cercando con Koders una classe od un metodo viene presentato l'elenco dei file che contengono un riferimento a quanto digitato. La ricerca non è però precisa come nel caso di JExample: cercando Writer si ottengono in risposta tutte le sue variazioni, incluse StringWriter o MockJspWriter e non i riferimenti alla classe Writer di per sé. Una volta selezionato il sorgente voluto si accede alla sua visualizzazione completa di colorazione della sintassi, link per l'accesso all'homepage del progetto, informazioni riassuntive sullo stesso ed una comoda sezione che riassume proprietà e metodi della classe.

 

Conclusioni
Che evoluzione avranno queste iniziative? Il supporto della comunità sarà determinante per l'integrazione della documentazione e sarà dunque questa a decretare il successo di quel tipo di iniziative. In entrambi le tipologie di informazione, documentazione o codice sorgente, la presenza di un database vasto, ben strutturato e costantemente aggiornato è un elemento indispensabile. Difficile dunque pensare all'introduzione di queste stesse funzionalità negli IDE, se non come client di servizi Web remoti. In conclusione, se già oggi il Web è uno strumento di lavoro importante per lo sviluppatore, forse domani lo sarà ancora di più.


Massimiliano Bigatti é autore di diversi libri su Java, tra cui "Java ed Open Source" (Tecniche Nuove 2005). È certificato, tra le altre, come SUN Certified Enterprise Architect for Java Platform, Enterprise Edition Technology. E' content editor del portale dedicato ai Web Services http://javawebservices.it.