Java
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 listAvailable 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:8root #emerge --ask dev-java/openjdk:11root #emerge --ask dev-java/openjdk:17root #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Смотрите также
- Java Developer Guide — covers specific details on Gentoo Java ebuilds.
- Project:Java/Why build from source
- Project:Java/Getting Involved
Внешние ресурсы
- Настройка Java в отдельном каталоге с помощью jEnv
- #gentoo (webchat) и #gentoo-java (webchat) на IRC
Ссылки
- ↑ JDK 9 and the Java Plugin, java.com. Retrieved on November 30, 2018
- ↑ How do I enable Java in my web browser?, java.com. Retrieved on November 30, 2018
- ↑ Pale Moon future roadmap, palemoon.org. Retrieved on June 28, 2019
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.