Для чего эта программа j2se runtime environment

Содержание

3070 Ti Gigabyte Gaming за 60 тр

Компания Sun Microsystems завершила работы над пятой версией Java 2SE, переименованной по маркетинговым соображениям из первоначального номера вида 1.5.0. Хоть под какой цифрой или буквой не был новый выпуск, больше всего нас интересует множество внесенных в него усовершенствований, а в первую очередь — ожидаемое существенное повышение скорости работы, более оптимальное использование оперативной памяти, улучшенная стабильность. В остальном в Sun Java 5.0 (J2SE 1.5.0) внесено множество улучшений, более 100, перечислять которые было бы слишком утомительно .

реклама

Скачать клиентский дистрибутив J2SE Runtime Environment (JRE, используется, например, в браузере Opera), традиционно можно с несколько неудобной официальной станицы загрузки:

  • J2SE 5.0 Runtime Environment (14,2 МБ, Windows 9x/ME/NT/2000/XP/2003).
  • Все прочие версии (8,3-15,8 МБ, Linux/Solaris x86/AMD64/SPARC).

Источник: overclockers.ru

Трехтировое (трехслойное) приложение

Вопросы по Java на собеседовании (5)

JRE (Java Runtime Environment) представляет минимальную реализацию виртуальной машины, необходимую для исполнения Java-приложений. JRE состоит из виртуальной машины JVM (Java Virtual Machine) и библиотек Java-классов, но не включает компилятор и средства разработки Java приложений.

JDK (Java Development Kit) — это комплект разработчика приложений Java, включающий компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).

JVM (Java Virtual Machine) — это виртуальная машина Java, предназначенная для исполнения Java программ и являющаяся основной частью JRE. JVM интерпретирует байт-коды Java приложений, полученные в результате компиляции исходного кода Java-программы компилятором javac. Т.е. виртуальная Java машина содержит интерпретатор байт-кода. Для повышения производительности во многих JVM дополнительно применяется JIT-компиляция, предназначенная для преобразования часто исполняемых фрагментов байт-кода в машинный код.

2. Загрузчики классов, динамическая загрузка классов

Java класс может быть загружен в контекст программы каким-либо загрузчиком classloader. Виртуальные машины JVM включают хотя бы один загрузчик классов, так называемый базовый загрузчик, который загружает все основные классы из rt.jar. Базовый загрузчик никак не связан с программой. Следующий загрузчик — это загрузчик расширений, загружающий классы из $JAVA_HOME/lib/ext. Далее по иерархии идет системный загрузчик, который загружает определенные в classpath классы.

Процесс загрузки классов выполняется следующим образом. Сначала системный загрузчик проверяет наличие класса в своем кэше. Если класс найден, то он успешно загружается. В противном случае управление загрузкой передается загрузчику расширений, который также проверяет свой кэш загрузок и, в случае неудачи, передает задачу базовому загрузчику.

Почему Java для десктопа это плохая идея и какие есть аналоги

Базовый загрузчик проверяет кэш и, в случае неудачи, пытается его загрузить. Если загрузка прошла успешно — то процесс закончен, если нет, то управление возвращается загрузчику расширений. Загрузчик расширений пытается загрузить класс и, в случае неудачи, передает задачу системному загрузчику. В завершение процесса, если системный загрузчик не сможет загрузить класс, то возбуждается исключение java.lang.ClassNotFoundException. Так в Java работает загрузка классов, так называемое делегирование загрузки.

Если в программе создаются пользовательские загрузчики, то они должны быть унаследованы от класса java.lang.ClassLoader.

Статическая и динамическая загрузка класса

Статическая загрузка класса происходит при использовании оператора «new». Динамическая загрузка происходит в режиме «run-time» с помощью статического метода класса Class.forName(className).

Подробное описание загрузчиков класса представлено здесь.

3. Области памяти Heap и Stack

Java Heap (куча) — это динамически распределяемая область оперативной памяти (RAM), создаваемая при старте JVM. Используется данная память для JRE классов и размещения объектов. Создание нового объекта в приложении происходит в куче. Количество выделенной памяти под объект зависит от его структуры. Так, например, для целочисленной переменной в куче будет выделено 32 бита.

Любой объект, размещенный/созданный в куче, имеет глобальный доступ, и на него могут ссылаться из любой части приложения. Сборщик мусора периодически освобождает память путем удаления объектов, на которые нет каких-либо ссылок.

