Introduzione

Cosa è Java (what)

Java è un linguaggio di programmazione nato negli anni novanta, e destinato a diventare in breve tempo, il linguaggio più utilizzato in assoluto. Nato per puri scopi di ricerca in ambito universitario, e non come in molti altri casi, per volere di una multinazionale per conquistare nuove fette di mercato, Java si pone come un "super-linguaggio" che supera i limiti e i difetti che hanno altri linguaggi. La Sun Microsystems ha poi fatto in modo che dal linguaggio, si sia poi evoluta una serie di famose tecnologie (J.S.P., Servlet, E.J.B., Jini, R.M.I., etc.) che si stanno diffondendo in molti ambiti del mondo della programmazione. Con il termine "Java" ci si riferisce sia al linguaggio, sia alla tecnologia che racchiude tutte le tecnologie di cui sopra. In questo manuale ci limiteremo a parlare del linguaggio.

- Breve storia di Java (who, where & when)

Nel 1992 nasce il linguaggio Oak (quercia) prodotto della Sun Microsystems e realizzato da un gruppo di esperti e navigati sviluppatori, che formavano il cosiddetto "Green Team" , ed erano capitanati da James Gosling, oggigiorno uno tra i più famosi e stimati "guru informatici" del pianeta. Sembra che il nome Oak derivi dal fatto che Gosling e i suoi colleghi, nel periodo in cui svilupparono questo nuovo linguaggio, avessero avuto come unica compagnia, quella di una quercia che si trovava proprio fuori la finestra dell’ufficio in cui lavoravano.

In un primo momento la Sun decise di destinare questo nuovo prodotto, alla creazione d’applicazioni complesse per piccoli dispositivi elettronici. In particolare, sembrava che i campi strategici da conquistare in quegli anni, fossero quello della domotica e quello della TV via cavo. Ma, in realtà, i tempi non erano ancora maturi per argomenti quali il "video on demand" e gli "elettrodomestici intelligenti". Solo da pochissimi anni, infatti, si iniziano a richiedere video tramite Internet o TV via cavo, ed appartiene ancora ai sogni di molte casalinghe l’idea di avere un "Robot" che svolga le faccende domestiche al loro posto.

Nel 1993, con l’esplosione di Internet (negli Stati Uniti), nasce l’idea di trasmettere codice eseguibile attraverso pagine HTML. La nascita delle C.G.I. (Common Gateway Interface) rivoluzionò il World Wide Web.

Il mercato che sembrava più appetibile allora ben presto diventò proprio Internet. Nel 1994 viene realizzato un browser che fu chiamato per breve tempo "Web Runner" (dal film "Blade Runner" , il preferito di Gosling) e poi, in via definitiva, "HotJava".

Il 23 maggio del 1995 Oak è ribattezzato ufficialmente col nome "Java". Il nome questa volta deriva dalla tipologia indonesiana di caffè di cui ha abusato il Green Team durante il periodo di sviluppo del linguaggio: per i nomi non hanno avuto molta fantasia! La Netscape annuncia contemporaneamente la scelta di dotare il suo celeberrimo browser della Java Virtual Machine (J.V.M.), la quale, rende di fatto, Java un linguaggio multipiattaforma. Inoltre la Sun Microsystems mette a disposizione gratuitamente il kit di sviluppo J.D.K. (Java Development Kit) sul sito www.java.sun.com . Nel giro di pochi mesi i download del J.D.K. 1.02a diventarono migliaia e Java iniziò ad essere sulla bocca di tutti. La maggior parte della pubblicità di cui usufruì Java nei primi tempi, era direttamente dipendente dalla possibilità di scrivere piccole applicazioni in rete, sicure, interattive ed indipendenti dalla piattaforma chiamate "applet". Nei primi tempi sembrava che Java fosse il linguaggio giusto per creare siti Web spettacolari, ma in realtà, Java era ed è molto di più che un semplice strumento per rendere più piacevole alla vista la navigazione. Oggigiorno abbiamo altri strumenti per ottenere certi risultati con minor sforzo. Java è invece oggi un potente linguaggio di programmazione che sta diventando sempre di più la soluzione ideale ai problemi che accomunano aziende operanti in settori diversi (banche, software house, compagnie d’assicurazioni) come la sicurezza. La Sun ha investito molto in questi anni sul progetto Java ottenendo risultati straordinari.

