MokaByte Numero 28  -  Aprile 1999
 
XML & Java 
I parte

 

di Mauro
Molino
Dopo la rivoluzione imposta da Java, è ora la volta di XML. Vediamo cosa offre il connubio XML Java



In questo primo di due articoli, vedremo a grandi linee alcune caratteristiche interessanti della tecnologia XML, le sue differenze con HTML e le sue potenzialità, fino ad arrivare ai punti di legame con la tecnologia Java.  Nel secondo articolo ci concentreremo invece di più sulla pratica per ciò che riguarda l'integrazione fra le due tecnologie
Rapida introduzione a XML
Extensible Markup Language , rappresenta un sotto-set del SGML , così come l'HTML con il quale condivide anche la struttura a tag. Ma qui si fermano le similitudini. Rispetto a HTML, XML è infatti infinitamente più estensibile e preciso ( non è ad esempio ammessa la non chiusura di un tag che invece la richieda, come invece avviene in HTML). 
Il 10 Febbraio 1998 il W3C ha pubblicato lo standard XML 1.0, che si è ben presto conquistato un posto di rilievo come formato di scambio dati universale. Ma più di qualsiasi spiegazione, vale una piccola porzione di codice XML :
10 <?xml version=&quot1.0"?>
20 <Articolo>
30 <Titolo> XML & Java </Titolo>
40 <Autore> M. Molino </Autore>
50 <Rivista> MokaByte </Rivista>
60 </Articolo>
Come è possibile vedere, XML permette di definire dei propri tag, consentendo così di strutturare in maniera estremamente precisa i propri dati. Vediamo una rapida spiegazione del codice appena visto; alla riga 10 abbiamo la dichiarazione XML, che specifica la versione XML utilizzata. Non è obbligatoria , ma è buona norma inserirla ugualmente.
Le righe successive definiscono degli elementi, e nel caso specifico abbiamo una struttura composta, in quanto l'elemento &ltArticolo> contiene a sua volta degli altri elementi. Gli elementi rappresentano solo una delle classi di tag presenti in XML. Ad esmpio la riga 10 rappresenta una istruzione di processo (processing instruction), altra classe di tag. 
Scopo di questi articoli non è quello di addentrarsi nella struttura di XML, ma di vederne alcuni aspetti utili alla comprensione dell'interazione tra XML stesso e Java, per cui in questa sede non andremo oltre per ciò che riguarda le specifiche XML. Per chi fosse interessato ad approfondire il linguaggio, nella bibliografia di questo articolo ho indicato alcuni link a mio parere interessanti al riguardo.
L'approccio degli scettici è che si, la tecnologia XML è interessante, ma quale può essere l'utilizzo reale, e a cosa serve poter definire nuovi tag quando il browser utilizzato non li riconosce ? La chiave sta nelle applicazioni associate a XML. Un programma che debba gestire un documento XML saprà esattamente cosa fare con i vari tag. Ad esempio, un programma che dovesse visualizzare il documento in formato HTML, avrà la corrispondenza precisa del tag &ltTitolo> con il o i corrispondenti HTML, che potrebbero riguardare il font, le dimensioni etc., mentre un programma che dovesse inserire i dati in un database, avrebbe la corrispondenza fra lo stesso tag &ltTitolo> e il campo di database in cui salvare il dato.
Ma i tag &ltArticolo>, &ltTitolo> etc. da dove vengono fuori ? Molto semplicemente li abbiamo creati noi. In pratica abbiamo creato un nostro piccolo linguaggio XML. E' anche possibile definire quali elementi formino un documento valido. Questo viene fatto mediante la creazione di un DTD ( Document Type Definition). Per ora non tratteremo i DTD, però ricordiamoci che questi rappresentano un punto importante nella tecnologia XML e permettono un maggior controllo sul documento XML.
 
 
 

