Piattaforma Java

Da Wikipedia, l'enciclopedia libera.
Piattaforma Java
Java Platforms.PNG
Sviluppatore Oracle Corporation
Ultima versione 7 Update 51 (14 gennaio 2014)
Sistema operativo Linux
Mac OS X
Microsoft Windows
Solaris
Linguaggio Java
Genere Piattaforma Software (non in lista)
Licenza proprietaria, Freeware
Sito web java.com/it

La piattaforma Java è una piattaforma software, sviluppata su specifiche e implementazioni di Sun Microsystems, che gira su piattaforme hardware che possono essere di diversa natura (un computer, un televisore, un telefono cellulare, una smart card, ecc…). Tale piattaforma ha come caratteristica peculiare il fatto di rendere possibile la scrittura e l'esecuzione di applicazioni che siano indipendenti dall'hardware sul quale poi sono eseguite che risulta così virtualizzato dalla piattaforma stessa. In altri termini la piattaforma Java è quella che rende il linguaggio java e i relativi programmi portabili su piattaforme hardware diverse.

Principio di funzionamento[modifica | modifica wikitesto]

La piattaforma Java è composta da due blocchi costitutivi:

La macchina virtuale è la base della piattaforma Java, mentre le API sono una collezione di componenti software (librerie) già scritti e pronti all'uso per lo svolgimento dei compiti più disparati.

Perché una applicazione software possa girare su una piattaforma Java, essa

  1. deve essere scritta nel linguaggio di programmazione Java;
  2. deve essere quindi compilata, fornendo come prodotto il cosiddetto bytecode dell'applicazione;
  3. il bytecode verrà poi interpretato dalla macchina virtuale e quindi eseguito.

Il prodotto della fase 2 è costituito da files contenenti le istruzioni che compongono il programma. Il linguaggio in cui queste istruzioni sono espresse non è specifico di alcuna macchina o sistema operativo particolare; al contrario, viene utilizzato un linguaggio appositamente progettato per essere il più possibile 'neutro' e, quindi, indipendente dal sistema su cui verrà effettivamente eseguita l'applicazione. Questo comportamento differisce da quanto avviene in molti altri linguaggi di programmazione, che, una volta compilati, producono codice macchina che può essere eseguito solo su sistemi specifici. Ciò permette l'indipendenza dalla piattaforma hardware, in quanto il codice sorgente prodotto è lo stesso per ogni macchina.

Ciò rende possibile eseguire la stessa applicazione su qualsiasi macchina; l'unica cosa da cambiare è l'interprete per quella specifica macchina.

Un'implementazione della piattaforma java è il Java Runtime Environment (JRE), necessario per l'esecuzione del programma compilato, mentre per lo sviluppo dei programmi in Java a partire dal codice sorgente è necessario il Java Development Kit (JDK) che include anche il JRE.

La macchina virtuale Java[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi Macchina virtuale Java.

La macchina virtuale è il componente della piattaforma Java che rende possibile la virtualizzazione dell'hardware sul quale l'applicazione Java gira. Essa consiste di:

  • un class loader
  • un class verifier
  • l'interprete Java.

Il class loader carica le classi che formano il bytecode, sia dell'applicazione Java, sia delle API Java necessarie per l'esecuzione da parte dell'interprete Java.

Subito dopo il class verifier controlla che il bytecode sia valido, che non superi i limiti superiori o inferiori dello stack, assicura non esegua aritmetica dei puntatori (che potrebbe potenzialmente portare ad una violazione di memoria). Se il bytecode 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 sola volta oppure può fare uso di un compilatore just-in-time (JIT, o Just-In-Time compiler) che traduce il bytecode in codice nativo della macchina ospitante. È anche possibile utilizzare un sistema "misto", in cui il JIT viene applicato solo alle porzioni di codice del programma utilizzate più frequentemente, mentre il resto viene interpretato. In genere, quest'ultimo approccio prevede che il JIT venga lanciato in background, mentre il programma è in esecuzione.

Una delle caratteristiche della macchina virtuale Java è che l'interprete può essere anche implementato a livello hardware, così da eseguire il bytecode come codice nativo. In altre parole, è possibile realizzare un processore il cui repertorio delle istruzioni coincida con l'insieme delle istruzioni definite dalla specifica Sun. A livello di prestazioni questa sarebbe la scelta migliore, ma la portabilità resterebbe confinata a quelle macchine che implementassero Java a livello hardware, anche se si continuerebbero ad avere tutti i vantaggi del linguaggio.

La piattaforma raggiunge performance superiori adottando uno schema nel quale l'interprete può essere eseguito alla massima velocità senza la necessità di effettuare controlli al momento dell'esecuzione; questo grazie al class verifier che esegue tutti i controlli. La piattaforma è anche dotata di un meccanismo di garbage collection che rilascia automaticamente la memoria utilizzata da oggetti che non sono più utili al programma.

Le API Java[modifica | modifica wikitesto]

Le API Java raccolgono una gran quantità di componenti disponibili per scrivere applicazioni di qualsiasi genere. Per questo motivo la piattaforma Java è disponibile in tre configurazioni a seconda dell'uso che se ne vuole fare:

  • Standard Edition. Fornisce API per le esigenze più comuni, che permette di scrivere applicazioni stand-alone, applicazioni client e server in un contesto di reti di computer, applicazioni per accesso a database, applicazioni per il calcolo scientifico e di altro tipo.
  • Enterprise Edition. Permette di scrivere applicazioni distribuite.
  • Micro Edition. Permette di scrivere applicazioni per i terminali mobili e, più in generale, per i dispositivi dotati di poche risorse computazionali (telefoni cellulari, palmari, smart cards, ed altri).

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica