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:
-
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;
- 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;
- 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.
|