Java Stack (стек) — это также динамически распределяемая область оперативной памяти (RAM). Однако использование данной памяти имеет существенное отличие. При каждом вызове метода в программе в памяти стека создается новый блок, который содержит примитивы и ссылки на другие объекты в методе. Стековая память работает по принципу LIFO (last-in-first-out).

Вместе с окончанием работы метода заканчивается использование блока, освобождая, таким образом, доступ следующему методу. Размер стековой памяти намного меньше объема памяти в куче. Из-за простоты распределения памяти (LIFO), стековая память работает намного быстрее кучи.

Размер памяти можно определить использованием соответствующих опций JVM. Так для определения начального и максимального размера памяти в куче необходимо использовать опции -Xms и -Xmx. Для определения стековой памяти следует использовать опцию -XX:MaxPermSize. Если память кучи исчерпана, то вызывается исключение java.lang.OutOfMemoryError: Java Heap Space. При отсутствии свободной памяти стека вызывается исключение java.lang.StackOverflowError.

4. Сборщик мусора Garbage Collector

Сборщик мусора имеет несколько алгоритмов очистки памяти. В первую очередь, он может быть вызван, когда объем свободной памяти в области Eden Space становится критичным. В этом случае, Garbage Collector просто переносит объекты, имеющие ссылки, из области Eden Space в область Survivor Space, а объекты без ссылок удаляет. Эта, так называемая minor’ная очистка, выполняется быстро.

Читайте также:
Программа амо crm что это

Если при очистке мусора памяти в области Survivor Space недостаточно, то долгоживущие объекты переносятся в область Tenured Generation, где они могут хранится до конца работы приложения. Вся остальная куча очищается от мусора.

Следует отметить, что сборщик мусора периодически вызывается виртуальной машиной, а не только тогда, когда не хватает памяти.

Более подробное описание распределения памяти в виртуальной машине JVM и о Garbage Collector’e представлено здесь.

5. Рефлексия кода, reflection

Java Reflection API — это механизм получения информации в режиме run-time приложения. Рефлексия позволяет получать информацию о конструкторах, методах и полях классов, и выполнять следующие операции над полями и методами класса :

  • определение класса объекта;
  • получение информации о полях, методах, конструкторах и суперклассах;
  • получение информации о модификаторах полей и методов;
  • создание экземпляра класса, имя которого неизвестно до момента выполнения программы;
  • определение и изменение значений свойств объекта;
  • вызов метода объекта.

Интерфейс Java Reflection API состоит из классов пакетов java.lang и java.lang.reflect.

6. Определение свойств класса в режиме run-time

В работающем приложении для получения класса используется метод forName (String className) :

// Без использования Reflection Foo foo = new Foo(); // С использованием Reflection Class foo = Class.forName(«Foo»);

Наименование класса, включающего пакет (package), извлекается методом getName() объекта Class :

Class aclass = foo.getClass(); System.out.println (aclass.getName());

Для получения значения модификатора класса используется метод getModifiers(). Класс java.lang.reflect.Modifier содержит статические методы, возвращающие логическое значения проверки модификатора класса :

Class cls = foo.getClass(); int mods = cls.getModifiers(); if (Modifier.isPublic (mods)) < System.out.println(«public»); >if (Modifier.isAbstract(mods)) < System.out.println(«abstract»);>if (Modifier.isFinal (mods))

Для получения суперкласса рефлексированного объекта (класса) необходимо использовать метод getSuperclass () :

Class cls = foo.getClass(); Class superCls = cls.getSuperClass();

Поскольку в Java отсутствет множественное наследование, то для получения всех предков следует рекурсивно вызвать метод getSuperclass () в цикле, пока не будет достигнут Object, являющийся родителем всех классов. Object не имеет родителей, поэтому вызов его метода getSuperclass () вернет null.

7. Определение интерфейсов и конструкторов класса в режиме run-time

Для получения в режиме run-time списка интерфейсов, реализующих классом, необходимо получить Class и использовать его метод getInterfaces(). Следующий пример демонстрирует получение списка интерфейсов класса ArrayList :

Class cls = ArrayList.class; Class[] ifs = cls.getInterfaces(); System.out.println(«List of interfacesn»); for(Class ifc : ifs)

Чтобы IDE (Eclipse) не предупреждала о необходимости определения типа класса

Class is a raw type. References to generic type Class should be parameterized

в коде используются generic’и. В консоль будут выведены следующие интерфейсы, реализуемые классом ArrayList :

