Рубрики
Без рубрики

Управление несколькими версиями Java в Linux

1. Введение В 2017 году Oracle объявила о выпуске Java (тогда еще новой) за шесть месяцев. Thi… Помеченный как java, производительность, linux.

1. Вступление

В 2017 году Oracle объявила о выпуске Java (тогда еще новой) за шесть месяцев. Это было значительным изменением по сравнению с предыдущим циклом Java, состоящим из одного крупного выпуска каждые два-три года. С появлением новых выпусков Java предоставляет разработчикам больше инноваций и делает платформу еще более привлекательной. Это также означает, что управлять различными версиями сложнее, если вы хотите идти в ногу с новыми функциями или если для разных проектов требуются разные версии. В этом сообщении в блоге мы увидим, как управлять несколькими версиями Java в Linux с помощью jEnv .

2. Что такое jEnv?

jEnv – это инструмент командной строки, который помогает управлять несколькими установками Java. Таким образом, разработчики могут надеяться забыть, как установить переменную среды JAVA_HOME. С помощью jEnv вы можете настроить локальные установки Java на глобальных , каталог и даже уровень оболочки . Это возможно, потому что jEnv хранит локальную версию Java в файле .java-версия и, в зависимости от контекста, просто перенаправит на соответствующий установочный файл.

3. Установка

Мы начнем с установки некоторых версий JDK, чтобы у нас были версии для управления. Нам также понадобится Git чтобы иметь возможность установить jEnv.

Установить Java SE 8 и Java SE 11

$ sudo apt install openjdk-8-jdk && sudo apt install openjdk-11-jdk 

Установить Git

$ sudo apt install git

Для установки jEnv мы начинаем с клонирования его репозитория git

$ git clone https://github.com/gcuisinier/jenv.git ~/.jenv

Затем мы добавляем его в нашу оболочку Bash

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source .bash_profile

Если вышеприведенные команды не работают для вас, не волнуйтесь, просто используйте .bashrc вместо

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(jenv init -)"' >> ~/.bashrc
$ source .bashrc

Первая команда выше добавляет jEnv в ваш ПУТЬ чтобы можно было найти его двоичные файлы. Второй просто инициализирует jEnv после загрузки вашей оболочки, а source – это встроенная команда оболочки bash, которая выполняет содержимое файла.

4. Использование

Если вы запустите jenv , вы должны получить следующее

$ jenv
 jenv 0.5.2-28-g3f3e517
 Usage: jenv  []

 Some useful jenv commands are:
    commands    List all available jenv commands
    local       Set or show the local application-specific Java version
    global      Set or show the global Java version
    shell       Set or show the shell-specific Java version
    rehash      Rehash jenv shims (run this after installing executables)
    version     Show the current Java version and its origin
    versions    List all Java versions available to jenv
    which       Display the full path to an executable
    whence      List all Java versions that contain the given executable
    add         Add JDK into jenv. A alias name will be generated by parsing "java -version"

 See `jenv help ' for information on a specific command.
 For full documentation, see: https://github.com/jenv/jenv/blob/master/README.md

Теперь давайте добавим различные версии JDK, которые мы установили, в наш инструмент командной строки

$ jenv add /usr/lib/jvm/java-1.8.0-openjdk-amd64    
$ jenv add /usr/lib/jvm/java-11-openjdk-amd64

Чтобы узнать, какими версиями может управлять наш инструмент, выполнять

$ jenv versions
 system
 11
 11.0
 11.0.4
*1.8 (set by /home/nkengasong/.jenv/version)
 1.8.0.222
 openjdk64-11.0.4
 openjdk64-1.8.0.222

Надеюсь, вы сможете увидеть что-то похожее на. Также обратите внимание на разные 11 и 1.8.0, это просто псевдонимы, относящиеся к одной и той же версии, так что на самом деле у вас две управляемые версии.

Теперь вы можете указать, какую версию вы хотите использовать. Например, если вы хотите использовать Java 11 глобально, используйте следующую команду

$ jenv global 11

Вы можете работать над проектом JDK 8, не меняя свою глобальную версию.

$ mkdir my-jdk-8-project
$ cd my-jdk-8-project
$ jenv local 1.8

Если вы проверите версию Java в своем каталоге my-jdk-8-project , вы получите следующее

$ java -version
 openjdk version "1.8.0_222"
 OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10)
 OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

Наконец, мы должны установить $JAVA_HOME , потому что JENV, к сожалению, не сделает этого за нас. Это очень важно, учитывая, что несколько инструментов, таких как IDE, зависят от этой переменной. Для этого мы включаем плагин экспорт следующим образом

$ jenv enable-plugin export

Теперь мы можем убедиться, что для переменной $JAVA_HOME установлена глобальная версия Java

$ echo $JAVA_HOME
 /home/nkengasong/.jenv/versions/1.8

Вы также можете включить другие плагины, такие как maven и оценить плагины

$ jenv enable-plugin maven
$ jenv enable-plugin gradle

5. Вывод

В этом сообщении в блоге мы рассмотрели, как управлять несколькими версиями Java в Linux с помощью инструмента командной строки java, который поможет вам забыть, как установить переменную среды JAVA_HOME.

Оригинал: “https://dev.to/nkengasong_atem/manage-multiple-java-versions-on-linux-nfc”