Некоторое время назад я написал одну статью Java Lambda Expression с объяснением на примере, но мне было легко исследовать и Java 8, потому что я использовал его в своем проекте, и мне было разрешено установить и использовать его. Но в моем текущем проекте мы все еще используем Java 8, и теперь я хочу обновить себя и изучить Java 11, но не могу установить его.
И это происходит со многими разработчиками Java. Иногда вы хотите изучить и изучить последнюю версию Java, например Java 11, но вы не можете установить ее на свой компьютер, потому что вы и ваша команда работаете над какой-то более старой версией, например Java 8, и вы не хочу ломать ваш проект.
Или предположим, что вы работаете над несколькими проектами, некоторые из которых используют Java 8, а некоторые новые проекты используют Java 11. Так что для параллельной работы над этими проектами вам нужно будет установить несколько JDK на вашу машину, и вы сможете переключаться между ними. между ними.
Что, если есть способ, и что, если у вас есть возможность установить несколько версий Java и выключить и включить их в соответствии с вашими потребностями.
Ну, есть инструмент под названием SDKMan, который позволяет нам делать то же самое и согласно официальному сайту:
SDKMan! это инструмент для управления параллельными версиями нескольких
Комплекты разработки программного обеспечения на большинстве систем на основе Unix. Он предоставляет удобный интерфейс командной строки (CLI) и API для установки, переключения, удаления и вывода списка кандидатов.
Некоторые моменты о SDKMan следующие:
- SDKMan бесплатен для использования и разработан сообществом открытого кода.
- SDKMan написан на bash и для его работы требуются только программы curl и zip / unzip .
- SDKMan может установить около 29 комплектов разработки программного обеспечения для JVM, таких как Java, Groovy, Scala, Kotlin и Ceylon. Муравей, Gradle, Grails, Maven, SBT, Spark, Spring Boot, Vert.x.
- Нам не нужно беспокоиться о настройке
PATH
среды_HOME
иPATH
потому что SDKMan обрабатывает их автоматически.
Установка SDKMan
SDKMan может работать на любых платформах на основе UNIX, таких как Mac OSX, Linux, Cygwin, Solaris и FreeBSD, и мы можем установить его с помощью следующих команд:
Просто откройте новый терминал и введите:
1
2
|
$ source "$HOME/.sdkman/bin/sdkman-init.sh" |
Мы можем проверить установку, используя sdk version
а команда sdk help
предоставит полную справку об использовании команды sdk
.
Потому что SDKMan написан на bash и требует наличия в вашей системе только curl и zip / unzip . Вы также можете установить SDKMan на Windows, сначала установив Cygwin или Git Bash для среды Windows, а затем выполнив указанные выше команды.
Установка Java с использованием SDKMan
SDKMan поддерживает установку 29 комплектов разработки программного обеспечения для JVM, например, Java, Groovy, Scala, Kotlin и Ceylon, Grails, SBT, Spark, Spring Boot. Мы можем получить полный список с помощью команды sdk list
.
SDKMan также помогает нам устанавливать инструменты сборки, такие как Ant, Maven и Gradle. Вы можете узнать больше об этих инструментах сборки на сравнениях инструментов сборки Java: Ant против Maven против Gradle .
Команда sdk list java
выдаст нам список версий java, которые мы можем установить с помощью SDKMan, как показано ниже:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
$ sdk list java ================================================================================ Available Java Versions ================================================================================ 13 .ea. 02 -open 1.0 . 0 -rc- 10 -grl 12 .ea. 26 -open 1.0 . 0 -rc- 9 -grl 11.0 . 2 -zulu 1.0 . 0 -rc- 8 -grl 11.0 . 2 -open 11.0 . 1 -zulufx 10.0 . 2 -zulu 10.0 . 2 -open 9.0 . 7 -zulu 9.0 . 4 -open 8.0 . 202 -amzn 8.0 . 201 -zulu 8.0 . 201 -oracle 8.0 . 192 -zulufx 7.0 . 181 -zulu 1.0 . 0 -rc- 11 -grl ================================================================================ + - local version * - installed > - currently in use ================================================================================ |
Теперь предположим, что мы хотим установить OpenJDK-версию Java v9, затем мы выполним следующую команду в нашем терминале, которая также обновит переменные PATH и JAVA_HOME:
1
|
$ sdk install java 9.0 . 4 -open |
Выполнение команды займет некоторое время, поскольку она загружает JDK на наш компьютер, и команда выдаст что-то вроде:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
Downloading: java 9.0 . 4 -open In progress... ######################################################################## 100.0 % Repackaging Java 9.0 . 4 -open... Done repackaging... Cleaning up residual files... Installing: java 9.0 . 4 -open Done installing! Setting java 9.0 . 4 -open as default . |
Теперь, если мы проверим нашу версию Java и JAVA_HOME, мы увидим, что Java обновлена до 9.0.4
1
2
3
4
5
6
7
|
$ java -version openjdk version "9.0.4" OpenJDK Runtime Environment (build 9.0 . 4 + 11 ) OpenJDK 64 -Bit Server VM (build 9.0 . 4 + 11 , mixed mode) $ echo $JAVA_HOME /Users/xbbnrde/.sdkman/candidates/java/current |
Мы можем следовать тому же процессу, чтобы установить любую версию, которую мы видим в приведенном выше списке. Предположим, мы хотим установить версию Java V11, а затем выполнить команду:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
$ sdk install java 11.0 . 2 -open Downloading: java 11.0 . 2 -open In progress... ######################################################################## 100.0 % Repackaging Java 11.0 . 2 -open... Done repackaging... Cleaning up residual files... Installing: java 11.0 . 2 -open Done installing! Do you want java 11.0 . 2 -open to be set as default ? (Y/n): Y Setting java 11.0 . 2 -open as default . |
Теперь, если мы снова проверим нашу версию Java и JAVA_HOME, мы увидим, что Java обновлена до 11.0.2:
1
2
3
4
5
6
7
|
$ java -version openjdk version "11.0.2" 2019 - 01 - 15 OpenJDK Runtime Environment 18.9 (build 11.0 . 2 + 9 ) OpenJDK 64 -Bit Server VM 18.9 (build 11.0 . 2 + 9 , mixed mode) $ echo $JAVA_HOME /Users/xbbnrde/.sdkman/candidates/java/current |
Примечание. В некоторых случаях вам потребуется закрыть и снова открыть терминал, чтобы увидеть изменения.
Указание SDKMan на существующую установленную версию Java
Для начала нам нужно выяснить, где на вашей машине установлена Java. На моей машине он установлен в папке jdk1.8.0_172.jdk
которая находится в папке /Library/Java/JavaVirtualMachines
, давайте обратимся к этой папке
<java-folder>
.
Второе, что мы хотим сделать, это установить символическую ссылку между нашими установленными <java-folder>
и SDKMan, мы можем сделать это, выполнив следующие команды:
1
2
3
|
$ ln -s /Library/Java/JavaVirtualMachines/<java-folder> ~/.sdkman/candidates/java/<java-folder> $ sudo ln -s /Library/Java/JavaVirtualMachines/<java-folder>/Contents/Home/bin ~/.sdkman/candidates/java/<java-folder>/bin |
Теперь, если мы снова выполним команду sdk list java
, мы получим:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
================================================================================ Available Java Versions ================================================================================ + jdk1. 8 .0_172.jd 8.0 . 201 -zulu 13 .ea. 02 -open 8.0 . 201 -oracle 12 .ea. 26 -open 8.0 . 192 -zulufx 11.0 . 2 -zulu 7.0 . 181 -zulu > * 11.0 . 2 -open 1.0 . 0 -rc- 12 -grl 11.0 . 2 .j9-adpt 1.0 . 0 -rc- 11 -grl 11.0 . 2 .hs-adpt 1.0 . 0 -rc- 10 -grl 11.0 . 1 -zulufx 1.0 . 0 -rc- 9 -grl 10.0 . 2 -zulu 1.0 . 0 -rc- 8 -grl 10.0 . 2 -open 9.0 . 7 -zulu * 9.0 . 4 -open 8.0 . 202 -amzn 8.0 . 202 .j9-adpt 8.0 . 202 .hs-adpt ================================================================================ + - local version * - installed > - currently in use ================================================================================ |
Мы ясно видим, что на нашей машине установлено 3 JDK и JDK
11.0.2-open
используется сейчас. Однако, если мы хотим переключаться между ними или устанавливать новый, мы можем сделать это очень легко, используя sdk use java <version_which_you_want_to_use>
как sdk use java <version_which_you_want_to_use>
ниже:
Использование Java 9
1
2
3
4
5
6
7
|
$ sdk use java 9.0 . 4 -open Using java version 9.0 . 4 -open in this shell. $ java -version openjdk version "9.0.4" OpenJDK Runtime Environment (build 9.0 . 4 + 11 ) OpenJDK 64 -Bit Server VM (build 9.0 . 4 + 11 , mixed mode) |
Используя локально установленную Java 8
1
2
3
4
5
6
7
|
$ sdk use java jdk1. 8 .0_172.jdk Using java version jdk1. 8 .0_172.jdk in this shell. $ java -version java version "1.8.0_172" Java(TM) SE Runtime Environment (build 1.8 .0_172-b11) Java HotSpot(TM) 64 -Bit Server VM (build 25.172 -b11, mixed mode) |
Использование Java 11
1
2
3
4
5
6
7
|
$ sdk use java 11.0 . 2 -open Using java version 11.0 . 2 -open in this shell. $ java -version openjdk version "11.0.2" 2019 - 01 - 15 OpenJDK Runtime Environment 18.9 (build 11.0 . 2 + 9 ) OpenJDK 64 -Bit Server VM 18.9 (build 11.0 . 2 + 9 , mixed mode) |
Использование команды sdk use
позволит вам использовать указанную версию JDK только в той же терминальной оболочке, где вы выполняете команду sdk use
. И если вы закроете терминал и откроете его снова, вы окажетесь на ранее установленной версии.
Но если вы хотите активировать одну версию JDK для всех терминалов и приложений, вы можете использовать команду sdk default java <your_version>
1
2
3
4
5
6
7
|
$ sdk default java 11.0 . 2 -open Default java version set to 11.0 . 2 -open $ java -version openjdk version "11.0.2" 2019 - 01 - 15 OpenJDK Runtime Environment 18.9 (build 11.0 . 2 + 9 ) OpenJDK 64 -Bit Server VM 18.9 (build 11.0 . 2 + 9 , mixed mode) |
Или вы можете удалить эту версию и установить ее снова, как показано ниже, которая установит текущую версию JDK.
Удаление версии JDK
Если вы хотите удалить любую версию JDK, например, 11.0.2-open
вы можете сделать это следующим образом:
1
|
$ sdk uninstall java 11.0 . 2 -open |
И в случае, если вы хотите снова установить удаленную версию, вы можете установить ее снова, и на этот раз SDKMan не загрузит ее, потому что она уже установлена на вашем компьютере (если вы не удалили ее вручную).
01
02
03
04
05
06
07
08
09
10
|
$ sdk install java 11.0 . 2 -open Found a previously downloaded java 11.0 . 2 -open archive. Not downloading it again... Installing: java 11.0 . 2 -open Done installing! Do you want java 11.0 . 2 -open to be set as default ? (Y/n): y Setting java 11.0 . 2 -open as default . |
Используя SDMan установленный JDK от IntelliJ IDEA
SDKMan устанавливает все JDK в .sdkman/candidates/java/
и вы можете найти папку .sdkman
в вашем домашнем каталоге.
После открытия любого Java-проекта в IntelliJ вы можете нажать Command + :
чтобы открыть окно структуры проекта. В этом окне вам нужно будет нажать на
New...
разделе Project SDK
и там вы можете ввести .sdkman/candidates/java/
в окне просмотра и выбрать любой JDK из .sdkman/candidates/java/
.
Поскольку .sdkman
— это скрытая папка, и в случае, если у вас возникнут проблемы с ее поиском, вы всегда можете создать символическую ссылку на нее с помощью скрытой папки, используя команду ниже
1
|
$ ln -s ~/.sdkman ~/sdkman |
Вы можете найти полный исходный код для моих статей в этом Github-репозитории и, пожалуйста, не стесняйтесь оставлять свои ценные отзывы.
Опубликовано на Java Code Geeks с разрешения Нареша Джоши, партнера нашей программы JCG . См. Оригинальную статью здесь: Как установить несколько версий Java на одной машине Мнения, высказанные участниками Java Code Geeks, являются их собственными. |