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:

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.

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.

  1. 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.

  2. 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.

  3. 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].