Il linguaggio: Java

Perché Java?

Si è scelto il linguaggio Java per le sue caratteristiche di portabilità e di facilità d'uso, nonchè per la sua alta integrazione con la rete. Queste proprietà hanno di fatto garantito il successo di questo linguaggio, e ciò è ampiamente documentato dal proliferare di applicazioni, anche complesse e server-side, scritte in Java.
La ricca libreria di funzioni di rete, associata alla completa portabilità del codice su piattaforme quali Win32, Machintosh, Linux e Solaris, rendono di fatto Java lo strumento ideale per lo sviluppo di applicazioni distribuite su piattaforme eterogenee, terreno che purtroppo non sembra esente dal problema del consumo di risorse.

Non è scopo di questa pubblicazione affrontare i dettagli del linguaggio Java, che pertanto si daranno per scontati. Ogni tipo di documentazione è disponibile presso:

Il codice sviluppato da questo studio si basa comunque sulle API del linguaggio stabilite dal JDK 1.2 (anche noto come Java2) o superiore.

...e perché no

E' universalmente riconosciuto che il limite maggiore della tecnologia Java è la scarsa efficienza. Se da un lato la portabilità del linguaggio è uno dei suoi punti di forza, dall'altro il compromesso "one size fits all" risulta spesso inappagante, in termini di prestazioni, per gli utilizzatori.
Ciò dipende in generale da come è implementata la JVM (Java Virtual Machine), cioè il software che fa da tramite tra il bytecode Java e la particolare piattaforma su cui gira.
Ogni sistema operativo ha la sua particolare JVM, che implementa le specifiche astratte rilasciate dagli sviluppatori del linguaggio. Se il bytecode è semplicemente interpretato l'esecuzione del programma può risultare 10-40 volte più lenta rispetto a quella che si avrebbe con del codice compilato. In presenza di compilatori JIT il fattore di rallentamento scende a circa 7, un valore che in taluni casi è ancora troppo alto.
Tutte le grandi industrie stanno facendo grossi sforzi tecnologici per ridurre la scarsa efficienza del codice Java, che costituisce purtroppo un grosso limite allo sviluppo di applicazioni complesse ad alti requisiti di performance e scalabilità. Si stanno studiando sia soluzioni hardware, come una JVM integrata su chip, sia software, come un sistema operativo con una JVM integrata nel kernel.

Allo stato attuale la soluzione più semplice per i programmatori consiste nello scrivere la parte di codice critica, in termini di prestazioni, direttamente in linguaggio nativo (C o C++). Tale codice può essere compilato e ottimizzato, e quindi invocato da un programma Java; è chiaro tuttavia che in questo modo si perde completamente la portabilità, dato che una parte del codice risulta dipendente dalla piattaforma.
Questa soluzione verrà usata, non solo per questo motivo, nello studio di un monitor di risorse.