MokaByte Numero 27  -  Febbraio 1999
 
Panoramica su Java Blend
di 
Mauro Molino
Introduzione alle api per la gestione di archivi in formato elettronico secondo il modello OO

 

Java Blend è un prodotto targato Sun Microsystems in collaborazione con la Baan Company, che si pone come scopo quello di semplificare il più possibile lo sviluppo di applicazioni di gestione dati integrate all’interno della filosofia Java. La principale promessa del prodotto è quella di ridurre drasticamente i tempi di sviluppo di tali applicazioni rendendo l’accesso a dati relazionali semplice e rapido. In questo articolo vedremo le caratteristiche di questo strumento di sviluppo.

Dopo un lungo periodo di preparazione , la Sun ha reso disponibile quello che dovrebbe essere il suo strumento di punta nel campo del database-programming sotto Java, Java Blend. Il prodotto si colloca nel gruppo delle Enterprise-API, in compagnia di Enterprise Java Beans, JINI etc. Java Blend è costituito da un tool di sviluppo più un ambiente di runtime che dovrebbe facilitare la creazione di applicazioni complesse che integrino Java. La filosofia del prodotto è quella di lavorare a doppio senso per quel che riguarda oggetti Java e strutture di database, permettendo cioè la intercambiabilità delle due tipologie di dati. Vediamo di chiarire meglio questo concetto, che poi e quello fondamentale per la comprensione dello strumento in esame. Facciamo l’esempio di programma gestionale; per la sua scrittura si richiede la conoscenza di un linguaggio di sviluppo per tutta la parte propriamente applicativa più la conoscenza del SQL per la parte di gestione dati. In Java il discorso è analogo: scriviamo in Java tutta la parte di interfaccia, di elaborazione etc. e, tramite un driver JDBC o JDBC/ODBC ci colleghiamo al database scrivendo delle istruzioni in SQL. Alla base di Java Blend sta l’osservazione da parte della Sun che la coesistenza delle due tipologie di linguaggio genera una dilatazione dei tempi di sviluppo non indifferente, poiché il programmatore deve far coincidere due “viste” della stessa struttura dati, cioè la vista rappresentata dal SQL  ( “SELECT xxx FROM yyy “ ) e quella rappresentata dagli oggetti Java all’interno dei quali verranno a trovarsi i dati stessi ( es. la classe ResultSet) . Nell’ottica Sun , l’utilizzo di uno strumento che permetta l’utilizzo di un unico modello di sviluppo può ridurre i tempi di sviluppo e permettere un maggior controllo dell'applicazione e un suo miglior debugging. Vediamo come questo possa essere possibile.
 

Mapping Oggetto/Relazionale

La comparsa sul mercato dei primi database relazionali a oggetti, ha notevolmente alleviato il problema accennato nel paragrafo precedente, lasciando però aperto il problema per tutti i database relazionali preesistenti, cioè non a oggetti. Java Blend supera questa limitazione utilizzando appunto il Mapping Oggetto/Relazionale. Attraverso questa tecnica, Java Blend è in grado di utilizzare qualsiasi database relazionale, a oggetti o meno, per il quale esista lo specifico driver JDBC, allo stesso identico modo, trattando cioè qualsiasi base dati come se fosse ad oggetti. Questo permette un maggior grado di libertà per quel che riguarda la scelta del database da utilizzare, soprattutto se ci si trova a dover sviluppare una applicazione su un database preesistente ( caso frequentissimo nelle soluzioni aziendali). Come è facile capire, il mapping consiste essenzialmente in una trasposizione della struttura dati relazionale in struttura dati Java, il tutto effettuato automaticamente da Java Blend e in più nei due sensi. La Sun attribuisce al suo prodotto le seguenti caratteristiche :

  • Garantisce un mapping Oggetto/Relazionale altamente integrato con il linguaggio Java
  • E’ stato disegnato per accedere a database esistenti utilizzando sofisticati algoritmi di mapping
  • E’ stato disegnato con particolare attenzione a scalabilità e prestazioni per applicazioni critiche. Supporta sofisticati metodi di caching per garantire alti livellli di utilizzo concorrente.
  • Fornisce un mapping “completo”. Ad esempio, Java Blend permette di esprimere una query in termini di predicati Java all’interno di una Collection Java. Molti prodotti richiedono che lo sviluppatore scriva la query in SQL; questo annulla la maggior parte dei vantaggi del mapping Oggetto/Relazionale, perché lo sviluppatore deve conoscere SQL e sapere come mappare le tabelle appropriate con le classi appropriate.
