現在各個語言都有 Version Manager,像是 node 的 nvm、ruby 的 rvm、golang 的 gvm,Java 沒有官方的工具,但也有類似的工具。
底下整理的都是針對 macOS。
內建工具 java_home macOS 有內建一個工具:java_home
可以知道目前的 JAVA_HOME
在哪。
1 2 3 4 5 6 7 8 9 10 ~$ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/openjdk-11.0.1.jdk/Contents/Home ~$ /usr/libexec/java_home -V Matching Java Virtual Machines (3): 11.0.1, x86_64: "OpenJDK 11.0.1" /Library/Java/JavaVirtualMachines/openjdk-11.0.1.jdk/Contents/Home 1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home 1.7.0_51, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
指定 JDK 1 2 3 4 5 6 7 8 9 10 export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)export JAVA_11_HOME=$(/usr/libexec/java_home -v11)alias java7='export JAVA_HOME=$JAVA_7_HOME' alias java8='export JAVA_HOME=$JAVA_8_HOME' alias java11='export JAVA_HOME=$JAVA_11_HOME' java8
SDKMan SDKMan 是用來管理 JVM-base 套件的管理工具,包含 Java SDK, Groovy, Scala, Kotlin, Ant, Gradle, Maven , Sprint Boot, Vert.x…
安裝:
1 2 ~$ curl -s "https://get.sdkman.io" | bash ~$ source "$HOME /.sdkman/bin/sdkman-init.sh"
確認:
1 2 3 4 5 6 7 8 sdk version ==== BROADCAST ================================================================= * 2019-04-04: Springboot 2.1.4.RELEASE released on SDKMAN! * 2019-04-03: Springboot 2.0.9.RELEASE released on SDKMAN! * 2019-04-03: Springboot 1.5.20.RELEASE released on SDKMAN! ================================================================================ SDKMAN 5.7.3+337
顯示哪一些 jdk 可以用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ~$ sdk list java ================================================================================ Available Java Versions ================================================================================ Vendor | Use | Version | Dist | Status | Identifier -------------------------------------------------------------------------------- AdoptOpenJDK | | 13.0.1.j9 | adpt | | 13.0.1.j9-adpt | | 13.0.1.hs | adpt | | 13.0.1.hs-adpt | | 12.0.2.j9 | adpt | | 12.0.2.j9-adpt | | 12.0.2.hs | adpt | | 12.0.2.hs-adpt | | 11.0.5.j9 | adpt | | 11.0.5.j9-adpt | | 11.0.5.hs | adpt | | 11.0.5.hs-adpt | | 8.0.232.j9 | adpt | | 8.0.232.j9-adpt | | 8.0.232.hs | adpt | | 8.0.232.hs-adpt Amazon | | 11.0.5 | amzn | | 11.0.5-amzn | | 8.0.232 | amzn | | 8.0.232-amzn | >>> | 8.0.202 | amzn | installed | 8.0.202-amzn Azul Zulu | | 13.0.1 | zulu | | 13.0.1-zulu | | 12.0.2 | zulu | | 12.0.2-zulu | | 11.0.5 | zulu | | 11.0.5-zulu | | 10.0.2 | zulu | | 10.0.2-zulu | | 9.0.7 | zulu | | 9.0.7-zulu | | 8.0.232 | zulu | | 8.0.232-zulu | | 8.0.202 | zulu | | 8.0.202-zulu | | 7.0.181 | zulu | | 7.0.181-zulu Azul ZuluFX | | 11.0.2 | zulufx | | 11.0.2-zulufx | | 8.0.202 | zulufx | | 8.0.202-zulufx BellSoft | | 13.0.1 | librca | | 13.0.1-librca | | 12.0.2 | librca | | 12.0.2-librca | | 11.0.5 | librca | | 11.0.5-librca | | 8.0.232 | librca | | 8.0.232-librca GraalVM | | 19.3.0.r11 | grl | | 19.3.0.r11-grl | | 19.3.0.r8 | grl | | 19.3.0.r8-grl | | 19.2.1 | grl | | 19.2.1-grl | | 19.1.1 | grl | | 19.1.1-grl | | 19.0.2 | grl | | 19.0.2-grl | | 1.0.0 | grl | | 1.0.0-rc-16-grl Java.net | | 14.ea.24 | open | | 14.ea.24-open | | 13.0.1 | open | | 13.0.1-open | | 12.0.2 | open | | 12.0.2-open | | 11.0.2 | open | | 11.0.2-open | | 10.0.2 | open | | 10.0.2-open | | 9.0.4 | open | | 9.0.4-open SAP | | 12.0.2 | sapmchn | | 12.0.2-sapmchn | | 11.0.4 | sapmchn | | 11.0.4-sapmchn ================================================================================ Use the Identifier for installation: $ sdk install java 11.0.3.hs-adpt ================================================================================
安裝 GraalVM GraalVM 是 Oracle 的實驗性 Universal GraalVM,他的口號為 Run Programs Fast Anywhere
宣稱可以打通不同語言的,讓開發者混合多種語言開發。目前支援: Java、Python、Ruby、R、Scala、Kotlin、C、C++。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ~$ sdk install java 19.3.0.r11-grl Downloading: java 19.3.0.r11-grl In progress... Repackaging Java 19.3.0.r11-grl... Done repackaging... Cleaning up residual files... Installing: java 19.3.0.r11-grl Done installing! Do you want java 19.3.0.r11-grl to be set as default? (Y/n): y Setting java 19.3.0.r11-grl as default. ~$ java -version openjdk version "11.0.5" 2019-10-15 OpenJDK Runtime Environment (build 11.0.5+10-jvmci-19.3-b05-LTS) OpenJDK 64-Bit GraalVM CE 19.3.0 (build 11.0.5+10-jvmci-19.3-b05-LTS, mixed mode, sharing)
安裝 Amazon JDK (Corretto) 安裝 Amazon - Java 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 sdk install java 8.0.202-amzn tr : Illegal byte sequenceDownloading: java 8.0.202-amzn In progress... Repackaging Java 8.0.202-amzn... Done repackaging... Cleaning up residual files... Installing: java 8.0.202-amzn Done installing! Setting java 8.0.202-amzn as default.
驗證:
1 2 3 4 5 6 7 ~$ java -version openjdk version "1.8.0_202" OpenJDK Runtime Environment Corretto-8.202.08.2 (build 1.8.0_202-b08) OpenJDK 64-Bit Server VM Corretto-8.202.08.2 (build 25.202-b08, mixed mode) echo $JAVA_HOME /Users/rick/.sdkman/candidates/java/current
更換 JDK 1 2 3 4 5 sdk list java sdk default java 19.3.0.r11-grl
安裝 gradle or maven 除了安裝 JDK 之外,也可以安裝其他工具,例如 gradle / maven
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ~$ sdk install gradle tr : Illegal byte sequenceDownloading: gradle 5.3.1 In progress... Installing: gradle 5.3.1 Done installing! Setting gradle 5.3.1 as default. ~$ echo $GRADLE_HOME /Users/rick/.sdkman/candidates/gradle/current
延伸閱讀
參考資料