XML vs HTML

  • Ma cosa c'è che non và nell'HTML ? E' semplice da imparare, portabile, permette di integrare oggetti diversi come ActiveX e JavaBean , etc. Vero, però ci sono fra i vari difetti soprattutto due che lo rendono inadatto alla gestione avanzata di dati:

  •  

     
     
     
     
     

    E' orientato alla visualizzazione e non al trattamento dei dati. I tag servono a definire un formato di visualizzazione del dato, non ne permettono una classificazione o manipolazione.

    Partito come snello linguaggio per lo scambio dei dati , è diventato sempre più grosso, perdendo le pregresse doti di eleganza e semplicità.
Soprattutto il primo rappresenta il vero limite di HTML. Per spiegare meglio il concetto, vediamo un esempio. Il seguente codice HTML crea una semplice tabella :
 
<TABLE> &ltTR ALIGN="CENTER" BGCOLOR="#009040"> 
<TD><B> Rivista </B></TD> 
<TD><B> Mese</B></TD> 
<TD><B> Anno</B></TD> 
<TD><B> Autore</B></TD> 
<TD><B> Titolo</B></TD> </TR>
<TR>
<TD><B> MokaByte</B></TD>
<TD><B> Ott.</B&gtltTD> 
<TD><B> 1998&ltB></TD> 
<TD><B> Mauro Molino</B></TD>
<TD><B> XML & Java</B></TD> &ltTR>
</TABLE>


E' immediatamente visibile l'assoluta assenza di classificazione dei dati presenti nella tabella. Il codice si occupa solo di presentare i dati disponibili, ma non esiste alcuna associazione con il dato stesso. In questa situazione, l'impresa di utilizzare per qualsivoglia scopo i dati della tabella risulta oltremodo ardua. Teniamo a mente queste considerazioni, prechè qualche riga più avanti torneremo sull'argomento.
 
 
 

Vantaggi di XML
Fra i vantaggi che XML è in grado di apportare nella gestione dati ricordiamo:

    Elevato strutturazione, con possibilità di utilizzare un unico documento per diversi scopi (visualizzazione, trattamento dei dati etc.)
    Estensibilità, uno dei maggiori punti di forza di XML.
    Indipendenza da piattaforma e produttori. 
    Standardizzazione. Le specifiche rilasciate dal W3C, sottolineano la necessità di apportare il minor numero possibile di variazioni al XML, possibilmente nessuna.
Pensiamo solo alla situazione di un'azienda che debba gestire tutta una serie di documenti in vari formati. Dopo un'analisi preventiva sarebbe possibile mettere a punto una struttura XML adatta alla gestione di tutti i documenti presenti, e dopo averli convertiti in XML, sarebbe possibile effettuare dei trattamenti su di essi in maniera estremamente semplice, come ad esempio la creazione di un database con titoli, autori etc., la pubblicazione sull'intranet , la creazione di indici di ricerca etc. A questo scopo, alcuni produttori di formati di word processing stanno implementando nei loro prodotti la possibilità di salvare direttamente anche in formato XML . La Microsoft stessa si sta orientando in questa direzione, seppure con alcune limitazioni. Torniamo ora, come promesso, alla semplice tabella generata prima in HTML. Vediamo come potrebbe essere resa in XML:
    <?xml version=&quot1.0">
    <Rivista>MokaByte</Rivista>
    <Mese> Oct.</Mese>
    <Anno> 1998</Anno>
    <Autore>
    <Nome> Mauro</Nome>
    <Cognome> Molino</Cognome>
    </Autore> 
    <Titolo> XML & Java</Titolo>
