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