Per
scovare le origini di Derby è necessario
tornare indietro negli anni e spostarci di molte
migliaia di chilometri, fino ad Oakland, California.
È il 1996, e la startup Cloudscape Inc
viene fondata con il preciso obiettivo di sviluppare
tecnologia di database utilizzando il linguaggio
Java. La prima versione, con il nome di JBMS,
avvenì nel 1997. Da quel momento iniziò
un ciclo di revisioni semestrali, che portò
al rilascio di diverse versioni successive. Probabilmente
Cloudscape non ebbe la fortuna sperata, e nel
1999 vendette le attività ad Informix.
Pochi anni dopo, nel 2001, IBM acquisì
tutte le attività legate ai database dalla
stessa Informix, sicuramente allo scopo di ridurre
la competizione per DB2 ed acquisire nuovi clienti.
Il gigante IBM si trovò dunque in mano
questo piccolo database full Java, studiato per
l'utilizzo all'interno di applicazioni Java e
cominciò a chiedersi cosa farne.
Obiettivo
Comunità
Il prodotto non doveva riscuotere molto successo,
anche se negli anni passati ogni tanto lo si sentiva
nominare. Ricordo anche una Java Conference al
Marriott Hotel, a Milano, dove veniva promosso
insieme ad altri prodotti. Non mi sembra però
avesse un successo strepitoso, e non si può
dire che le aziende che lo hanno posseduto abbiano
prosperato, visto che sono state comprate da concorrenti
più grandi. Anche la recente mossa di IBM
verso l'open source è una sorta di conferma:
se il prodotto fosse richiesto ed i clienti disposti
a pagare, perché rilasciarlo gratuitamente?
La prassi di rilasciare del software nato all'interno
delle mura dell'azienda con logica open source
vede illustri predecessori, come Netscape. Ma
se si osserva la fondazione Mozilla, si nota che
ci vuole del tempo prima che del software nato
come commerciale possa funzionare in un contesto
open source.
In questi casi ci sono infatti almeno due problemi:
1. il codice. Spesso il codice non è scritto
con la leggibilità come uno dei primi obiettivi,
visto che lo scopo di un'azienda è quello
di consegnare in tempo e non quello di rendere
i propri sorgenti facilmente leggibili da parte
degli sviluppatori esterni alla stessa;
2. la comunità. Un aspetto essenziale del
mondo open source è la comunità.
Non basta avere del software open source perché
gli utenti lo utilizzino. È necessario
costruire una rete di sviluppatori, utenti, tester,
traduttori/localizzatori, supporter in genere
che componga la comunità di supporto ad
un progetto.
Il
secondo aspetto è forse quello di importanza
più fondamentale e più difficile
da creare. Il fatto di donare i sorgenti ad Apache
Software Foundation (ASF) è infatti, nelle
stesse dichiarazioni di IBM, un modo per costruire
questa comunità, che ad oggi manca. Con
la grande penetrazione nel mondo degli sviluppatori
che può vantare ASF, IBM si aspetta un
grande aiuto su questo aspetto.
Un
piano preciso
La strategia di IBM è quella già
adottata in altri ambiti: offrire una determinata
tecnologia o componente software di valore all'interno
dei propri prodotti. Su questi fornire assistenza,
consulenza, formazione e tutto quanto necessario
a supportare il cliente nell'utilizzo del prodotto.
Un esempio è l'http server di Apache, rivenduto
come parte di WebSphere sotto il nome di IBM http
server.
Il modello è molto simile a quello adottato
da JBoss Inc, con la differenza che IBM si fa
pagare anche i prodotti, mentre JBoss non impone
costi di licenza.
Derby sarà dunque integrato nell'offerta
software di IBM, con lo scopo di divenire un ulteriore
componente "standard" dell'insieme di
tecnologie Java. Non tanto uno standard certificato
dal JCP, non avrebbe senso vista la natura del
software, un database, che già è
garantito dalle API standard JDBC e JTA.
L'intenzione di IBM è piuttosto che Derby
diventi una commodity data per scontata dagli
sviluppatori Java, come se fosse il parser XML,
un provider JMS od il supporto a CORBA. Una funzionalità
che, quando serve, viene importata nel progetto,
magari sviluppato con Eclipse, ed utilizzata nell'applicazione.
In cambio, IBM chiede alla comunità l'impegno
a supportare e sviluppare ulteriormente il software,
correggendo malfunzionamenti ed aggiungendo funzionalità.
Tuffarsi
nelle nuvole
Cloudscape (o Derby) è un database che
risiede all'interno di un file JAR di circa 2MB,
completamente transazionale e relazionale. È
scritto completamente in Java ed è conforme
alle API JDBC. Utilizza il linguaggio SQL implementando
la concorrenza, i constraint, i trigger e le copie
di sicurezza in tempo reale. Supporta CLOB e BLOB,
tabelle temporanee e cursori.
Il software richiede una JVM 1.3 o superiore e
può girare su J2SE o J2EE.
Non richiede amministrazione, anche se le precedenti
versioni di Cloudscape disponevano di un tool
di accesso al database chiamato Cloudview. Non
si trova traccia ora di questo elemento delle
pagine di Apache Software Foundation, ma è
probabile che lo strumento salti fuori di nuovo
in futuro.
Derby pone attenzione anche all'aspetto legato
alla sicurezza. In situazioni normali un database
server gira su una macchina dedicata, che solitamente
risiede all'interno di un'area protetta. Questo
elemento già offre un grado di protezione
sufficiente a garantire che utenti non autorizzati
accedano a dati sensibili. Essendo Derby uno strumento
che può girare su hardware non presidiato,
questi deve mettere in atto i meccanismi necessari
alla protezione dei dati.
Un altro aspetto interessante è la possibilità
di eseguire Derby anche in modalità autonoma,
senza la necessità di istanziarlo all'interno
della propria applicazione. In questo caso cambia
il driver JDBC da utilizzare e la configurazione
è una tipica client/server. Questa configurazione
però impone di rinunciare ad uno dei vantaggi
principali di Derby, la sua natura embedded.
Conclusioni
"L'affare Cloudscape" può rivelarsi
interessante per lo sviluppatore. La disponibilità
di un database server che gira all'interno dell'applicazione,
open source, con una community comunque supportata
da IBM potrebbe rivelarsi un successo. La licenza
di Derby, quella impiegata nei progetti di Apache,
prevede l'utilizzo del software all'interno delle
proprie applicazioni senza la necessità
di pagare alcunché ad ASF. L'unica richiesta
è quella di inserire una nota nel software
e nella documentazione per dichiarare l'uso di
parti di codice fornite da ASF.
Le applicazioni desktop, ma anche quelle J2EE
non fortemente orientate ai dati, potrebbero integrare
Derby per memorizzare dati temporanei o di persistenza
a breve o medio periodo, mantenendo la possibilità
di esportarli verso una base dati relazionale
classica (come Oracle o DB2) in un secondo momento.
Ad oggi Derby è già disponibile,
e si può scaricare la versione 10.0.2.1,
ottenibile a questo indirizzo: http://cvs.apache.org/dist/incubator/derby/10.0.2.1/.
Bibliografia
e riferimenti
[1] Jon Prial - "Why IBM is Open Sourcing
Cloudscape as Derby", IBM DeveloperWorks,
10/2004, http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0410prial/
[2] Vari - "Cloudscape gains momentum",
Slashdot 01/2005, http://developers.slashdot.org/article.pl?sid=05/01/26/0231217
The
Apache DB Project, http://db.apache.org/
IBM Software - Cloudscape, http://www-306.ibm.com/software/data/cloudscape/
IBM Software - Informix Product Family, http://www-306.ibm.com/software/data/informix/
Apache Derby Project, http://incubator.apache.org/derby/
Massimiliano Bigatti
é autore di diversi libri su Java,
tra cui "Java ed Open Source" e "Da
Visual Basic a Java". È 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.
|