List of interfaces java.util.List java.util.RandomAccess java.lang.Cloneable java.io.Serializable

Метод класса getConstructors () позволяет получить массив открытых конструкторов типа java.lang.reflect.Constructor. После этого, можно извлекать информацию о типах параметров конструктора и генерируемых исключениях. Пример :

Class cls = obj.getClass(); Constructor[] constructors = cls.getConstructors(); for (Constructor constructor : constructors) < Class[] params = constructor.getParameterTypes(); for (Class param : params) < System.out.println(param.getName()); >>

8. Определение полей класса в режиме run-time

Метод getFields() объекта Class возвращает массив открытых полей типа java.lang.reflect.Field.

Эти поля могут быть определены не только в классе, но также и в его родителях (суперклассе), либо интерфейсах, реализованных классом или его родителями. Класс Field позволяет получить имя поля, тип и модификаторы.

Class cls = obj.getClass(); Field[] fields = cls.getFields(); for (Field field : fields) < Classfld = field.getType(); System.out.println(«Class name : » + field.getName()); System.out.println(«Class type : » + fld.getName()); >

Если известно наименование поля, то можно получить о нем информацию с помощью метода getField() объекта Class.

Class cls = obj.getClass(); Field fld = cls.getField(«fieldName»);

Методы getField() и getFields() возвращают только открытые члены данных класса. Чтобы получить все поля класса необходимо использовать методы getDeclaredField() и getDeclaredFields(). Данные методы работают точно также, как и их аналоги getField() и getFields(), за исключением того, что они возвращают все поля, включая закрытые и защищенные.

Определение значение полей класса

Класс Field содержит специализированные методы для получения значений примитивных типов: getInt(), getFloat(), getByte() и др. Для установки значения поля, используется метод set(). Для примитивных типов имеются методы setInt(), setFloat(), setByte() и др.

Class cls = obj.getClass(); Field field = cls.getField(«fieldName»); String value = (String) field.get(obj); field.set(obj, «New value»);

9. Определение методов класса в режиме run-time

Метод getMethods() объекта Class возвращает массив открытых методов типа java.lang.reflect.Method. Эти методы могут быть определены не только в классе, но также и в его родителях (суперклассе), либо интерфейсах, реализованных классом или его родителями.

Класс Method позволяет получить имя метода, тип возвращаемого им значения, типы параметров метода, модификаторы и генерируемые исключения.

Class cls = obj.getClass(); Method[] methods = cls.getMethods(); for (Method method : methods) < System.out.println(«Method name : » + method.getName()); System.out.println(«Return type : » + method.getReturnType().getName()); Class[] params = method.getParameterTypes(); System.out.print(«Parameters : «); for (Class paramType : params) < System.out.print(» » + paramType.getName()); >System.out.println(); >

Если известно имя метода и типы его параметров, то можно получить отдельный метод класса :

Class cls = obj.getClass(); Class[] params = new Class[] ; Method method = cls.getMethod(«methodName», params);

10. Вызов метода класса в режиме run-time

Допустим, что имеется класс Reflect, включающий два закрытых поля id и name и несколько методов для определения значений этих полей. Нас будут интересовать только метод setData для определения значений и метод toString для печати значений.

Сначала получаем метод класса. Для этого формируем массив типов параметров метода и вызываем getMethod с наименованием метода класса и списком его параметров params. После этого формируем массив новых значение полей класса args и вызываем метод invoke объекта Method с указанием объекта класса и аргументами. В заключение получаем ссылку на метод toString и распечатываем значения.

Class cls = reflect.getClass(); Class[] params = new Class[] ; Method method = cls.getMethod(«setData», params); Object[] args = new Object[] ; method.invoke(reflect, args); System.out.println(«invoke method toString()n»); method = cls.getMethod(«toString»); System.out.println(method.invoke(reflect));

Источник: java-online.ru

Читайте также:
Что за программа нихром

Все, что необходимо для использования и разработки приложений на Java

У многих начинающих возникают вопросы в чем писать, где и что для этого необходимо скачать.
Начнем с начала.

Java Runtime Environment
Для простого запуска приложений, написанных на Java, вам необходимо установить JRE(Java Runtime Environment).
JRE — это виртуальная Java-машина, которая позволяет только запускать приложения, без возможности разработки.

На данный момент доступна версия 8

Java SE Runtime Environment 8
Для Linux и Solaris Java-апплеты и Java Web Start поддерживаются только 32-разрядной версией.

