1. Java: un linguaggio di programmazione per applicazioni multimediali
e multiambiente
1.3 Applicazioni multimediali in rete con Java
Dal linguaggio e dall'ambiente Java le applicazioni multimediali in rete traggono notevoli possibilità
di sviluppo. In particolare, Java trasforma il World Wide Web, l'ambiente più sfruttato e più
conosciuto al grande pubblico su Internet, in uno strumento multimediale completo.
Infatti, tramite Java un client Web ha la capacità di:
- visualizzare animazioni di qualunque genere [vedi Osservazione 4 in Appendice A];
- gestire e manipolare messaggi sonori;
- gestire interazioni complesse e articolate tra client e server.
Tutto ciò può avvenire senza che vi sia la necessità di stabilire in precedenza specifici protocolli di
comunicazione e scambio dati fra client e server. Se è vero che i MIME e la Common Gateway
Interface (CGI) danno la possibilità di creare una certa multimedialità e interattività in ambiente
WWW [vedi Osservazione 5 in Appendice A], è anche vero che essi si fondano su protocolli rigidi,
che devono essere fissati una volta per tutte. Inoltre, il cambiamento di questi protocolli impone pure
l'aggiormento di tutte le applicazioni client WWW. Quest'ultima condizione si rivela ovviamente
molto gravosa.
In sostanza, i punti di forza su cui si fonda la multimedialità di Java sono i seguenti.
- Creazione di nuove interfacce utente per i browser Web (in particolare per il client Web Hotjava).
- Possibilità di aggiornamento in tempo reale delle interfacce utente per i browser Web create con
Java.
- Indipendenza dai protocolli usati per trasmettere i dati (per esempio, animazione e sonoro).
- Possibilità di aggiornamento continuo dei protocolli in maniera trasparente per l'utente.
Per esempio, con Java è possibile progettare applicazioni che visualizzino immagini in movimento e
producano suoni direttamente in una finestra di un browser Web. L'informazione audio e video può
essere prodotta in tempo reale da un server remoto. Ciò può essere utile per esempio nel campo della
videoconferenza. Il vantaggio di usare Java nell'implementare questo genere di servizi è che non
sussiste alcuna necessità di stabilire dei protocolli specifici tra client e server per la trasmissione dei
dati. Si può usare il normale HTTP senza alcuna modifica. Non vi è nemmeno il bisogno di usare i
MIME. Il browser Web perciò non deve possedere alcuna caratteristica particolare, a parte quella,
ovviamente, di essere capace di interpretare il linguaggio Java. Le informazioni che riguardano la
compressione dei dati, gli algoritmi usati, il numero di immagini al secondo, la risoluzione possono
essere stabiliti immediatamente prima della trasmissione dei dati. Addirittura, nei casi in cui ciò si
renda necessario (per esempio, con codifiche adattative), è anche possibile variare le informazioni
relative ai dati durante la trasmissione.
In linea di massima, un collegamento audio e video in una semplice sessione WWW può essere
stabilito nella seguente maniera.
- Creazione di uno applet (applicazione Web in linguaggio Java) che gestisca l'animazione e il
sonoro nella finestra Web del client. I dati vengono inviati con un determinato protocollo che
stabilisce i parametri fondamentali di una trasmissione audio e video (frame al secondo, legge di
compressione audio, algoritmi di compressione video, etc.) nonché la socket del server usata per la
trasmissione. Lo applet del client provvede a leggere il flusso di dati proveniente dal server e
produce l'animazione e il sonoro. Lo applet del client fornisce pure una grafica opportuna per
l'utente. Ad esempio, pulsanti e cursori grafici tramite i quali è possibile controllare colore,
luminosità, contrasto del video, volume e tonalità del sonoro.
- Creazione di una applicazione che sul server provveda a inviare su un determinato socket i dati
video e audio secondo il medesimo protocollo usato dal client. I dati video e audio possono
provenire da un archivio presente sul server, per esempio un CD-ROM. Oppure essi possono
essere tratti da una scheda video collegata con una telecamera. In quest'ultimo caso si può
realizzare una trasmissione di tipo televisivo, utile, ad esempio, per realizzare videoconferenze. La
compressione del segnale video sarà eseguita sulla scheda video da circuiti hardware dedicati.
- Creazione di un documento HTML ove compaia il riferimento al codice dell'applicazione applet
per il client. Quando il client con il browser legge il documento HTML, il codice dello applet
residente sul server viene trasmesso al client stesso tramite il semplice protocollo HTTP. Una volta
caricato il codice Java, il client esegue lo applet che genera video e sonoro reperendo il flusso dei
dati dalla apposita socket del server.
Per maggiore chiarezza, si riporta un grafico che illustra la comunicazione fra client e server per una
applicazione del genere che è stato appena descritto.
richiesta di documento HTML con applet audio-video
Client Web -------------------------------------------------------------------------------------------> Server Web
invio codice Java dello applet richiesto
Client Web <------------------------------------------------------------------------------------------- Server Web
Sul client, lo applet entra in esecuzione e accede alla socket
del server dove vengono forniti i dati audio-video
Client Web -------------------------------------------------------------------------------------------> Server Web
Il server invia i dati audio-video
Client Web <------------------------------------------------------------------------------------------- Server Web
Il funzionamento reale di un collegamento audio-video di tipo Web sarà ovviamente più complesso di
quello illustrato. In particolare, il protocollo di comunicazione dei dati audio-video dovrà prevedere
una fase di negoziazione tra client e server ove si stabilisce la socket su cui comunicare e la velocità di
trasmissione dei dati compatibilmente con la capacità delle rete. Inoltre, il protocollo dovrà gestire il
cambiamento automatico della socket ove avviene la trasmissione, similmente a ciò che avviene con il
il protocollo ftp.
Quando si rende necessario apportare variazioni o cambiare completamente i protocolli di
comunicazione, è sufficiente modificare le applicazioni che gestiscono la trasmissione dei dati video e
audio. Siccome il codice di queste applicazioni risiede tutto sul server, sul client non c'è bisogno di
compiere alcuna operazione [vedi Osservazione 6 in Appendice A].
Con Java è pure possibile aggiornare le interfacce utente in ambiente WWW. Ciò è una caratteristica
interessante per il linguaggio ideato dalla Sun. Infatti, da quando è nato, il Web ha cambiato
continuamente aspetto e funzionalità. Potendo ricevere del codice dal server, con Java i browser
possono eseguire programmi che modificano la funzionalità e l'aspetto dello stesso browser. Tutto ciò
con il vantaggio della trasparenza rispetto all'utente. Quest'ultimo, infatti, non ha più la necessità di
reperire continuamente versioni nuove ed aggiornate del browser e installarle sulla propria macchina.
Egli, invece, usando Java, riceve automaticamente dal server il codice di aggiornamento della propria
applicazione client Web. Per esempio, con Java si possono implementare nuove funzioni per la
navigazione in rete, impostare nuovi aspetti grafici, cambiare il layout dei tasti di una applicazione
applet all'interno della finestra di visualizzazione del browser. Al limite, è possibile addirittura che il
server invii al client il codice Java di una nuova applicazione browser completa in tutte le sue parti.
Il cambiamento delle interfacce utente in ambiente Web è particolarmente interessante quando si fa
uso del browser Hotjava. Hotjava, infatti, è una applicazione client Web implementata
completamente in linguaggio Java dai ricercatori della Sun. Attualmente (dicembre 1995) è
disponibile ancora la versione alpha di Hotjava rilasciata nel marzo 1995. Tale versione, ovviamente,
è capace di interpretare solo la versione alpha del linguaggio Java. La Sun comunque assicura che
presto sarà disponibile pure la versione beta di Hotjava. Il fatto che Hotjava sia implementato in Java
fa sì che il suo codice eseguibile risieda in un certo numero di classi compilate ognuna delle quali
provvede a generare una parte dello stesso browser Hotjava. Le classi compilate non devono
necessariamente risiedere tutte sulla macchina del client. L'applicazione Hotjava può tranquillamente
reperire parte delle classi compilate che la compongono presso server remoti sparsi in ogni parte del
globo. In questo modo essa provvede automaticamente a implementare in sé stessa nuove funzionalità
e nuovi aspetti grafici. In un certo senso si potrebbe dire che il browser Hotjava è capace di
"automodificarsi" tramite l'accesso a siti della rete ove risieda del codice specifico per esso [vedi
Osservazione 7 in Appendice A].