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.
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:
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.
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
.