La differenza tra Java Runtime Edition (JRE) e Java Development Kit (JDK)

La differenza tra Java Runtime Edition (JRE) e Java Development Kit (JDK)

In questo breve articolo descriviamo le differenze tra la JRE (Java Runtime Environment) e la JDK (Java Development Kit).Entrambi i due ambienti permettono di eseguire su di un “calcolatore” programmi Java, abbiamo utilizzato questo termine generico (calcolatore ma avremmo potuto usare anche il termine processore) in quanto è possibile eseguire programmi Java sia su diversi Sistemi Operativi ma anche e soprattutto su diverse piattaforme hardware, che vanno dalla classica architettura x86 a quelle per dispositivi mobile (ARM ad esempio) ad architetture pensate per Server e Mainframe quale ad esempio l’architettura Power sviluppata da IBM. Quindi possiamo utilizzare Java ad esempio su di un S.O Linux che gira su PowerPC ma anche su di un’altra distribuzione Linux che gira su x86 (a 32 bit o 64bit). Questa che abbiamo elencato è in fondo la pecurialità principale di Java: la portabilità del codice compilato.

Sviluppare con il Google Web Toolkit (GWT)
Come dimensionare l’Heap Size di un’applicazione Java
I cicli

In questo breve articolo descriviamo le differenze tra la JRE (Java Runtime Environment) e la JDK (Java Development Kit).

Entrambi i due ambienti permettono di eseguire su di un “calcolatore” programmi Java, abbiamo utilizzato questo termine generico (calcolatore ma avremmo potuto usare anche il termine processore) in quanto è possibile eseguire programmi Java sia su diversi Sistemi Operativi ma anche e soprattutto su diverse piattaforme hardware, che vanno dalla classica architettura x86 a quelle per dispositivi mobile (ARM ad esempio) ad architetture pensate per Server e Mainframe quale ad esempio l’architettura Power sviluppata da IBM. Quindi possiamo utilizzare Java ad esempio su di un S.O Linux che gira su PowerPC ma anche su di un’altra distribuzione Linux che gira su x86 (a 32 bit o 64bit). Questa che abbiamo elencato è in fondo la pecurialità principale di Java: la portabilità del codice compilato.

Qui va subito precisato che il codice Java non viene compilato in senso stretto, cioè non è direttamente trasformato in codice binario per essere elaborato da un processore, ma viene compilato in un linguaggio intermedio detto bytecode che viene interpretato da una macchina virtuale che nell’ambiente Java va sotto il nome di JVM (Java Virtual Machine). Ed è il bytecode ad essere portabile: possiamo compilare una applicazione Java su Windows ed eseguirla su un S.O. Linux. Il bytecode è contenuto in file in formato .class.

Nei linguaggi come il C o Perl quello che è invece portabile è il solo codice sorgente, cioè il codice scritto del programma.

Dopo questa breve introduzione, ritorniamo all’argomento principale di questo articolo: la differenze tra i due ambienti JRE e JDK. La JRE è un’implementazione della Macchina virtuale Java, specifica per un S.O. ed un’architettura hardware, che esegue effettivamente i programmi Java. Include oltre la JVM, delle librerie di base e altri componenti aggiuntivi per eseguire le applicazioni e le applet scritte in Java. In poche parole ci permette di eseguire una qualsiasi applicazione Java.

E’ possibile scaricare la JRE all’indirizzo:

http://www.java.com/it/

La JDK è una estensione della JRE che contiene questa, ma è inoltre un insieme di software che potete utilizzare per sviluppare le applicazioni basate su Java. La Java Development Kit è necessaria per sviluppare nuove applicazioni Java.

La differenza principale con la JRE è che contiene un compilatore Java per trasformare i nostri codici java in bytecode, cioè in file di tipo .class. E’ possibile richiamare il compilatore Java tramite il comando javac da linea di comando.

La JDK richiede più spazio sul disco poiché contiene JRE ed inoltre  l’insieme delle classi API, il compilatore Java, Web Start e i file aggiuntivi necessari per scrivere le applet e le applicazioni Java.

E’ possibile scaricare la JDK nellesue ultime versione all’indirizzo:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Di seguito è riportato un grafico che visualizza tutte le principali librerie disponibili per l’ambiente Java e come esse sono organizzate all’interno dei due ambienti:

JRE vs JDK

La JDK è inoltre disponibile in due tipi di bundle (cioè di aggregazione di contenuti): Java SE (Standard Edition) e Java EE (Enterprise Edition). LA Java SE comprende tutte quelle librerie che rappresentano il core della piattaforma Java.

La specifica Java EE include molte tecnologie che estendono le funzionalità di base della piattaforma Java, quindi include la Java SE e la arricchisce dei seguenti componenti:

  • Gli Enterprise JavaBeans definiscono un sistema a componenti distribuito che rappresenta il cuore della specifica Java EE. Tale sistema, infatti, fornisce le tipiche caratteristiche richieste dalle applicazioni enterprise, come scalabilità, sicurezza, persistenza dei dati e altro.
  • Il JNDI definisce un sistema per identificare e elencare risorse generiche, come componenti software o sorgenti di dati.
  • Il JDBC è un’interfaccia per l’accesso a qualsiasi tipo di basi di dati (compresa anche nella standard edition).
  • Il JTA è un sistema per il supporto delle transazioni distribuite.
  • Il JAXP è un API per la gestione di file in formato XML.
  • Il Java Message Service (JMS) descrive un sistema per l’invio e la gestione di messaggi.

COMMENTS

WORDPRESS: 5
  • comment-avatar

    Ottima spiegazione che mi ha chiarito molti dubbi

  • comment-avatar

    Spiegazione molto interessante e chiarificatrice

  • comment-avatar

    Grazie mille!

  • comment-avatar
    Bibbiano 4 anni ago

    Complimenti per la spiegazione, davvero ben fatta!! L’unico dubbio che mi rimane e che spesso vedo è perchè c’è una grande differenza nella nomenclatura delle versioni del tipo jre_1.8blabla e jdk14 per esempio?