In questo caso, a differenza che in HTML, ci troviamo di fronte ad una strutturazione dei dati molto efficace. I tag definiti permettono sia di visualizzare i dati come si vuole, sia di trattare i dati stessi, visto che in questo caso è sempre possibile risalire al significato preciso del dato .La visualizzazione è resa possibile tra l'altro da XSL, che sta a XML come CSS (Cascading Style Sheets) sta a HTML. XLS è in grado di convertire XML in HTML, in modo che sia visualizzabile in un qualsiasi browser. Allo stesso tempo però, a livello client è possibile utilizzare i dati presenti nella tabella per fare ad esempio delle statistiche, in quanto ogni dato è inconfondibilmente riconoscibile dal suo tag. 
Notate come sia possibile avere degli elementi all'interno di altri elementi, come nel caso di &ltNome> e &ltCognome> che sono sottoelementi di <Autore>. Questo ci dà la possibilità di creare vere e proprie strutture di dati. Torneremo su questo nel prossimo articolo, quando ci occuperemo del Document Object Model.
 
 
 

Java e XML. Due facce della stessa tecnologia
Esiste un legame tra Java e XML ? Sicuramente si , ed è fortissimo. Da un lato Java permette di scrivere codice che garantisca la massima portabilità fra piattaforme, dall'altro XML fa esattamente la stessa cosa con i dati. In realtà quindi la complementarietà fra i due è totale. In quest'ottica Sun stessa, avendo realizzato le potenzialità insite nel connubio, sta definendo una estensione Java standard per la manipolazione del XML. A detta della Sun , questa estensione standard sarà disponibile su tutte le piattaforme Java, in modo che gli sviluppatori non debbano costruirsi delle classi proprie, cosa che porterebbe rapidamente ad implementazioni non standard, riportando il tutto alla solita accozzaglia di versioni pseudo-compatibili. In più, divenendo estensione standard della piattaforma Java, non sarebbe necessario distribuirne le classi con le proprie applicazioni. 
Fra le varie caratteristiche interessanti, si può citare la possibilità di inserire codice Java all'interno di un documento XML. Questo significa che sarebbe possibile distribuire una struttura di dati assieme al codice necessario per manipolarla, il tutto nello stesso documento. Inoltre non è difficile rendersi conto che Java rappresenta forse la piattaforma ideale per chi voglia cimentarsi con XML. Non a caso infatti, molti dei parser XML attualmente in circolazione sono scritti proprio in Java.
Se si volesse fare un paragone fra le tecnologie HTML/CGI e XML/Java, si potrebbe dire che mentre nel primo caso le funzionalità sono totalmente demandate al server, nel secondo si permette una immensamente maggiore capacità di manipolazione dei dati a livello client, riducendo nel contempo il traffico di rete. In quest'ottica , nel momento in cui si passano dei dati ad un browser, gli stessi dati, inviati una volta sola possono essere trattati dal client stesso in modo da ottenerne allo stesso tempo: tabelle, grafici, statistiche, report e quant'altro sia utile. Se il trattamento dal lato browser viene fatto da un applet Java, ecco che abbiamo trovato un formato di scambio dati semplice, potente, rapido e scalabile.
Un altro utilizzo in fase di ascesa nell'indice di gradimento degli sviluppatori Java è l'utilizzo di XML come formato di serializzazione. Ci sono in giro svariati esempi di integrazione fra Java e XML in cui XML si occupa di definire dei tag che permettano di creare e assegnare proprietà a dei Java Bean.
 
 
 

Conclusioni
Abbiamo accennato alle affinità fra esso e Java, mettendo in risalto come le due tecnologia siano in grado di fondersi in maniera molto proficua. Nel prossimo articolo, entreremo nel dettaglio delle tecniche di integrazione fra Java e XML, soprattutto per ciò che riguarda il parsing e l'incapsulamento dei Java Bean.
 
 
 

Bibliografia
- Extensible Markup Language (XML) 1.0, W3c Reccomendation 10-February-1998. 
 http://www.w3.org/TR/1998/REC-xml-19980210.html(presente anche in formato pdf,xml,ps)
- CO-STARS IN NETWORKING- XML and Java Techologies, Jon Byous. 
 http://www.javasoft.com/features/1999/03/xml.html


 
 

MokaByte rivista web su Java

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