1. Java: un linguaggio di programmazione per applicazioni multimediali
e multiambiente
1.2 Aspetti economici del linguaggio Java
La velocità e l'economicità della produzione del software sono oggi alla base della diffusione dei
programmi. Infatti, la continua evoluzione dei sistemi hardware (processori più veloci, reti di
comunicazione più vaste) comporta la necessità di un continuo aggiornamento delle risorse software.
Ciò si traduce nella esigenza di disporre di strumenti agili ed efficaci per sviluppare in tempi brevi
nuovi programmi. Uno dei problemi più comuni che si incontra nello sviluppo del software è la
dipendenza dalla piattaforma usata per la creazione dei programmi. Per diffondere maggiormente il
software implementato si rende così necessario un lavoro aggiuntivo di riadattamento delle
applicazioni per rendere queste ultime in grado di essere eseguite nei più svariati ambienti operativi.
Ciò ovviamente si traduce in un aumento del tempo impiegato nella programmazione, che
inevitabilmente conduce ad uno spreco di risorse umane e alla lievitazione dei costi di produzione del
software.
Negli ulltimi anni si è assistito ad una crescita esponenziale delle capacità dello hardware, a cui è
corrisposto un vertiginoso abbattimento dei costi. Questo fenomeno non accenna a diminuire, e
probabilmente non diminuirà almeno per i prossimi dieci anni. Pareri autorevoli confermano questa
previsione. A titolo di esempio, D. A. Patterson (professore di scienza dei calcolatori a Berkeley,
California, e consulente di Intel, Digital e Sun) ha scritto recentemente (novembre 1995) su Scientific
American: "Ci si può facilmente aspettare che le capacità del microprocessore continuino a
raddoppiare ogni 18 mesi fin oltre la fine del secolo... è probabile che nei prossimi venticinque anni
vedremo miglioramenti non inferiori a quelli degli ultimi cinquant'anni.".
Quindi, con tutta probabilità il mercato, nel medio e lungo termine, offrirà macchine sempre più
veloci e dispositivi di memoria sempre più capaci. Di fronte a ciò, la strategia più opportuna nella
produzione del software non è rappresentata dall'ottimizzazione dei programmi per quanto riguarda la
velocità di esecuzione e l'occupazione di memoria. Piuttosto, la strategia vincente consiste nel dotarsi
degli strumenti più avanzati che permettano il rapido sviluppo del nuovo software richiesto dagli
utenti in possesso di risorse hardware sempre maggiormente potenti. Al fine di aumentare i profitti, è
pure molto utile che il software sviluppato sia adattabile facilmente ai più svariati ambienti operativi, in
modo da allargare il mercato di vendita con costi aggiuntivi minimi [vedi Osservazione 1 in Appendice
A].
L'esigenza di produrre software il più possibile indipendente dalla piattaforma su cui esso deve essere
lanciato è in crescita anche per il rapido sviluppo di Internet in tutto il mondo. Questo fenomeno ha
fatto sorgere nuove possibilità di espansione del software. Si pensi a tutti prodotti software specifici
che possono rendere più facile e divertente la navigazione in rete. Dal momento che in connessione
con Internet si trovano le macchine più diverse con i più diversi sistemi operativi, rimane ovvio
comprendere quanto sia importante che il software prodotto per Internet sia il più possibile
indipendente dall'hardware e dall'ambiente sui quali esso deve essere eseguito.
In questo contesto, Java rappresenta un buon candidato per rispondere a tutte le esigenze appena
menzionate. Java, infatti, possedendo nei tratti esseenziali una certa similirità con il C++, può essere
appreso senza sforzi eccessivi e in tempi non troppo lunghi da un programmatore di C++ [vedi
Osservazione 2 in Appendice A]. Inoltre, grazie alla possibilità di implementare i metodi nativi, con
Java il programmatore può continuare ad usare tutto ciò che ha fino a quel momento egli ha
sviluppato in C e C++, senza sprecare tempo a convertire i vecchi programmi e le vecchie librerie
nelle nuove classi di Java. Java inoltre possiede tutte le caratteristiche di un linguaggio di
programmazione completo e moderno. Esso è orientato all'oggetto, è multi-threading, possiede risorse
che permettono al programmatore di implementare programmi che vanno dai tradizionali algoritmi
matematici alle applicazioni client/server in Internet.
Attualmente Java è un linguaggio interpretato, e la velocità di esecuzione delle applicazioni risulta
essere nettamente inferiore a quella dei programmi scritti e compilati con il C++. Per rendere Java
effettivamente competivo rispetto al C++ ed ad altri linguaggi di programmazione, i ricercatori della
Sun dovranno approntare un compilatore che permetta di generare anche gli eseguibili di sorgenti
Java. Ciò è probabile che accada quando sarà rilasciata la prima versione commerciale di Java: per
adesso esiste solo la versione prebeta.
Oltre a ciò, bisognerà appurare se effettivamente la maggiore semplicità di Java rispetto al C++
risulterà essere un vantaggio. Le opinioni dei programmatori in merito a questo argomento sono
discordi, anche se Java suscita un generale interesse da tutte le parti. E' probabile che solo la pratica
di programmazione potrà stabilire se l'aver rinunciato ad alcune caratteristiche peculiari del C++,
come l'ereditarietà multipla e i puntatori, si dimostrerà essere una scelta conveniente in termini di
vantaggi acquisiti rispetto ai benefici persi [vedi Osservazione 3 in Appendice A].