Java

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Java and the translation is 78% complete.
Outdated translations are marked like this.

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 и dev-java/openjdk-bin
Eclipse Temurin 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/icedtea headless-awt -alsa -cups
dev-java/icedtea-bin headless-awt -alsa -cups
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-config с опцией --list-available-vms выведет список всех JRE и JDK, установленных в системе. Ниже приведен пример работы команды:

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

Символ * означает, что эта виртуальная машина является активной JVM (системной или пользовательской, если последняя установлена). Имя в квадратных скобках ([]) обозначает имя или идентификатор данной виртуальной машины. Установить виртуальную машину можно, передав ее имя или номер в качестве аргумента команде java-config --set-system-vm. Следующий пример показывает, как можно установить системную виртуальную машину.

root #eselect java-vm set system 1

Альтернативный способ: выбор виртуальной машины с помощью номера:

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 в современных браузерах.

For those who need a Java-enabled browser for a specific use case, there is e.g. palemoon/palemoon-bin available in the palemoon overlay, which has long-term support for NPAPI and thus Java plugins up to JDK 8[3].

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

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

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

USE-флаги

  • java флаг добавляет поддержку Java во множестве программ
  • флаг nsplugin добавляет поддержку браузеров, похожих на Mozilla (включая Firefox). Это нужно для просмотра Java-апплетов в браузерах, похожих на Mozilla.

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

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

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

Minecraft launcher errors

  • A specific error in which minecraft-launcher crashed after a few seconds, throwing "Alarm" and "SaveToBuffer failed" error was solved by setting the USE flag threads for net-misc/curl.
  • When executing minecraft-launcher the following error was produced:
user $./minecraft-launcher
[0229/184549.183275:ERROR:sandbox_linux.cc(346)] InitializeSandbox() called with multiple threads in process gpu-process.

This was solved by executing minecraft-launcher with the following option:

user $MESA_GLSL_CACHE_DISABLE=true ./minecraft-launcher

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

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

Дальнейшая информация доступна оффлайн:

  • man java-config
  • java-config --help

Ссылки

  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

This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.