Java

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Java and the translation is 100% complete.

Java — это язык программирования, изначально разработанный Sun Microsystems и использующий платформонезависимую виртуальную машину для запуска бинарного кода Java в реальном времени. Этот язык является популярным выбором среди разработчиков, создающих кроссплатформенные бизнес-приложения.

Что такое Java?

Общий обзор

Java — это язык программирования, разработанный Sun Microsystems. Язык является объектно-ориентированным и предназначен для запуска на различных платформах без необходимости перекомпиляции кода для каждой платформы. Хотя программа на Java и может быть скомпилирована в нативный код, изрядную долю популярности языку принесла портируемость, а также некоторые другие возможности, такие как автоматическое управление памятью. Чтобы сделать независимость от платформы возможной, компилятор Java компилирует Java-код в промежуточное представление, называемое «байт–кодом Java» (Java bytecode), которое запускается в JVM (виртуальной машине Java), а не непосредственно в операционной системе.

Для запуска байт-кода Java, необходимо наличие установленной JRE (Java Runtime Environment). JRE предоставляет доступ к основным библиотекам, зависящей от платформы виртуальной машине Java (JVM), плагинам для браузеров и другим вещам. JDK (Java Development Kit) добавляет программные инструменты, такие как компилятор в байт-код и отладчик.

Языки JVM

Виртуальная машина Java используется не только языком программирования Java. Множество языков программирования используют платформу Java и запускаются JVM. Примеры таких языков: Clojure, Apache Groovy, Kotlin или Scala.

Установка виртуальной машины

Выбор

Gentoo предоставляет Java Runtime Environments (JRE) и Java Development Kits (JDK). В числе текущих вариантов имеются:

Производитель JDK
OpenJDK dev-java/openjdk
Eclipse Temurin dev-java/openjdk-bin и dev-java/openjdk-jre-bin

Установка JRE/JDK

Для установки дефолтного JDK из профиля, запустите:

root #emerge --ask --oneshot virtual/jdk

Для установки дефолтного JRE из профиля, запустите

root #emerge --ask --oneshot virtual/jre
Заметка
Имейте ввиду, что JDK также включает в себя JRE; необязательно ставить JRE, если JDK уже был установлен.

Установка headless JRE

Иногда не требуется установка полноценной JRE со всеми возможностями java. При использовании java на сервере часто не требуются такие возможности, как графический интерфейс пользователя, графика, звук или печать. Чтобы установить упрощенную JRE, иногда называемую headless, необходимо изменить некоторые USE-флаги для выбранной разновидности JRE.

ФАЙЛ /etc/portage/package.useНеобходимые изменения USE-флагов
dev-java/openjdk headless-awt -alsa -cups
dev-java/openjdk-bin headless-awt -alsa -cups

В зависимости от используемого профиля Gentoo, эти флаги уже могут быть установлены. Как обычно, проверить, какие USE-флаги установлены для конкретного пакета можно, запустив emerge в режиме pretend:

user $emerge --pretend --verbose virtual/jre

Настройка виртуальной машины Java

Общий обзор

На Gentoo, возможна установка множества разных JDK и JRE без вызова конфликтов.

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

Для отображения списка доступных версий Java (как JRE, так и JDK) можно использовать команду eselect. Ниже приведён пример работы команды:

user $eselect java-vm list
Available Java Virtual Machines:
  [1]   openjdk-8 
  [2]   openjdk-11 
  [3]   openjdk-17
  [4]   openjdk-bin-8  system-vm user-vm

Флаг user-vm отмечает JVM по умолчанию для пользователя. Флаг system-vm отмечает JVM по умолчанию для системы, которая будет использоваться, если пользователь не выберет другую JVM. Число в квадратных скобках (например, [1]) является номером для конкретной JVM. Чтобы установить системную JVM по умолчанию, введите команду:

root #eselect java-vm set system 1

Чтобы установить пользовательскую JVM:

user $eselect java-vm set user 1
Заметка
После изменения пользовательской или системной виртуальной машины (VM), обычно не требуется выполнение команды source /etc/profile в открытых сеансах оболочки. Единственное исключение: такие переменные, как JAVA_HOME, будут по-прежнему указывать на старое местоположение после установки пользовательской виртуальной машины в первый раз, или будут снова указывать на системную виртуальную машину.

Java-плагины браузера

Важно
Поддержка Java плагина была обьявлена устаревшей в JDK 9[1].
Заметка
Обратите внимание, что браузеры, основанные на Chromium версии 42 и выше, а также Firefox версии 52 и выше больше не поддерживают плагины на базе NPAPI[2]. По сути, это полностью отключает плагин Java в современных браузерах.

Для тех, кому необходим браузер с поддержкой Java, есть пакеты www-client/palemoon::palemoon и www-clint/palemoon-bin::palemoon в оверлее palemoon, обеспечивающие долговременную поддержку NPAPI и плагинов Java, использующих его (до версии JDK 8)[3].

USE-флаги для использования с Java

Настройка USE-флагов

Чтобы найти больше информации по USE-флагам, обратитесь к главе USE-флаги Руководства пользователя Gentoo.

USE-флаги

  • java флаг добавляет поддержку Java во множестве программ;
  • флаг nsplugin всё ещё используется пакетом www-plugins/lightspark;

Следующие USE-флаги входят в переменную JAVA_PKG_IUSE, см Gentoo Java USE flags для подробной информации об отдельных USE-флагах для Java:

  • Флаг source устанавливает zip-файл с исходным кодом пакета. Это традиционно используется различными средами разработки (IDE) для «присоединения» исходного кода к используемым библиотекам;
  • Для пакетов Java, флаг doc собирает документацию API с помощью javadoc.

Несколько версий Java

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

root #emerge --ask dev-java/openjdk:8
root #emerge --ask dev-java/openjdk:11
root #emerge --ask dev-java/openjdk:17
root #emerge --ask dev-java/openjdk:21

Версию по умолчанию можно изменить через установки по умолчанию.

Устранение проблем

Циклические зависимости Java 21

Если вы получаете ошибку при установке openjdk:21, сначала установите openjdk-bin:21.

root #emerge --ask dev-java/openjdk-bin:21

Ошибки лаунчера Minecraft

  • Конкретную ошибку, при которой minecraft-launcher аварийно завершается спустя несколько секунд с ошибками «Alarm» и «SaveToBuffer failed», можно устранить, задав USE-флаг threads для пакета net-misc/curl.
  • Если при запуске minecraft-launcher появляется ошибка:
user $./minecraft-launcher
[0229/184549.183275:ERROR:sandbox_linux.cc(346)] InitializeSandbox() called with multiple threads in process gpu-process.

Эту ошибку можно решить, запустив minecraft-launcher следующим образом:

user $MESA_GLSL_CACHE_DISABLE=true ./minecraft-launcher

Смотрите также

Внешние ресурсы

Ссылки

  1. JDK 9 and the Java Plugin, java.com. Retrieved on November 30, 2018
  2. How do I enable Java in my web browser?, java.com. Retrieved on November 30, 2018
  3. Pale Moon future roadmap, palemoon.org. Retrieved on June 28, 2019


Authorship information
This page is based on a document formerly found on gentoo.org.
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg, nightmorph

Editors: please do not add yourself here. Contributions are recorded on each article's associated history page, this list is only present to preserve authorship information, as wiki history does not allow for any external attribution.