View Full Version : [java] organizzare le virtual machine
ckingpin
16-04-2009, 12:45
non sono esperto di java e non programmo in java, ma sul mio pc sono istallati vari tool che usano la virtual machine e ognuno si è istallata la sua (almeno credo) come si vede qui:
C:\Programmi\Java\jre1.6.0_07\bin\java.exe 135.168 byte
C:\Programmi\Oracle\10.2.0_client\jdk\bin\java.exe 45.161 byte
C:\Programmi\Oracle\10.2.0_client\jdk\jre\bin\java.exe 45.161 byte
C:\Programmi\Oracle\11.1.0_clientODAC\jre\1.5.0\bin\java.exe 49.248 byte
C:\Programmi\Serena\Dimensions\Books\_jvm\bin\java.exe 24.670 byte
C:\Programmi\Serena\Dimensions\Common Tools\jre\1.4.2\bin\java.exe 45.161 byte
C:\Programmi\Serena\Dimensions\Common Tools\_uninst\_jvm\bin\java.exe 24.670 byte
C:\Programmi\sqldeveloper\jdk\jre\bin\java.exe 49.248 byte
C:\WINDOWS\system32\java.exe 135.168 byte
invece io vorrei riorganizzare un pò tuto, istallarne una ed una sola e forzare tutti i tool ad usarla....mi potete intanto spiegare la differenza tra jdk jde jvm e gli altri acronimi....(cosa serve davvero a chi non sviluppa in java?) e poi darmi qualche suggerimento sulla riorganizzazione?
java.exe è solo il programma che avvia la jvm. Ad esempio questo java.exe
C:\WINDOWS\system32\java.exe 135.168 byte
è il launcher della JVM installata in:
C:\Programmi\Java\jre1.6.0_07\
Dovresti dare un'occhiata a quante jvm.dll hai sul pc.
Il JRE è quello che serve per eseguire programmi Java, il JDK per sviluppare programmi Java.
Il JDK usa a sua volta un JRE (è in pratica un JRE + qualcos'altro).
Stante una certa retrocompatibilità della piattaforma Java dovresti essere in grado di eseguire tutti i programmi java che hai sul pc usando il solo JRE che trovi in:
C:\Programmi\Java\jre1.6.0_07\
a meno di librerie esterne.
Non è una cosa che mi sento di consigliare perchè se qualcuno ha pensato di distribuire una copia privata del JRE/JDK col proprio programma è sperabile che una ragione ci sia. Comunque se dovessi provare io a eliminare qualcosa inizierei rinominando la cartella del JRE/JDK privato (ad esempio da C:\Programmi\Oracle\10.2.0_client\jdk\bin\java.exe 45.161 byte a C:\Programmi\Oracle\10.2.0_client\PIMPUMPAM\bin\java.exe 45.161 byte) e provando a vedere se il programma si avvia e viene eseguito correttamente. Al limite potrebbe essere necessario spostare qualche dll e qualche JAR nel JRE pubblico e modificare un file di configurazione. Ma è una questione delicata.
ckingpin
16-04-2009, 14:54
ecco l'elenco di jvm.dll
C:\Programmi\Java\jre1.6.0_07\bin\client\jvm.dll 2.334.720 byte
C:\Programmi\Oracle\10.2.0_client\jdk\jre\bin\client\jvm.dll 1.212.546 byte
C:\Programmi\Oracle\10.2.0_client\jdk\jre\bin\server\jvm.dll 2.744.450 byte
C:\Programmi\Oracle\11.1.0_clientODAC\jre\1.5.0\bin\client\jvm.dll 1.622.137 byte
C:\Programmi\Oracle\11.1.0_clientODAC\jre\1.5.0\bin\server\jvm.dll 3.747.961 byte
C:\Programmi\Serena\Dimensions\Books\_jvm\bin\client\jvm.dll 1.208.439 byte
C:\Programmi\Serena\Dimensions\Common Tools\jre\1.4.2\bin\client\jvm.dll 1.237.122 byte
C:\Programmi\Serena\Dimensions\Common Tools\jre\1.4.2\bin\server\jvm.dll 2.781.314 byte
C:\Programmi\Serena\Dimensions\Common Tools\_uninst\_jvm\bin\client\jvm.dll 1.208.439 byte
C:\Programmi\sqldeveloper\jdk\jre\bin\client\jvm.dll 1.585.273 byte
C:\Programmi\sqldeveloper\jdk\jre\bin\server\jvm.dll 3.797.113 byte
quindi in pratica io potrei disistallare innanzitutto tutte le JDK (visto che non sviluppo), come si fà?
inoltre, perchè molti tool hanno le jvm versione client e server?
poi, potrei provare a rimuovere qualche virtual machine, la piu immediata su cui fare i test è sqldeveloper in quanto Oracle fornisce due versioni, una che include la jvm (la mia) e una no, sto provando quindi ora quella senza jvm e dal sito oracle leggo:
Oracle SQL Developer for Windows (This zip does not include a JDK)
(70 M)
To install and run:
- Ensure you have a JDK installed, if not, download here *
(click 'Download JDK 5.0 Update <xx>') (where <xx> is the latest update)
- Download the file above
- Extract sqldeveloper.zip into any folder, using folder names
- Within that folder, open the sqldeveloper folder
- Double-click sqldeveloper.exe
* NOTE: Oracle SQL Developer 1.5.4 is shipped with JDK1.5.0_06.You can connect to and use any JDK 1.5.0_06 or above. Additionally you can use Oracle SQL Developer 1.5.4 with JDK 1.6 (JDK 6.0). In this case the minimum release is JDK 1.6 Update 3 and above.
e qui nascono un pò di dubbi
- perchè serve la jdk? non basta la jre?
- la mia istallazione java principale, cioè C:\Programmi\Java\jre1.6.0_07\bin\client\jvm.dll è compatibile come versione, ma è solo la jre...quindi mancherebbe la jdk?
- se lancio sqldeveloper.exe mi dà errore
Prova ad aprire una console (start -> esegui -> "cmd" ->ok), digita nella console
java -version
e premi invio.
Se ottieni una risposta tipo "java version 1. qualcosa" hai effettivamente un JRE.
Per disinstallare i JRE/JDK privati sarebbe meglio procedere con il pannello di configurazione della singola applicazione.
Che errore ti da la versione senza jre di sqldeveloper?
ckingpin
16-04-2009, 15:08
Prova ad aprire una console (start -> esegui -> "cmd" ->ok), digita nella console
java -version
e premi invio.
Se ottieni una risposta tipo "java version 1. qualcosa" hai effettivamente un JRE.
C:\>java -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
Per disinstallare i JRE/JDK privati sarebbe meglio procedere con il pannello di configurazione della singola applicazione.
come il pannello di controllo? ti riferisci a istalla/disistalla applicazioni o a qualche pannello specifico di java?
Che errore ti da la versione senza jre di sqldeveloper?
sqldeveloper mi dice "enter the full path name of java.exe"
se scelgo C:\Programmi\Java\jre1.6.0_07\bin\java.exe mi dice: "cannot find a J2SE SDK installed" (altri acronimi...che roba è J2SE?)
stesso identico errore se scelgo queste altre:
C:\Programmi\Oracle\11.1.0_clientODAC\jre\1.5.0\bin\java.exe
C:\Programmi\Serena\Dimensions\Books\_jvm\bin\java.exe
C:\Programmi\Serena\Dimensions\Common Tools\jre\1.4.2\bin\java.exe
C:\Programmi\Serena\Dimensions\Common Tools\_uninst\_jvm\bin\java.exe
C:\WINDOWS\system32\java.exe
se scelgo C:\Programmi\Oracle\10.2.0_client\jdk\bin\java.exe mi dice: "java version 1.4 not supported, the minumum version is 1.5" (ok questo errore è chiaro!!)
idem per C:\Programmi\Oracle\10.2.0_client\jdk\jre\bin\java.exe
J2SE sta per Java 2 Standard Edition, SDK è il software development toolkit.
In pratica quel programma richiede per poter essere eseguito che sia presente non solo l'ambiente di esecuzione ma anche l'ambiente di sviluppo di programmi java.
Il che è bizzarro a meno che non si tratti a sua volta di un programma per lo sviluppo di applicazioni Java. Mah, Oracle...
Dovresti andare nel pannello installazione applicazioni di Windows e rimuovere il Java Runtime Environment, poi andare qui
http://java.sun.com/javase/downloads/index.jsp
e scaricare il "JDK 6 Update 13"
Così installi il JDK richiesto da quel programma e aggiorni rimpiazzi il JRE 1.6.0_7 con la versione 0_13. Due piccioni con una fava.
Per quanto riguarda le JVM client/server sono due JVM diverse, una è specificamente pensata per applicazioni da eseguire su PC desktop l'altra per applicazioni da PC server. Non cambia nulla dal punto di vista dell'eseguibilità dei programmi (tutto quello che fa una jvm client lo fa anche una jvm server), hanno solo comportamenti diversi dal punto di vista delle prestazioni e dell'uso di memoria.
ckingpin
16-04-2009, 15:49
J2SE sta per Java 2 Standard Edition, SDK è il software development toolkit.
In pratica quel programma richiede per poter essere eseguito che sia presente non solo l'ambiente di esecuzione ma anche l'ambiente di sviluppo di programmi java.
Il che è bizzarro a meno che non si tratti a sua volta di un programma per lo sviluppo di applicazioni Java. Mah, Oracle...
infatti non capisco, sqldeveloper è una interfaccia per gestire un db oracle e eseguire comandi sql, è scritto in java ma non c'entra nulla con lo sviluppo java.....speravo bastasse la jre
Dovresti andare nel pannello installazione applicazioni di Windows e rimuovere il Java Runtime Environment, poi andare qui
http://java.sun.com/javase/downloads/index.jsp
e scaricare il "JDK 6 Update 13"
Così installi il JDK richiesto da quel programma e aggiorni rimpiazzi il JRE 1.6.0_7 con la versione 0_13. Due piccioni con una fava.
ok ora lo faccio, in questo modo risolverò per sqldeveloper...restano poi da sistemare i 2 client Oracle e Serena dimension...ci sarà modo di dirgli di usare la jdk che sto istallando? sqldeveloper mi chiedeva "enter the full path name of java.exe" ma i client Oralce e Serena dimension non me lo hanno chiesto....
Per quanto riguarda le JVM client/server sono due JVM diverse, una è specificamente pensata per applicazioni da eseguire su PC desktop l'altra per applicazioni da PC server. Non cambia nulla dal punto di vista dell'eseguibilità dei programmi (tutto quello che fa una jvm client lo fa anche una jvm server), hanno solo comportamenti diversi dal punto di vista delle prestazioni e dell'uso di memoria.
capito....quindi siccome io agisco sempre da client...c'è modo di tenere solo la versione client? c'è modo di disistallare anche la jvm istallata di default da microsoft assieme a winXP? ho seguito questa guida (http://www.ilsoftware.it/articoli.asp?id=2250) ma mi dice che non trova il file java.inf alla fine ho risolto usando la Microsoft JVM Removal Tool (http://fileforum.betanews.com/detail/Microsoft-JVM-Removal-Tool-MSJVM/1079194582/1)
PS tutte queste operazioni sono fatte per diminuire lo spazio occupato da tutte le jvm (cercando di tenere solo 1 condivisa) e per diminuire l'uso di risore a runtime (perchè svolgo spesso task pesantucci) quindi ogni consiglio in merito è ben accetto
Dal punto di vista dell'esecuzione non cambia nulla. Comunque ogni programma creerà un diverso processo java. Si potrebbe risparmiare qualcosina condividendo lo stesso processo tra più programmi ma è una questione delicata.
[Sempre tenendo conto del fatto che sarebbe più sicuro lasciare ad ogni programma il sui JRE/JDK]
una volta installato il JDK che stai scaricando (che include un JRE pubblico) dovresti poter eliminare tutti i JRE/JDK nelle cartelle delle singole applicazioni.
Eliminare nel senso di cancellare fisicamente le cartelle.
Con ogni probabilità i programmi in questione hanno un file di configurazione che punta al JRE/JDK privato. Una cosa tipo:
c:\pippo\programma\jre\bin\java.exe
Dovrebbe essere sufficiente cambiare quella stringa. E' anche possibile che sia stata commessa l'immane stupidaggine di codificare il percorso del jre privato nell'eseguibile del programma. In quel caso la faccenda di complica.
ckingpin
16-04-2009, 17:09
Dal punto di vista dell'esecuzione non cambia nulla. Comunque ogni programma creerà un diverso processo java. Si potrebbe risparmiare qualcosina condividendo lo stesso processo tra più programmi ma è una questione delicata.
[Sempre tenendo conto del fatto che sarebbe più sicuro lasciare ad ogni programma il sui JRE/JDK]
una volta installato il JDK che stai scaricando (che include un JRE pubblico) dovresti poter eliminare tutti i JRE/JDK nelle cartelle delle singole applicazioni.
Eliminare nel senso di cancellare fisicamente le cartelle.
Con ogni probabilità i programmi in questione hanno un file di configurazione che punta al JRE/JDK privato. Una cosa tipo:
c:\pippo\programma\jre\bin\java.exe
Dovrebbe essere sufficiente cambiare quella stringa. E' anche possibile che sia stata commessa l'immane stupidaggine di codificare il percorso del jre privato nell'eseguibile del programma. In quel caso la faccenda di complica.
ho istallato la JDK e ora ho:
C:\Programmi\Java\jre6\bin\java.exe 144.792 byte
C:\Programmi\Java\jdk1.6.0_13\bin\java.exe 139.264 byte
C:\Programmi\Java\jdk1.6.0_13\jre\bin\java.exe 139.264 byte
ed anche:
C:\Programmi\Java\jre6\bin\client\jvm.dll 2.359.296 byte
C:\Programmi\Java\jdk1.6.0_13\jre\bin\client\jvm.dll 2.359.296 byte
C:\Programmi\Java\jdk1.6.0_13\jre\bin\server\jvm.dll 3.854.336 byte
...in realtà me ne aspettavo 2 di copie di quei files...perchè 3?
comunque con sqldeveloper è tutto ok.....il path che io gli passo nella finestra che mi appare viene salvato in sqldeveloper.conf così:
SetJavaHome C:\Programmi\Java\jdk1.6.0_13
quindi in futurò sò dove mettere le mani se modifico la jvm...ora non mi resta che smanettare con i 2 client Oracle e con Serena dimension
una è del jre pubblico. Il jre pubblico è quello che sta in programmi\java\jre ed è quello che viene normalmente usato per eseguire i programmi java.
due sono del jre privato. Il jre privato del è quello che sta in programmi\java\jdk\jre. Il jre privato è quello che usa il jdk per la compilazione ed esiste allo scopo di testare eventuali modifiche all'ambiente di esecuzione senza intaccare l'eventuale piattaforma java normalmente usata per eseguire programmi. Il JDK ha poi entrambe le versioni della JVM, quella client e quella server. La faccenda del jre privato e delle due jvm è comunque un dettaglio da sviluppatori.
Normalmente questa il jdk e quel che gli va dietro non interessa all'utente finale e alla fine della fiera di file jvm.dll dovresti averne solo una ma tant'è, quelli di oracle han pensato bene di richiedere un JDK. Valli a capire.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.