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 и 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.
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-флаги
Следующие 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 flagthreads
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
Смотрите также
- Java Developer Guide — covers specific details on Gentoo Java ebuilds.
- Project:Java/Why build from source
- Project:Java/Getting Involved
Внешние ресурсы
- The gentoo-java, gentoo-user и gentoo-dev архив почтовой рассылки
- #gentoo (webchat) и #gentoo-java (webchat) на IRC
- Java 7 and bootstrapping icedtea на форумах Gentoo
Дальнейшая информация доступна оффлайн:
- man java-config
- java-config --help
Ссылки
- ↑ 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
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.