Al di là della comprensibile enfasi pubblicitaria esternata dalla Sun, è innegabile il fatto che l’utilizzo di un modello di sviluppo unificato e uniformato possa apportare numerosi vantaggi nella fase di sviluppo di una applicazione anche in termini di riduzione dei costi di formazione.
 

Altre caratteristiche 

Oltre ai già citati vantaggi , Java Blend offre una serie di altre caratteristiche che possono orientare lo sviluppatore Java verso un suo proficuo utilizzo ; è degna di nota  la possibilità per lo sviluppatore di scegliere fra concorrenza ottimistica o pessimistica a livello transazionale. Non ultima la possibilità di completa personalizzazione del mapping del database a seconda delle esigenze. Questo permette ad esempio di definire nomi simbolici dei campi mappati diversi da quelli originali, o la possibilità di implementare delle regole di traduzione dei tipi di dati. 
Ancora, la possibilità del mapping a doppio senso permette da un lato di mappare un database esistente creando le apposite classi Java da utilizzare nell’applicazione, dall’altro consente di scrivere prima l’applicazione e poi utilizzare Java Blend per generare il codice SQL corrispondente e necessario per la creazione del database. In questo modo l’analisi si limita all’applicazione, senza dover entrare nel dettaglio di come le informazioni vengano raccolte o di come sia strutturato il database. 
Il linguaggio query utilizzato da Java Blend “dietro le quinte” è OQL, un superset del SQL orientato agli oggetti. Questo permette a OQL di gestire sia i tradizionali database relazionali, sia quelli orientati agli oggetti. Una domanda che viene posta spesso è se gli oggetti di Java Blend siano JavaBeans; la risposta è no. Per la tipologia di utilizzo di questi oggetti, risulterebbe inutile poterli utilizzare in un ambiente visuale, anche perché molto spesso si tratta di oggetti dinamici la cui creazione all’interno di una applicazione non è prevedibile a priori.
 

Portabilità

Naturalmente una delle prime cose richieste ad uno strumento di questo tipo è la portabilità, come per tutti i prodotti legati a Java. In questo caso però la situazione è leggermente più complessa, perché oltre a ricercare la portabilità fra piattaforme, si chiede anche che le applicazioni sviluppate siano indipendenti dal database utilizzato. Entrambe le richieste non vengono disattese da Java Blend. Intanto sia il tool che il runtime sono 100% Java, il che soddisfa pienamente la prima richiesta. Quindi niente metodi nativi e completa libertà rispetto alla piattaforma utilizzata. Per quanto concerne invece il secondo punto, Java Blend si appoggia al JDBC, per cui qualsiasi database relazionale per il quale esista il corrispondente driver JDBC è un potenziale candidato all’utilizzo da parte dello sviluppatore. In questo modo, la stessa applicazione potrebbe, una volta ultimata, funzionare indifferentemente su diversi database relazionali. Per di più Java Blend è conforme alle specifiche del consorzio ODMG ( Object Data Management Group) per quanto riguarda il mapping oggetto/relazionale, consentendo così la portabilità anche su database ad oggetti. 
 

Prestazioni

