UNIVERSITÀ DEGLI STUDI DI MODENA e REGGIO EMILIA Facoltà di Ingegneria Corso di Laurea in Informatica Indirizzo Economico-gestionale TESI DI LAUREA Progetto e Realizzazione di un'Applicazione Web per l'Elaborazione Cooperativa di Testi Candidato Relatore Alessandro Sessa Chiar.mo Prof. Letizia Leonardi Correlatore Ing. Franco Zambonelli Anno Accademico 1998-1999 Indice Introduzione ........................................................................................................... iv Capitolo 1: Lavoro Cooperativo ............................................................................. 1 1.1 Generalità ...............................................................................................................................3 1.2 Servizi .....................................................................................................................................5 1.3 Componenti del CSCW .........................................................................................................6 1.3.1 Componenti Tecnologici ....................................................................................................... 6 1.3.2 Componenti Umani ............................................................................................................... 7 1.4 Realtà d'Interesse ..................................................................................................................7 Capitolo 2: Server Proxy ........................................................................................ 8 2.1 Architetture per il Lavoro Cooperativo ..............................................................................9 2.2 Requisiti ................................................................................................................................12 2.3 Server Proxy.........................................................................................................................13 Capitolo 3: Realizzazione del Proxy in Java ....................................................... 15 3.1 Obiettivi ................................................................................................................................15 3.2 Scelta Implementativa .........................................................................................................16 3.3 Architettura..........................................................................................................................18 3.4 Messaggistica Mediante il Protocollo AMTP ....................................................................22 3.4.1 Primitive del Protocollo ...................................................................................................... 23 3.4.1.1 Statement.......................................................................................................................... 24 3.4.1.2 Messaggi .......................................................................................................................... 25 3.5 Struttura dei Moduli ...........................................................................................................26 3.6 Applet di Controllo ..............................................................................................................28 3.7 Avvio di un Modulo .............................................................................................................32 3.8 Caching di Gruppo ..............................................................................................................36 3.8.1 Scheda Documenti .............................................................................................................. 38 3.8.2 Scheda Utenti ...................................................................................................................... 39 Capitolo 4: BlackBoard Testuale ......................................................................... 43 4.1 Requisiti ................................................................................................................................44 4.2 Gestione dei File ...................................................................................................................45 4.3 Struttura del BlackBoard Module .....................................................................................48 4.4 Avvio del BlackBoard Module............................................................................................49 4.5 Applet di Controllo ..............................................................................................................53 4.6 Scheda File ...........................................................................................................................55 4.7 Funzionamento ....................................................................................................................60 4.8 Metodi Associati agli Elementi Grafici ..............................................................................67 4.9 Classe BlackApplet ..............................................................................................................76 4.10 Message Component ..........................................................................................................82 4.10.1 Algoritmi ........................................................................................................................... 86 4.12 Web Component ................................................................................................................88 4.13 Main Component ...............................................................................................................89 Conclusioni ........................................................................................................... 90 Appendice A: Internet .......................................................................................... 92 A.1 La Rete .................................................................................................................................92 A.1.1 Storia di Internet ................................................................................................................. 92 A.2 Socket ...................................................................................................................................95 A.2.1 Socket Connection - Less ................................................................................................... 95 A.2.2 Socket Connection - Oriented ............................................................................................ 96 A.2.3 Connessioni a Server Web ................................................................................................. 96 A.3 Il WWW...............................................................................................................................97 A.3.1 Componenti base del Web ................................................................................................. 97 A.3.2 Panoramica del Web .......................................................................................................... 97 A.3.3 Nascita e Sviluppo del Web ............................................................................................... 98 A.3.4 Varietà del Web ............................................................................................................... 100 A.4 CGI.....................................................................................................................................101 A.5 Il WWW e Java .................................................................................................................102 A.6 Applicazioni Multimediali in Rete con Java...................................................................104 A.7 Linguaggio HTML ............................................................................................................106 A.8 Protocolli di Comunicazione ............................................................................................113 A.9 Il Protocollo HTTP ...........................................................................................................114 A.10 URL ..................................................................................................................................116 Appendice B: Il Liguaggio Java: Generalità .................................................... 118 B.1 Introduzione al Linguaggio ..............................................................................................118 B.2 Evoluzione del Linguaggio ...............................................................................................119 B.3 Affinità con il C e il C++ ...................................................................................................120 B.4 Semplicità ..........................................................................................................................120 B.5 Architettura Neutrale .......................................................................................................121 B.5.1 Byte-Code ........................................................................................................................ 121 B.5.2 Portabile ........................................................................................................................... 122 B.5.3 Robusto ............................................................................................................................ 122 B.6 Gestione Automatica della Memoria ...............................................................................122 B.7 Dinamico ............................................................................................................................123 B.8 Sicurezza in Java ...............................................................................................................123 B.9 Multithreading in Java .....................................................................................................126 B.9.1 Cosa sono i thread ............................................................................................................ 127 B.10 Applet ...............................................................................................................................128 B.10.1 Inserimento di applet in un documento HTML .............................................................. 130 B.10.2 Creazione di interfacce utente nel Web (User Interface) ................................................ 131 B.11 Macchina Virtuale ..........................................................................................................132 Appendice C: Il linguaggio Java: Caratteristiche ............................................ 134 C.1 La Programmazione Object-Oriented ............................................................................134 C.1.1 Gli Oggetti ........................................................................................................................ 134 C.2 Struttura di un File Java ..................................................................................................137 C.3 Tipi, Operatori ed Espressioni.........................................................................................137 C.3.1 Parole riservate ................................................................................................................. 138 C.3.2 Tipi fondamentali ............................................................................................................. 138 C.3.3 Espressioni ed Operatori .................................................................................................. 140 C.3.4 Precedenza ed Associatività degli Operatori .................................................................... 143 C.4 Classi ..................................................................................................................................143 C.4.1 Modificatori...................................................................................................................... 145 C.4.1.1 Specificatori di accesso ................................................................................................. 145 C.4.1.2 Specificatori di classe .................................................................................................... 147 C.4.1.3 Specificatori di metodi .................................................................................................. 147 C.4.1.4 Elementi Static .............................................................................................................. 148 C.4.2 Creazione ed uso di Oggetti ............................................................................................. 149 C.4.3 Costruttori e Distruttori .................................................................................................... 150 C.5 Struttura dei Programmi .................................................................................................152 C.5.1 Metodi .............................................................................................................................. 152 C.5.2 Passaggio per Valore ........................................................................................................ 154 C.5.3 Overloading ...................................................................................................................... 155 C.6 Exceptions (Eccezioni) ......................................................................................................156 C.6.1 Le Eccezioni ..................................................................................................................... 156 C.6.2 Le Istruzioni try e catch .................................................................................................... 157 C.6.3 Dichiarazioni throws ........................................................................................................ 158 C.7 Input e Output ..................................................................................................................159 C.7.1 Organizzazione dell'I/O .................................................................................................... 159 C.7.2 La Libreria java.io ............................................................................................................ 160 C.7.3 File.................................................................................................................................... 160 C.8 Ereditarietà .......................................................................................................................161 C.8.1 Classi Astratte .................................................................................................................. 162 C.8.2 Classi final ........................................................................................................................ 164 C.8.3 Interfacce .......................................................................................................................... 164 C.9 Java AWT..........................................................................................................................166 C.9.1 Gerarchia delle Classi ....................................................................................................... 166 C.10 Java API ..........................................................................................................................166 Sigle e Abbreviazioni .......................................................................................... 168 Bibliografia ......................................................................................................... 170 Introduzione Scopo della tesi è progettare e realizzare un'applicazione software di supporto al lavoro cooperativo in ambiente Web. Il contesto nel quale s'inserisce tale progetto è quello di un gruppo di persone che richiedano di poter collaborare e coordinarsi fra loro. In una realtà multiutente, diventa essenziale dotarsi di sistemi che supportino in maniera efficiente le attività degli individui riuniti in gruppi di lavoro: in altre parole servono sistemi che utilizzino i computer per supportare il lavoro cooperativo. In particolare è interessante la situazione che si presenta quando più utenti che vogliono collaborare, si trovano fisicamente in luoghi distanti tra loro; in questo caso nasce l'esigenza di collaborare a distanza e dotarsi di sistemi che permettano la coordinazione, lo scambio d'informazioni e la disponibilità di spazi comuni dove possa avvenire la cooperazione. La disponibilità di documentazione d'ogni tipo presente in Internet, fa di Internet un immenso archivio mondiale il cui accesso è reso possibile tramite l'uso di computer. Conseguenza di ciò, è che gli utenti necessitano di sistemi che supportino la cooperazione e s'integrino con l'ambiente Web; si vogliono esaudire le esigenze di un gruppo di lavoro che sfrutta il Web per accedere alle informazioni disponibili in Internet. Inoltre occorre fornire un supporto allo scambio di informazioni fra i componenti del gruppo. Tutto ciò deve essere realizzato senza andare a modificare gli standard presenti in Internet, e per tale motivo si è implementata una struttura aggiuntiva che s'integri con l'esistente: il Proxy. Con Proxy si intende un software che viene posto in esecuzione su un host (al limite su una macchina di una rete locale) e che funge da intermediario fra il gruppo di lavoro e la Rete, fornendo un ambiente nel quale gli utenti possono scambiarsi informazioni, accelerare i tempi di ricerca dei documenti Web, cooperare nella stesura di documenti testuali, essere supportati nelle attività gestionali del gruppo di lavoro. Basandosi su un Proxy realizzato in linguaggio Java presso l'Università di Modena e Reggio Emilia, si vuole realizzare un modulo che permetta l'elaborazione cooperativa di documenti testuali. La scelta di realizzare il Proxy in linguaggio Java, è dovuta al fatto che tale linguaggio di programmazione è indipendente della piattaforma, ed essendo Internet per sua stessa natura formata da macchine di vario tipo, occorre dotarsi di un software in grado di essere eseguito su ognuna di esse; in particolare occorre che ogni utente che si interfaccia al Proxy sia in grado di utilizzare le funzionalità messe a disposizione da questo. Inoltre l’uso del linguaggio java permette di realizzare un'applicazione immersa nel contesto delle tecnologie WWW con tutti i vantaggi in termini d'ampiezza e diffusione del mercato potenziale. Le richieste alle quali risponde il Proxy sono sostanzialmente due: 1. massimizzare la versatilità dell'ambiente di lavoro 2. massimizzare il grado di cooperazione fra utenti. Le funzionalità a disposizione sono utilizzabili direttamente tramite i browser che gli utenti del gruppo usano per lavorare. Attraverso l'uso delle applet Java è possibile definire delle interfacce grafiche, tramite le quali l'utente può usufruire del servizio. Inoltre data la necessità di scambio delle informazioni, si è realizzato un supporto per la messaggistica col quale le persone possono scambiarsi messaggi senza dover uscire dalla sessione di lavoro cooperativo. Varie sono le situazioni nelle quali il Proxy può essere utile per supportare il lavoro cooperativo: in primo luogo può accelerare i tempi di ricerca su Internet fornendo una cache di gruppo del Proxy che mantiene traccia dei documenti acceduti da tutti gli utenti durante una seduta di lavoro. Un altro servizio può essere quello di supportare la navigazione guidata sul Web. La principale caratteristica del Proxy, è che il servizio messo a disposizione degli utenti dipende dal modulo software installato. Inoltre esso mette a disposizione una serie di classi ed interfacce utili a chiunque voglia realizzare un modulo; in questo senso si ha a che fare con un vero e proprio "insieme di regole" da seguire quando s'intende progettare un modulo applicativo. Il modulo che si vuole realizzare in questa tesi è rivolto alla cooperazione su testi condivisi. La situazione che si presenta è quella di un insieme di persone che hanno interesse a cooperare nella stesura di documenti comuni. Il modulo applicativo dovrà quindi fornire uno spazio di lavoro condiviso al quale gli utenti hanno accesso, e nel quale trovano i documenti comuni. Ogni utente del gruppo che accede alla sessione di lavoro cooperativo, ha accesso ad un elenco di documenti disponibili, i quali possono essere visionati e, al limite, modificati. L'accesso allo spazio di lavoro permette di cooperare nella stesura dei documenti presenti. La tesi è strutturata come segue: nel capitolo 1 si introducono i concetti di lavoro cooperativo, le componenti che caratterizzano i gruppi di lavoro e i servizi che possono essere richiesti dai gruppi. Nel capitolo 2 si propongono le possibili architetture di supporto al lavoro cooperativo ed in particolare si giustifica la scelta fatta di dotarsi del Proxy server. Il capitolo 3 descrive in dettaglio com'è stato implementato in linguaggio Java il Proxy e come vengono gestite le connessioni HTTP degli utenti. Infine, nel capitolo 4, viene descritto il modulo applicativo realizzato: si descrive la politica di gestione dei documenti, vengono mostrate le classi necessarie per la sua realizzazione e l'interfaccia grafica realizzata tramite un'applet Java. Inoltre si è allegata una ricca parte d'appendici che tratta in modo generale la rete Internet, i linguaggi a oggetti e in particolare Java.