- Perchè Java (why)

Nei mesi che precedettero la sua creazione, nel mondo informatico circolavano statistiche alquanto inquietanti. In una di esse, si calcolava che, in una prima release di un’applicazione scritta in C++ (all’epoca linguaggio leader indiscusso nella programmazione), fosse presente un bug ogni cinquanta righe di codice. In un’altra si affermava che per un ottanta per cento, la presenza di questi bug era dovuta fondamentalmente a tre ragioni: scorretto uso dell’aritmetica dei puntatori, abuso delle variabili globali e conseguente utilizzo incotrollato del comando goto. Infatti, tramite l’aritmetica dei puntatori, il programmatore ha a disposizione uno strumento tanto potente quanto pericoloso e difficile da utilizzare. Per quanto riguarda le variabili globali (ovvero le variabili che essendo dichiarate all’interno del programma chiamante risultano accessibili da qualsiasi funzione dell’applicazione in qualsiasi momento), rappresentano per molti programmatori, una scorciatoia troppo invitante per apportare modifiche al codice. Giacché, il flusso di lavoro di un’applicazione non è sempre facilmente prevedibile, per cercare di evitare che le variabili globali assumano valori indesiderati, il programmatore avrà a disposizione il "famigerato" comando goto, che permette di far saltare il workflow dell’applicazione da una parte di codice ad un’altra, senza tener conto più di tanto della logica implementativa.

Java è stato creato proprio per superare, a partire da queste ed altre statistiche, i limiti che gli altri linguaggi hanno. Alcuni dei punti fermi su cui si basò lo sviluppo del linguaggio, furono l’eliminazione dell’aritmetica dei puntatori e del comando goto. In generale si andò nella direzione di un linguaggio potente, moderno, chiaro, ma soprattutto robusto e "funzionante". In molti punti chiave del linguaggio è favorita la robustezza piuttosto che la potenza, basti pensare all’assenza dell’aritmetica dei puntatori.

Gli sviluppatori che hanno realizzato a Java, hanno cercato di realizzare il linguaggio preferito dai programmatori, arrichendolo delle caratteristiche migliori degli altri linguaggi, e privandolo delle peggiori e delle più pericolose.

- Caratteristiche di Java

Java ha alcune importanti caratteristiche che permetteranno a chiunque di apprezzarne i vantaggi.

Sintassi: è simile a quella del C e del C++, e questo non può far altro che facilitare la migrazione dei programmatori da due tra i più importanti ed utilizzati linguaggi esistenti. Chi non ha familiarità con questo tipo di sintassi può inizialmente sentirsi disorientato e confuso, ma ne apprezzerà presto l’eleganza e la praticità.

Gratuito: per scrivere applicazioni commerciali non bisogna pagare licenze a nessuno. Sun ha sviluppato questo prodotto e lo ha migliorato usufruendo anche dell’aiuto della comunità "open-source".

Robustezza: essa è derivante soprattutto da una gestione delle eccezioni chiara e funzionale, e ad un meccanismo automatico della gestione della memoria (Garbage Collection) che esonera il programmatore dall’obbligo di dover deallocare memoria quando ce n’è bisogno. Inoltre il compilatore Java, è molto "severo". Il programmatore è infatti costretto a risolvere tutte le situazioni "poco chiare" , garantendo al programma maggiori chance di corretto funzionamento.

Libreria e standardizzazione: Java possiede una enorme libreria di classi standard che forniscono al programmatore la possibilità di operare su funzioni comuni di sistema come la gestione delle finestre, dei collegamenti in rete e dell’input/output. Il pregio fondamentale di queste classi sta nel fatto che rappresentano un’astrazione indipendente dalle piattaforme per un’ampia gamma di interfacce di sistema comunemente utilizzate. Inoltre se utilizziamo Java non avremo problemi di standardizzazione, come per esempio, compilatori che compilano in modo differente grazie alle specifiche dettate da Sun.

Indipendenza dall’architettura: grazie al concetto di macchina virtuale ogni applicazione, una volta compilata, potrà essere eseguita su di una qualsiasi piattaforma (per esempio un PC con sistema operativo Windows o una workstation Unix). Questa è sicuramente la caratteristica più importante di Java. Infatti, nel caso in cui si debba implementare un programma destinato a diverse piattaforme, non ci sarà la necessità di doverlo convertire radicalmente a seconda della piattaforma. E’ evidente quindi che la diffusione di Internet favorirà sempre di più la diffusione di Java. Recentemente una statistica ha affermato che questo linguaggio diventerà il più utilizzato in assoluto a livello mondiale nel 2003, operando uno straordinario sorpasso al C++.

