Differenza tra java.casa e JAVA CASA


Nel mio codice java, ho questa riga System.getProperty("java.home"). In alcuni ambienti, questo restituisce lo stesso valore di quello che è stato impostato JAVA_HOME come variabile d'ambiente.

Ma in alcuni ambienti, System.getProperty("java.home") restituisce un valore completamente diverso da JAVA_HOME.

Quindi la mia domanda è qual è la differenza tra java.home e JAVA_HOME dal punto di vista java?

Quello che so dalla mia ricerca è JAVA_HOME è il percorso di installazione jdk, java.home è il percorso di installazione jre, ma allora perché non può corrispondere a jre può essere parte dell'installazione di jdk.

Author: yogsma, 2017-08-01

2 answers

Come hai detto, JAVA_HOME punta al percorso di installazione JDK dato dalla variabile d'ambiente(%JAVA_HOME%).

Ma java.home punta al percorso di installazione JRE, ora restituisce il JRE che è stato utilizzato per eseguire l'applicazione, ricorda che puoi avere più versioni di JRE e JDK sullo stesso server / computer

Ed è possibile eseguire un'applicazione specificando quale jre o jdk si desidera utilizzare.

Quindi, ad esempio, se avere sul percorso dell'ambiente:

%JAVA_HOME% = C:\Program Files\Java\jdk1.6.0_24

Ma se hai eseguito l'applicazione utilizzando un jre specifico:

"C:\Program Files (x86)\Java\jre1.8.0_73\bin\java" -jar TheJavaFile.jar

All'interno dell'applicazione in fase di esecuzione, si otterrà su java.home una versione diversa di JAVA_HOME

Questo potrebbe spiegare perché in alcuni casi si ottengono versioni diverse sia per la variabile che per la proprietà di sistema.

Inoltre, si noti che i percorsi possono essere molto diversi, poiché JRE è un prodotto diverso da JDK, quindi vengono installati in posizioni diverse, perché sono indipendenti

Ora, per quanto riguarda la differenza da un JDK vs JRE, questo diagramma lo spiega abbastanza chiaro:

inserisci qui la descrizione dell'immagine

JDK è un superset di JRE, e contiene tutto ciò che è in JRE, più strumenti come compilatori e debugger necessari per lo sviluppo applet e applicazioni. JRE fornisce le librerie, il Java Virtuale Macchina (JVM) e altri componenti per eseguire applet e applicazioni scritto in Java linguaggio di programmazione.

 13
Author: Marco Vargas, 2017-08-03 15:58:51

Secondo Documentazione Oracle java.home è una proprietà di sistema che rappresenta la directory di installazione di Java Runtime Environment. JAVA_HOMEè una variabile d'ambiente - non una proprietà di sistema. Si prega di fare riferimento a questo post per verificare qual è la differenza tra proprietà di sistema e variabile d'ambiente.

Puoi anche fare riferimento a questo post per saperne di più su JAVA_HOME.

 3
Author: Alexey R., 2017-08-01 15:42:08