Con il JDK 1.3, Java introduce il supporto per configurazioni multi-monitor. L'articolo spiega i due approcci esistenti, quello a display indipendenti tipico di X-Windows e quello a device virtuale di Windows e Macintosh, mostrando come Java 2 cerca di conciliare queste diverse filosofie mantenendo la portabilità del codice
L'uscita delle prime versioni di Windows nei primi anni Novanta ha consentito anche alla piattaforma Intel di vestirsi di un'interfaccia grafica che costituisse il contesto normale delle operazioni dell'utente. Nel tempo l'uso della grafica è diventato popolare in tutti i segmenti di mercato e presso tutti gli utilizzatori.
Introduzione
Siamo ormai alla fine dell'anno 2000 e si assiste all'esplosione di Internet, delle applicazioni multimediali e dei giochi 3D, il tutto grazie a schede grafiche che vanno a risoluzioni e profondità di colore tali da mettere a dura prova anche il migliore dei monitor.
Tuttavia in alcuni casi, come Desktop Publishing o grafica avanzata, l'area di visualizzazione offerta da un solo schermo può non bastare: in aiuto viene quindi il supporto al monitor multiplo.
Il Macintosh e UNIX con X-Windows lo offrono già da diverso tempo; recentemente questa possibilità è stata concessa anche al mondo dei PC, con l'introduzione di Windows 98 e, dall'inizio del 2000, di Windows 2000 per l'utenza professionale.
Java, che ha sempre avuto tra i propri cavalli di battaglia il motto Write Once, Run Anywhere, ha dovuto fornire ai programmatori una sorta di minimo comune multiplo delle funzionalità disponibili sui vari sistemi operativi. Questo tagliava fuori alcune caratteristiche particolari che rendono ogni piattaforma più evoluta delle altre in qualche aspetto.
Lo stesso discorso si applica al supporto al monitor multiplo, che non era previsto in Java fino al JDK 1.2.x. Siccome ora virtualmente tutti i sistemi operativi per cui esista una implementazione di Java possiedono tale funzionalità, anche Java, JDK 1.3, è stato aggiornato.
Supporto al monitor multiplo: gli approcci esistenti
Le soluzioni adottate per gestire il monitor multiplo sono essenzialmente di due tipi:
1. ogni monitor è visto come un dispositivo indipendente, a volte anche dal punto di vista cromatico, ciascuno con un proprio sistema di coordinate; questa è la versione normalmente adottata nei sistemi con X-Windows 2. il sistema di coordinate è unico, detto device virtuale, e ogni monitor fisico ne copre una porzione contigua e non sovrapposta, come nelle tessere di un mosaico; questo approccio è tipico di Windows 2000, Windows 98 e Macintosh
L'articolo ricorda anche che X-Windows possiede un protocollo di comunicazione molto sofisticato, con caratteristiche client-server basato su TCP/IP, per la visualizzazione di risorse grafiche su macchine remote; queste funzionalità non sono, almeno allora, disponibili sotto Windows NT/2000, dove la visualizzazione è comunque effettuata localmente.
Per chiarire i due approcci, l'articolo introduce esempi grafici e assume che tutti i display possiedano la stessa risoluzione grafica e che i sistemi di coordinate cartesiani abbiano origine in alto a sinistra.
Figura 1: Esempio di sistema grafico con display associati a dispositivi fisici indipendenti, approccio UNIXFigura 2: Esempio di sistema grafico con due monitor associati a un device virtuale, approccio Windows
In figura 1 è illustrata una tipica combinazione ottenibile con un sistema UNIX: ogni scheda video pilota uno schermo separato con proprio sistema di coordinate cartesiane.
Conclusioni
L'articolo documenta un momento importante nell'evoluzione delle GUI Java: il passaggio da un modello pensato per un solo display a un ambiente finalmente capace di tenere conto di configurazioni multi-monitor ormai disponibili su più piattaforme.
Il punto più interessante è il modo in cui Java 2 prova a conciliare approcci molto diversi, quello a display indipendenti tipico di X-Windows e quello a device virtuale tipico di Windows, cercando un'astrazione che rimanga coerente con la filosofia multipiattaforma del linguaggio.
MokaByte®
è un marchio registrato da MokaByte s.r.l.
Java®, Jini® e tutti i nomi derivati sono marchi
registrati da Sun Microsystems.
Tutti i diritti riservati. E' vietata la riproduzione
anche parziale.
Per comunicazioni inviare una mail a info@mokabyte.it