JVM版本管理器

Ruby Version Manager是否与Java世界等效?

我正在寻找允许我轻松下载和安装新JVM并在它们之间切换的工具。 例如:

jvm install  jvm list //will list installed JVMs on my system jvm use jdk1.6 //will switch my env to jdk 1.6 version, etc. 

如果您使用Ubuntu,您可以通过命令指定要使用的JVM(仅适用于从apt-get或aptitude安装的JVM)

sudo update-alternatives --config java

或者通过设置JAVA_HOME。 这是一个很好的教程:

http://vietpad.sourceforge.net/javaonlinux.html

对于JVM,如果需要在它们之间切换,则只需使用批处理文件(或powershell脚本)来管理类路径和JVM路径。 您不需要依赖系统默认的JVM路径,而只需通过更改运行JVM的shell中的类路径和JVM路径环境,让您的应用程序指向您喜欢的任何JVM。

对于从Registry获取Java位置的程序,理论上您也可以使用批处理脚本来更新它。

在这方面,Java比“Ruby版本管理器”更容易。

为了完整起见,还有两个 – jabba (我是作者;用Go编写并在nvm / gvm / rvm之后设计)和jenv (不要与jenv.be混淆;不支持从oracle安装但可以从自定义zip安装)。

诀窍是使用update-java-alternatives(来自java-common包)。 update-alternatives命令不会更新各种java / bin可执行文件的每个符号链接,这就是update-java-alternatives更好的原因。

因此,要使用OpenJDK 6到7,请使用update-java-alternatives -l获取Java备选列表,然后使用sudo update-java-alternatives -s java-1.7.0-openjdk-amd64来切换JDK。

CAVEAT:上面的命令可能会抛出以下错误,

 update-alternatives: error: no alternatives for mozilla-javaplugin.so. update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so 

这是因为默认情况下未安装openjdk插件。 修复运行sudo apt-get install icedtea-7-plugin并重新运行update-java-alternatives。

SDKMAN! 是Java生态系统的类似工具。 支持各种Java版本,Scala,Clojure,Kotlin,Groovy以及Maven和Gradle等构建工具。

可以在Mac和Linux上运行,有些提到支持Windows取决于你有多努力尝试:)