Некоторое время назад я написал одну статью 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 thisshell.$ 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 thisshell.$ 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 thisshell.$ 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 defaultjava 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, являются их собственными. |