Java Development Kit
Для разработки Java-приложений необходимо наличие JDK(Java Development Kit).
JDK состоит из набора Java-классов, JRE, компилятора javac, документации и утилит.
Позволяет разрабатывать приложения на Java, все что вам понадобится — любой текстовый редактор и JDK. Компиляция программ происходит в командной строке(терминале).
Скачать JDK 8 можно тут — http://www.oracle.com/technetw. 33151.html

А теперь самое главное — IDE, ведь не всегда удобно в терминале компилировать

Eclipse

Одна из самых простых и популярных IDE для разработки на Java. Очень удобна и проста в использовании. При этом простота не означает малую функциональность, с функциональностью у нее все в порядке. Существует множество плагинов для этой среды позволяющих расширять ее возможности. Одним из главных недостатков можно назвать отсутствие графического редактора форм(вменяемых free-плагинов тоже не нашел), весь интерфейс приходится писать руками. Хотя с другой стороны это не так уж и плохо, для лучшего понимания и полета фантазии

Для использования необходимо предварительно установить JDK

Довольно удобная среда разработки. Так же, как и у Eclipse, достаточная базовая функциональность, также расширяемая. Из положительных моментов можно отметить наличие встроенного редактора форм, что позволяет максимально быстро с минимальными усилиями написать GUI. Но в этом есть и недостаток — код, сгенерированный NetBeans невозможно отредактировать вручную, что не очень хорошо.

с выбором языка, ОС и комплектации.

Если честно, то мало в ней работал и поэтому не скажу, что очень уж удобная, может лучше сказать непривычная. В целом, пару часов поковырять и можно освоить. Присутствует конструктор форм(в отличие от эклипса) и его код можно модифицировать(в отличие от нетбинса), но, тем не менее, он не настолько удобный, как в нетбинсе.

Дополнил ildwine, 2018

Обладает, пожалуй, самой мощной системой интеллектуального завершения кода (Smart Completion) среди всех IDE и не только для Java (Например, для класса, подставляются методы и поля, исходя из контекста проекта, а не перебираются все возможные). Множество сочетаний клавиш и прочие фичи позволяют писать код очень быстро, генерируя огромные куски кода. (Например: Печатаем «psvm», нажимаем Tab, получаем целиком вставленный метод public static void main(String[] args) <>)

Выпускается в двух редакциях: Community Edition и Ultimate Edition. Community Edition является полностью свободной версией, в ней реализована полная поддержка Java SE, Kotlin, Groovy, Scala, а также интеграция с наиболее популярными системами управления версиями. В редакции Ultimate Edition, доступной под коммерческой лицензией, реализована поддержка Java EE, UML-диаграмм, подсчёт покрытия кода, а также поддержка других систем управления версиями, языков и фреймворков.

Официальный сайт http://www.jetbrains.com/

JDeveloper
JDeveloper — бесплатная интегрированная среда разработки программного обеспечения, разработанная корпорацией Oracle. Предоставляет возможность для разработки на языках программирования Java, XML, SQL и PL/SQL, HTML, JavaScript, BPEL и PHP. JDeveloper покрывает весь жизненный цикл разработки программного обеспечения от проектирования, кодирования, отладки, оптимизации и профилирования до его развёртывания.
Производитель отмечает в качестве основной задачи среды — максимальное использование возможностей визуального и декларативного подхода к разработке программного обеспечения в дополнение к удобной среде кодирования. Oracle JDeveloper интегрирована с Oracle Application Development Framework — Java EE-каркасом для создания коммерческих приложений на Java.

Можете дополнить мое описание. Обсуждение IDE и их сравнение приветствуется, а споры будут пресекаться.
Просьба соблюдать культуру общения, порядок и не оффтопить

О нерабочих ссылках просьба сообщать в ЛС

Источник: www.cyberforum.ru

Установка Java в Ubuntu 20.04

Java — популярный язык разработки, на котором написано большое количество приложений, поэтому часто требуется запускать программное обеспечение на Java. Для этого Java необходимо установить и определить переменную JAVA_HOME. В этой инструкции расскажем, как выбрать версию Java и как ее поставить на Ubuntu 20.04.

Перед установкой

Мы будем устанавливать Java на облачном сервере с ОС Ubuntu 20.04. Чтобы заказать сервер, откройте панель управления Selectel. Перейдите в раздел Облачная платформа ⟶ Серверы. Нажмите Создать сервер.

