Piattaforma Java
Da Wikipedia, l'enciclopedia libera.
Questa voce è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Per favore specificare l'argomento della voce usando la sintassi {{S | argomento}}. Vedi anche l'elenco degli abbozzi. (uso di questo avviso) |
JAVA è sia un linguaggio di programmazione sia una piattaforma. Quando ci si riferisce a JAVA come piattaforma, bisogna pensare a due aspetti interconnessi tra loro: l’architettura di ciò che ha cambiato il modo di intendere il SW come si è fatto per anni, e come poi tale idea sia stata riutilizzata e abbia aperto la strada al nuovo millennio anche per quanto riguarda la produzione di software.
Indice |
[modifica] Il Linguaggio Java
Per approfondire, vedi la voce Java (linguaggio). |
Il linguaggio di programmazione JAVA è un linguaggio di alto livello con innumerevoli qualità:
- semplice: può essere programmato senza la necessità di lunghi corsi di addestramento, i concetti fondamentali della tecnologia JAVA vengono appresi rapidamente cosi che i programmatori possono essere produttivi sin dall’inizio.
- object oriented: il linguaggio è progettato per essere orientato agli oggetti da cima a fondo, non è possibile in JAVA adottare stili di programmazione che non siano quelli OO. Lo stile fornito risulta essere pulito ed efficiente.
- familiare: la sintassi JAVA è molto simile a quella del C++ e questo lo rende un linguaggio familiare, questo significa che i programmatori C++ possono migrare facilmente al linguaggio JAVA ed essere produttivi rapidamente.
- robusto e sicuro: il linguaggio è progettato per creare software altamente affidabile: fornisce un esaustivo controllo a tempo di compilazione seguito da un secondo livello di controlli a tempo d’esecuzione. Il modello della gestione della memoria è estremamente semplice ed è progettato per operare in ambienti distribuiti in quanto la sicurezza viene messa in risalto come caratteristica di rilievo.
- indipendente dalla piattaforma e portabile: il linguaggio è progettato per supportare applicazioni che verranno distribuite sulle più eterogenee piattaforme senza la necessità di dover riscrivere il programma per i vari ambienti.
Si illustrano ora le fasi che attraversa un programma JAVA per essere portabile e indipendente dalla piattaforma:
- il programma viene prima scritto nel linguaggio di programmazione JAVA (myProgram.java);
- la compilazione fornisce come output un file (myProgram.class) che non è ancora il file eseguibile come avviene negli altri linguaggi di programmazione, questo perché il file in uscita dal compilatore è il bytecode del programma.
- è il bytecode la vera innovazione e ciò che permette l’indipendenza dalla piattaforma in quanto è lo stesso per ogni macchina. L’esecuzione vera e propria avviene interpretando il bytecode. Questa operazione viene fatta dall’interprete: da bytecode a codice macchina e quindi eseguito.
Introducendo questo passaggio in più è possibile mandare in esecuzione lo stesso programma su qualsiasi macchina, l’unica cosa da cambiare è l’interprete per quella specifica macchina. Da qui il tanto reclamato spot della SUN su un programma JAVA “Write once, run everywhere”.
[modifica] Piattaforma Java
Dopo questa rapida carrellata sul linguaggio JAVA, si approfondisce ora la piattaforma JAVA.
Una piattaforma si può definire come un ambiente HW/SW dove un programma va in esecuzione.
La piattaforma JAVA è una piattaforma solo SW che gira in cima ad una piattaforma HW di base che può essere un computer, una tv, un telefono cellulare, una smart card etc..La piattaforma JAVA è composta da due blocchi: la JAVA Virtual Machine (JVM) e la JAVA Application Program Interface (API).
La JVM è la base della piattaforma JAVA, mentre la JAVA API è una collezione di componenti sw pronti all’uso per lo svolgimento dei più disparati compiti.
[modifica] JVM
Per approfondire, vedi la voce Macchina virtuale Java. |
La JVM consiste di:
- class loader;
- un class verifier;
- l’interprete Java.
Il class loader carica il bytecode, sia dal programma JAVA (myProgram.class) che dalla JAVA API (a seconda degli import fatti nel programma), per l’esecuzione da parte dell’interprete JAVA.
Subito dopo che la classe è caricata il class verifier controlla che il class file: è un formato bytecode valido; che non superi i limiti superiori o inferiori dello stack; assicura che il bytecode non esegue aritmetica dei puntatori il che potrebbe potenzialmente portare ad una violazione di memoria. Se il class passa tutti questi controlli può essere eseguito dall’interprete.
L’interprete può essere di varie forme: può essere un modulo software che interpreta il bytecode in una solo volta; potrebbe essere un compilatore JIT (Just In Time) che traduce il bytecode in codice nativo della macchina ospitante.
L’uso di un compilatore JIT aumenta le performance quasi al pari di una compilazione direttamente in codice nativo, è una soluzione molto ottimizzata che trova un ottimo compromesso tra velocità d’esecuzione e portabilità del codice.
La spettacolarità della JVM è che l’interprete potrebbe essere anche implementato a livello HW così che da eseguire il bytecode come codice nativo. Certamente a livello di prestazioni questa è la scelta migliore, ma come il lettore può facilmente dedurre la portabilità sarebbe di nuovo confinata a quelle macchine che implementino java a livello hardware, anche se si continuerebbero ad avere tutti i vantaggi del linguaggio java che abbiamo precedentemente analizzato. La piattaforma raggiunge performance superiori adottando uno schema nel quale l’interprete può essere eseguito alla massima velocità senza la necessita di effettuare controlli a run-time, questo grazie, come visto antecedentemente, al class verifier che esegue tutti i controlli. La piattaforma è anche dotata di un Garbage Collector nel quale la memoria non più utilizzata da alcun oggetto viene rilasciata automaticamente al sistema. Il Garbage Collector viene eseguito in un thread a bassa priorità. Grazie al Garbage Collector la memoria con alta probabilità è sempre disponibile quando richiesta.
[modifica] JAVA API
Data la vastità immensa di API circolanti si possono scrivere applicazioni di qualsiasi genere. A tal proposito JAVA è disponibile in tre “scatole” a seconda dell’uso che se ne vuole fare.
- la J2SE (Java 2 Standard Edition), il nucleo di Java, che permette di scrivere un gran numero di applicazioni: applicazioni client e server di rete; applicazioni per accesso a database, applicazioni per il calcolo scientifico; etc..
- la J2EE (Java 2 Enterprice Edition) che permette di scrivere applicazioni distribuite.
- la J2ME (Java 2 Micro Edition) che permette di scrivere applicazioni per i terminali mobili e Infine per tutti quei dispositivi che stanno invadendo la nostra vita con poche risorse computazionali (come i telefoni cellulari).
Categorie: Stub | Programmazione | Piattaforme Computer | Sun | Java