Java, Of Course ...

ing. R. Turco (rosario_turco@virgilio.it)



Lezione n° 1

Requisiti per l'apprendimento

Data la modesta quantità di pagine HTML che si vogliono presentare si è presupposto che il lettore abbia almeno qualche conoscenza base del linguaggio C.

Origini del linguaggio

Il linguaggio è nato dal linguaggio OAK, usato inizialmente dalla SUN MicroSystem per la gestione di hardware come la TV via cavo. Il progetto fu però abbandonato per scarse richieste hardware e la SUN, pensò di sfruttare allora il linguaggio in ambito INTERNET. James Goslin produsse le prime versioni del linguaggio Java nel 1994.

Il nome J.A.V.A. sembra sia nato in ambito MARKETING come scherzoso acronimo: "Just Another Vague Acronym".

La SUN, inizialmente, produsse il Java Development Kit (JDK), che oggi ha raggiunto le versioni 1.2.2, 1.3.1 e 1.4 commercializzate, con leggera confusione, anche col nome di JAVA 2, SDK e J2EE, questo per la volontà di intendere un cambio d'era tecnologica.

Oggi Java è un linguaggio standardizzato dall'ISO e permette di realizzare sia applicazioni Stand-alone, sia GUI che Web-based (applet, servlet).

Caratteristiche di Java

Nel rapporto "The Java Language Environment" di James Goslin si dice che Java è "orientato agli oggetti, stabile, sicuro, neutro rispetto all'architettura, ad alte prestazioni, interpretato, multi-threading e dinamico".

In particolare le caratteristiche di portabilità e di neutralità sono i due lati di una stessa medaglia: l'ABI e l'API, che esamineremo nel seguito.

PORTABILITA'

La portabilità è la caratteristica che ha un codice SW se esso è in grado di funzionare su diverse macchine (con CPU diversa) ricompilando almeno il codice. Tale caratteristica è possibile se esistono API standardizzate per le diverse macchine. Le API (Application Programmer Interface) non sono altro che le chiamate a funzione di una libreria: ad esempio una libreria per la gestione di interfaccia utente, etc. Se le API utilizzate sulle diverse macchine sono le stesse, allora anche se le CPU sono fisicamente diverse (a 32 bit, a 64 bit etc.) è sufficiente una ricompilazione del SW affinchè esso funzioni. Java è portabile perchè ha uno stesso identico comportamento (la stessa API) su diverse piattaforme hardware. Java, inoltre, utilizza il set di caratteri UNICODE a 16 bit, che è una estensione del codice ASCII a 8 bit ed è fissata la rappresentazione degli interi a 32 bit, dei double a 64 bit.

In realtà con Java cambiando la piattaforma hardware non occorre neanche ricompilare, grazie alla caratteristica di neutralità!

NEUTRALITA'

In generale tutti i compilatori sono creati basandosi sull'ABI (Application Binary Interface), ovvero a partire da:

occorre che il compilatore garantisca che l'eseguibile finale prodotto rispetti le specifiche ABI standard.

Questo è anche il motivo per cui esiste anche hardware compatibile o clonato: INTEL, AMD, proprio perchè le CPU create dalle varie aziende sono tali che tutto il SW che rispetta le stesse specifiche ABI funziona in modo identico.

Java è neutrale rispetto all'architettura perchè il codice binario ottenuto; (bytecode) è eseguibile su qualsiasi CPU e qualsiasi Sistema Operativo. Questo è possibile perchè non è compilato, ma interpretato! L'idea non è nuova e già sperimentata con scarsa fortuna con l'UCSD Pascal. Il codice Java viene difatti compilato per ottenere non l'obj classico, ma un formato binario intermedio standard - definito bytecode -, ovvero che rispetta sempre la stessa ABI (ABI unica).

Ogni piattaforma ha una propria "Virtual Machine" (VM), ovvero un interprete di bytecode, che mappa l'ABI sulla CPU a disposizione ed esegue l'applicativo.

VANTAGGI DI JAVA E SUE PRESTAZIONI

Il dubbio amletico che ha sempre assillato i linguaggi interpretati è : "E' veloce o lento? ".

Java, in realtà, è nato in un momento in cui la tecnologia è molto matura:

I vantaggi ottenibili, per una leggera minor velocità rispetto al C e a C++,sono parecchi e di notevole fattura:

La diatriba è simile a quella che un tempo esisteva tra chiarezza del SW per la manutenzione e l'efficienza dell' applicativo. Il linguaggio Java è molto chiaro e riusabile grazie all'Object Oriented ed è più solido rispetto ad altri linguaggi. Quando si opera su INTRANET/INTERNET si opera secondo un'architettura distribuita del tipo Client/Server. Quello che accade tra Client e Server è la seguente fase di colloquio:

Le librerie Java sono di piccole dimensioni come codice, in modo di ottimizzare i tempi di trasferimento FTP e le prestazioni. Per le applicazioni INTRANET/INTERNET, Java ha costituito un passo in avanti rispetto al solo HTML (HyperText Markup Language) che è statico, ma anzi permette animazioni, filmati, registrazioni audio etc. Ovvero è un linguaggio dinamico.

SOLIDITA' DI JAVA

James Goslin ha creato il linguaggio Java molto simile al C++ ma con semplificazioni ai fini della solidità del linguaggio:

Tali differenze in realtà possono essere un vantaggio per le società di SW. Non è più necessario lo specialista del linguaggio per applicazioni particolari: la semantica del linguaggio evita, cioè, fonti di errori subdoli, che altrimenti richiederebbero una grossa attività di debugging!

SICUREZZA DI JAVA

L'utilizzo maggiore di Java è in ambito INTERNET/INTRANET e questo potrebbe sconfortare gli utenti ai fini della sicurezza. Invece JAVA è SICURO!!

Il linguaggio è tale che, nel caso di applet per utilizzo su INTERNET o INTRANET, esse non possono, principalmente:

CONFRONTO CON IL C++

Java non è che sia migliore del C++. Nessuno può seriamente affermarlo!! Tuttavia ci sono cose che il C++ non può fare: la possibilità di operare su INTERNET grazie a librerie insite nel linguaggio. Java è più solido ed obbliga all'uso dell'Object Oriented.

Iniziare con Java permette anche di imparare a scrivere programmi in C++ obbligando il programmatore ai dettami Object Oriented. Vale la pena di conoscere e saper usare entrambi i linguaggi. COME INIZIARE CON JAVA Oggi esistono certamente molti tool RAD (Visual Cafè, WorkShop, etc.) che permettono di realizzare applicativi o applet in Java in modo molto rapido. Tuttavia è consigliabile iniziare col JDK, distribuito dalla SUN gratuitamente, che permette di apprendere le basi del linguaggio.

Clicca qui per collegarti alla SUN e ottenere il JDK => Sito-SUN-MicroSystem

Fine Lezione n° 1