создание сервера

В качестве источника для сервера выберите готовый образ Ubuntu 20.04 LTS 64-bit.

Добавьте подсеть с новым плавающим IP-адресом. Он нужен для подключения к облачному серверу по SSH.

подсеть с плавающим адресом

Укажите остальные настройки, проверьте стоимость сервера и нажмите Создать. Подробная инструкция по созданию сервера есть в базе знаний.

После создания сервера подключитесь к нему по SSH с помощью команды:

В качестве server_IP используйте плавающий адрес, присвоенный серверу. Плавающий IP-адрес можно посмотреть на странице сервера вкладка Порты. Для подключения понадобится пароль для root, его можно найти на вкладке Консоль.

Облачные серверы Selectel

Какую версию Java выбрать

Сейчас версии Java выходят приблизительно раз в полгода. На момент подготовки статьи самая свежая версия — Java 18.

Чем JRE отличается от JDK

  • JRE — среда выполнения, Java Runtime Environment. Наиболее важный компонент JRE — java, он запускает JVM (виртуальную машину Java). JVM же запускает ранее скомпилированные приложения Java, поэтому для создания новых программ JRE недостаточно.
  • JDK — Java Development Kit, полноценный SDK, набор для разработки приложений на Java. В JDK входит JRE, компилятор Java (javac) и разные утилиты и инструменты (например, отладчик jdb).

Большое количество приложений на Java требуют установленную JRE для запуска. Если вам требуется только запускать приложения на Java, подойдет JRE.

Если вы планируете разрабатывать приложения, установите JDK. Часто вместо Java используется понятие JDK.

Читайте также:
Poco launcher что это за программа и нужна

OpenJDK или Oracle JDK

Исходный код Java существует в проекте OpenJDK. Для работы нужны сборки, совместимые со спецификациями Java SE.

Есть две сборки Java:

  • OpenJDK — опенсорсная версия, поддерживается Oracle и сообществом разработчиков;
  • Oracle JDK — проприетарная сборка, выпускается и поддерживается компанией Oracle.

Разницы между свежими релизами Oracle JDK и OpenJDK практически нет. Основное отличие между ними — это лицензирование. С 2019 года для коммерческого использования Oracle JDK нужно покупать лицензию, при этом Oracle будет поставлять обновления. Для некоммерческих целей Oracle JDK бесплатна. OpenJDK можно использовать бесплатно в любых целях.

Установка Open JDK

Установка Open JDK выполняется через apt. Перед установкой обновите списки пакетов:

sudo apt update

Проверьте, установлена ли Java на сервере:

java -version

Если Java не установлена, в выводе будут предложены доступные версии и команды для их установки:

Command ‘java’ not found, but can be installed with: apt install openjdk-11-jre-headless # version 11.0.15+10-0ubuntu0.20.04.1, or apt install default-jre # version 2:1.11-72 apt install openjdk-13-jre-headless # version 13.0.7+5-0ubuntu1~20.04 apt install openjdk-16-jre-headless # version 16.0.1+9-1~20.04 apt install openjdk-17-jre-headless # version 17.0.3+7-0ubuntu0.20.04.1 apt install openjdk-8-jre-headless # version 8u312-b07-0ubuntu1~20.04

Можно установить дефолтную версию Java (поставляется с Ubuntu) или поставить отдельные версии.

Установка версии по умолчанию

По умолчанию в стандартные репозитории Ubuntu 20.04 входит Open JDK 11. Чтобы ее установить, используйте:

sudo apt install default-jre

Проверьте, установилась ли версия:

java -version
openjdk version «11.0.15» 2022-04-19 OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.20.04.1) OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.20.04.1, mixed mode, sharing)

JRE полностью подходит для запуска любого ПО Java. Но, как мы говорили ранее, для компиляции помимо JRE может понадобиться и JDK. Чтобы установить дефолтную версию JDK (при этом установится JRE):

sudo apt install default-jdk

Проверьте версию установившегося компилятора javac:

javac -version
javac 11.0.15

Установка определенной версии OpenJDK

Если вы хотите поставить определенную версию OpenJDK, то укажите версию в команде.

Например, для установки одиннадцатой версии:

sudo apt install openjdk-11-jdk

Например, можно установить OpenJDK 8, на которой работает большое количество приложений:

sudo apt install openjdk-8-jdk

Посмотрите, какая версия Java установилась:

java -version

Установка Oracle Java (Oracle JDK)