Java Virtual Machine: Ciò che rende possibile di fatto l’indipendenza dalla piattaforma è la Java Virtual Machine, un software che svolge un ruolo da interprete (ma non solo) per le applicazioni Java. Più precisamente dopo aver scritto il nostro programma Java, prima bisogna compilarlo (per i dettagli riguardante l’ambiente e il processo di sviluppo, vi rimandiamo al paragrafo successivo). Otterremo così, non direttamente un file eseguibile (ovvero la traduzione in linguaggio macchina del file sorgente che abbiamo scritto in Java), ma un file che contiene la traduzione del nostro listato in un linguaggio molto vicino al linguaggio macchina detto "byte code". Una volta ottenuto questo file dobbiamo interpretarlo. A questo punto la J.V.M. interpreterà il byte code ed il nostro programma andrà finalmente in esecuzione. Quindi, se piattaforme diverse posseggono una Java Virtual Machine, ciò sarà sufficiente per renderle potenziali esecutrici di byte code. Infatti, da qualche anno a questa parte, i Web Browser più diffusi implementano all’interno di essi una versione della J.V.M., capace di mandare in esecuzione le applet Java. Ecco quindi svelato il segreto dell’indipendenza della piattaforma. Si parla di "macchina virtuale" perché in pratica questo software è stato implementato per simulare un hardware. Si potrebbe affermare che il linguaggio macchina sta ad un computer come il byte code sta ad una Java Virtual Machine. Oltre che permettere l’indipendenza dalla piattaforma, la J.V.M. permette a Java di essere un linguaggio multithreaded (caratteristica di solito dei sistemi operativi), ovvero capace di mandare in esecuzione più processi in maniera parallella. Inoltre garantisce dei meccanismi di sicurezza molto potenti, e la "supervisione" del codice della Garbage Collection

Orientato agli oggetti: Java ci fornisce infatti degli strumenti che praticamente ci "obbligano" a programmare ad oggetti. I paradigmi della programmazione ad oggetti (ereditarietà, incapsulamento, polimorfismo) sono più facilmente apprezzabili e comprensibili. Java è più chiaro e schematico che qualsiasi altro linguaggio orientato agli oggetti. Sicuramente, chi impara Java, potrà in un secondo momento accedere in modo più naturale alla conoscenza di altri linguaggi orientati agli oggetti, giacché, avrà di certo una mentalità più "orientata agli oggetti".

Semplice: in realtà relativamente a questo argomento bisogna fare una precisazione. Java è un linguaggio molto complesso considerandone la potenza e tenendo presente che ci obbliga ad imparare la programmazione ad oggetti. Ma, in compenso, si possono ottenere risultati insperati in un tempo relativamente breve. Apprezzeremo sicuramente le semplificazioni che ci offre Java durante questo corso. Abbiamo già accennato al fatto che non esiste l’aritmetica dei puntatori grazie all’implementazione della Garbage Collection. Provocatoriamente Bill Joy, vice-presidente della Sun microsystems negli anni in cui Java è stato creato, propose come nome sostitutivo di Oak il nome "C + + - -" , a sottolineare che il nuovo linguaggio voleva essere un nuovo C++, ma senza le sue caratteristiche peggiori (o se vogliamo, senza le caratteristiche più difficili da utilizzare e quindi pericolose).

Sicurezza: ovviamente, avendo la possibilità di scrivere applicazioni interattive in rete, Java possiede anche delle caratteristiche di sicurezza molto efficienti. Come c’insegna la vita quotidiana nulla è certo al 100%. Esistono una serie di problemi relativi alla sicurezza di Java che ricercatori dell’Università di Princeton hanno scoperto e reso pubblici su Internet. Ma di una cosa possiamo essere certi: la Sun sta dando priorità assoluta proprio alla risoluzione di questi problemi. Intanto, oggi come oggi, Java è semplicemente il linguaggio "più sicuro" in circolazione.



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Lorenzo
Hai qualche domanda da fare?