Precedentemente in questo articolo abbiamo già citato la possibilità di Java Blend di implementare algoritmi di query-processing e di caching. Questi algoritmi, estremamente sofisticati, consentono un alleggerimento dell’attività elaborativa del server di database ed eliminano la ridondanza dovuta ad una eventuale richiesta multipla della stessa query. Tutto questo, come facilmente arguibile, può incidere pesantemente in certe situazioni sulle prestazioni globali dell’applicazione, soprattutto nel caso di un server di database sottoposto a pesanti elaborazioni o ad un numero molto alto di accessi contemporanei. Il pieno supporto delle transazioni completa poi il panorama delle tecniche di ottimizzazione presenti nel prodotto. Ci si possono aspettare prestazioni che al peggio sono come quelle del driver JDBC utilizzato da solo, ma in molti casi migliori per i motivi di cui sopra. 
 

Limitazioni

Fermo restando che gli annunci della Sun  promettano di rendere il prodotto il più completo possibile nelle prossime versioni e malgrado Java Blend presenti già segni di un discreto grado di maturazione, vediamo quali sono alcuni dei difetti di gioventù del prodotto; la prima cosa che si nota è che non è possibile aprire più di un database per volta. La cosa può in alcuni casi non presentare grossi problemi, però è almeno peculiare questa mancanza. E’ comunque già annunciata la correzione nella prossima versione, così come è annunciato il supporto per i BLOBs che adesso manca. Se ci si trova di fronte a una query già utilizzata che debba essere usata così come è, come nel caso di una query altamente ottimizzata, per il momento si deve ricorrere a chiamate a API JDBC in quanto attualmente Java Blend non sarebbe in grado di riutilizzarla. Come si vede , a parte il primo problema, il prodotto non pare soffrire di eccessive limitazioni, anche se al momento della stesura di questo articolo non ci risultano riscontri di una certa importanza sull’utilizzo del prodotto . Staremo a vedere……….
 

Applicazioni multi-tier

Java Blend sembra in grado di poter essere utilizzato in applicazioni multi-tier, non solo a livello client, ma anche in posizione di middle-tier. Potrebbe a d esempio fare la parte del server per la business-logic, e questo sta diventando sempre più un ambito nel quale Java sembra poter dare una marcia in più; il numero di sviluppatori e di software-house che utilizzano Java per lo sviluppo degli application-server è in continuo aumento, sia per la rapidità di sviluppo consentita, sia perché ormai le prestazioni di Java su lato server sono diventate equiparabili agli altri sistemi, con la differenza che in Java sussistono molti meno problemi legati alla gestione della memoria e alla stabilità del sistema.
 

Sistemi supportati 

Java Blend gira su qualsiasi piattaforma con una Java Virtual Machine conforme alle specifiche del JDK1.1. A livello database, attualmente fra i motori più noti il supporto esiste per : MS SQL 6.5, Oracle 7.x e Sybase 10 e 11. Tenendo conto del fatto che sia Oracle, sia IBM stanno migrando o hanno già migrato i propri database proprietari  anche su piattaforma Linux, è facile rendersi conto delle potenzialità di un modello ( quello di Java ovviamente), che può realmente essere totalmente indipendente dalla piattaforma utilizzata.
 

Conclusioni

Il prodotto è nuovo ma non sembra soffrire troppo della sua tenera età. L’idea di base è molto buona, e può veramente risultare di estrema utilità per chi abbia la necessità di cimentarsi nella scrittura di una applicazione gestionale complessa in Java. Il prodotto è rilasciato commercialmente , e il suo prezzo parte da oltre 2000 dollari in su. Questo potrebbe scoraggiare i potenziali utilizzatori, ma forse tutto dipende dal tipo di diffusione che avrà e da quanto manterrà le promesse originali. Nel frattempo non possiamo che rallegrarci del proliferare di tool di sviluppo per Java, segno che questa tecnologia ha già indotto un riconoscimento e una presa di coscienza da parte del mondo informatico. 


 
 

MokaByte Web  1999 - www.mokabyte.it

MokaByte ricerca nuovi collaboratori. 
Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it