Перейдите на официальный сайт Oracle, чтобы скачать архив нужной версии. Мы будем скачивать Java SE Development Kit 16, на момент выпуска статьи это архивный релиз для Java SE Platform.

Скачайте Linux x64 Compressed Archive (для примера мы скачаем архив не на сервер, а на локальный компьютер):

скачивание архива

Отключитесь от сервера и скопируйте архив на сервер:

Downloads/jdk-16_linux-x64_bin.tar.gz — путь до архива на вашем компьютере.

Когда загрузка закончится, подключитесь по SSH к облачному серверу. Уже на сервере распакуйте архив:

tar zxvf jdk-16_linux-x64_bin.tar.gz

Добавьте PPA-репозиторий с установщиком Java — linuxuprising:

sudo add-apt-repository ppa:linuxuprising/java

В выводе появится информация о репозиториях и версиях. Нажмите Enter для продолжения.

Обновите списки пакетов:

sudo apt update

sУстановите Oracle JDK 18:

sudo apt install oracle-java16-installer —install-recommends

Подтвердите соглашение о лицензии, прокрутив до конца и нажав Ok:

лицензионное соглашение

Выберите Yes:

принять соглашение

Посмотрите, какая версия установилась:

java -version

Ответ будет выглядеть так:

java version «16.0.1» 2021-04-20 Java(TM) SE Runtime Environment (build 16.0.1+9-24) Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)

Проверьте, правильная ли версия компилятора javac установилась:

javac -version
javac 16.0.1

Переключение между несколькими версиями Java

Вы можете установить или изменить дефолтную версию Java, если, например, на сервере установлено несколько версий одновременно:

update-alternatives —config java

В выводе будут показаны все установленные версии, активная будет помечена звездочкой:

There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ———————————————————— 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode * 2 /usr/lib/jvm/java-16-oracle/bin/java 1091 manual mode 3 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode Press to keep the current choice[*], or type selection number:

Нажмите Enter, чтобы оставить текущий выбор, или введите номер из столбца Selection той версии, которую хотите сделать дефолтной версией.

То же самое можно сделать с версиями javac:

update-alternatives —config javac

Переменная JAVA_HOME

Множество приложений на Java используют JAVA_HOME. Это переменная окружения — она указывает на путь, по которому установлена Java.

Сначала определите путь, по которому установлена Java:

sudo update-alternatives —config java

В выводе будут все установленные версии и их директории:

There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ———————————————————— 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode * 2 /usr/lib/jvm/java-16-oracle/bin/java 1091 manual mode 3 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode Press to keep the current choice[*], or type selection number:

В выводе показаны следующие пути:

  • OpenJDK 8 — /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java;
  • OpenJDK 11 — /usr/lib/jvm/java-11-openjdk-amd64/bin/java;
  • Oracle Java 16 — /usr/lib/jvm/java-16-oracle/bin/java.

Скопируйте путь до активной версии, затем нажмите Enter. В нашем примере активна Oracle Java 16.

Откройте директорию /etc/environment (это предпочтительный путь до JAVA_HOME) в редакторе nano:

sudo nano /etc/environment

Добавьте строку с JAVA_HOME в конце файла. При этом не включайте в путь часть с bin/:

JAVA_HOME=»/usr/lib/jvm/java-16-oracle»

Введите Ctrl+X, затем Y+Enter — это сохранит файл и закроет редактор. Путь будет заменен.

source /etc/environment

Проверьте, что путь до JAVA_HOME задан верно:

echo $JAVA_HOME

В выводе должна быть именно эта директория:

/usr/lib/jvm/java-16-oracle

Удаление Java

OpenJDK

Чтобы полностью удалить все версии OpenJDK, которые были установлены, используйте команду:

sudo apt purge openjdk*

Для удаления только конкретной версии нужно ее указать, например:

sudo apt purge openjdk-11*
sudo apt purge openjdk-8*

Oracle Java

Чтобы полностью удалить Oracle Java:

sudo apt purge oracle-java*

Для удаления конкретной версии, например, версии 11:

sudo apt purge oracle-java11-installer

Теперь можно удалить PPA-репозиторий:

sudo add-apt-repository —remove ppa:linuxuprising/java

Заключение

В этой инструкции мы рассмотрели отличия версий Java. Посмотрели, как можно запустить виртуальную машину Java (JVM) и как поставить в Ubuntu сразу несколько версий Java.

Источник: selectel.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru