Некоторое время назад я написал одну статью 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-openIn progress...######################################################################## 100.0%Repackaging Java 9.0.4-open...Done repackaging...Cleaning up residual files...Installing: java 9.0.4-openDone installing!Setting java 9.0.4-open as default. |
Теперь, если мы проверим нашу версию Java и JAVA_HOME, мы увидим, что Java обновлена до 9.0.4
|
1
2
3
4
5
6
7
|
$ java -versionopenjdk 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-openDownloading: java 11.0.2-openIn progress...######################################################################## 100.0%Repackaging Java 11.0.2-open...Done repackaging...Cleaning up residual files...Installing: java 11.0.2-openDone installing!Do you want java 11.0.2-open to be set as default? (Y/n): YSetting java 11.0.2-open as default. |
Теперь, если мы снова проверим нашу версию Java и JAVA_HOME, мы увидим, что Java обновлена до 11.0.2:
|
1
2
3
4
5
6
7
|
$ java -versionopenjdk version "11.0.2" 2019-01-15OpenJDK 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-openUsing java version 9.0.4-open in this shell.$ java -versionopenjdk 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.jdkUsing java version jdk1.8.0_172.jdk in this shell.$ java -versionjava 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-openUsing java version 11.0.2-open in this shell.$ java -versionopenjdk version "11.0.2" 2019-01-15OpenJDK 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-openDefault java version set to 11.0.2-open$ java -versionopenjdk version "11.0.2" 2019-01-15OpenJDK 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-openFound a previously downloaded java 11.0.2-open archive. Not downloading it again...Installing: java 11.0.2-openDone installing!Do you want java 11.0.2-open to be set as default? (Y/n): ySetting 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, являются их собственными. |