Java/ru

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

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

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

JVM languages
The Java virtual machine is not used exclusively by Java programming language. Multiple programming languages use the Java platform and run on the JVM. Examples of such include: Clojure, Apache Groovy, Kotlin or Scala.

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

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

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

Некоторые JDK и JRE, включая пакеты от Oracle, требуют принятия лицензионного соглашения конечного пользователя (End User License Agreement), или EULA. Если лицензия (например, dlj-1.1) не указана в переменной ACCEPT_LICENSE (находящейся в файле ), тогда JDK/JRE установить не удастся. Более подробно о том, как можно добавить допустимые лицензии в, можно прочитать в главе Лицензии Portage Handbook.

Чтобы избежать какой-либо суматохи с лицензионными ограничениями, рассмотрите установку icedtea-bin, который является открытой реализацией Java из проекта OpenJDK.

Установка виртуальной машины IcedTea GCJ
Виртуальная машина IcedTea доступна в виде исходного кода и требует компиляции байт-кода компилятором Java. Эту начальную установку можно запустить с помощью GNU Compiler for Java (GCJ). Этот компилятор доступен, если GCC собран с USE-флагом.

После того как GCC был пересобран с этим USE-флагом, можно приступить к установке пакета. Из-за бага в Portage, пользователи должны установить и  в самую первую очередь, если эти пакеты не были установлены до этого.

Установка виртуальных машин с ограничениями на скачивание исходного кода
Настройка некоторых JDK и JRE требует некоторых дополнительных действий. Установите пакеты как обычно; если потребуются дополнительные действия, пакеты укажут, куда необходимо перейти и что необходимо загрузить.

Загрузите указанные файлы в каталог, повторно запустите , после чего установка JRE/JDK будет продолжена.

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

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

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

Установить общесистемную виртуальную машину java (VM), используемую по умолчанию, можно, запустив утилиту с административными привилегиями. Пользователи также могут воспользоваться этой утилитой для установки пользовательской виртуальной машины.

Установка виртуальной машины по умолчанию
Запуск команды с опцией   выведет список всех JRE и JDK, установленных в системе. Ниже приведен пример работы команды:

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

Установка системной виртуальной машины с использованием имени (рекомендуемый способ):

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

В качестве обычного пользователя, запустите java-config.

Виртуальные машины Build only
Некоторые виртуальные машины отмечены как build-only, вследствие завершения жизненного цикла (EOL) и/или содержащихся уязвимостей. Эти виртуальные машины не будут автоматически использоваться Gentoo для запуска приложений с использованием Gentoo launcher (скрипт, созданный для переключения виртуальных машин в Java), но все еще будут доступны для использования средой сборки Gentoo, так как некоторые пакеты могут потребовать их для сборки. Настройка такой виртуальной машины в качестве системной или пользовательской машины строго не рекомендуется, так как в таком случае она будет использоваться при запуске, а также ее будут использовать пакеты, не использующие Gentoo launcher для запуска Java-приложений.

Установка переменной CLASSPATH по умолчанию
также можно использовать для установки общесистемной и пользовательской переменной CLASSPATH по умолчанию.

Прежде всего, выведите все доступные библиотеки Java, установленные в системе, которые можно поместить в переменную CLASSPATH. Вот пример вывода:

Опять-таки, имена в квадратных скобках являются идентификаторами для передачи команде. Например:

Обновите среду, выйдя из системы и снова войдя в нее, либо с помощью команды.

Для пользователей, java-config --set-user-classpath создаст, который затем должен быть использован в качестве источника (source) для профиля оболочки.

Чтобы создать общесистемный или пользовательский classpath по умолчанию, добавьте строку, подобную следующей, в профиль оболочки. Это не рекомендуется:

Java-плагины браузера
Управление Java-плагином браузера раньше осуществлялось посредством команды. Это было убрано в целях простоты. Для базового использования, установите выбранную JVM с USE-флагом. Обратите внимание, что плагин от Oracle доступен только для архитектур и.

Также обратите внимание, что браузеры, основанные на Chromium, больше не поддерживают плагины на базе NPAPI, поскольку код был убран в сентябре 2015 года. Список поддерживаемых браузеров уменьшается, но по-прежнему включает в себя Firefox, на момент версии 46.

Для получения более подробной информации, включая выбор JVM, Web Start и multilib, читайте файл README, устанавливаемый с icedtea-web.

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

USE-флаги

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

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

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

 * Java Developer Guide
 * Project:Java/Why_build_from_source
 * Project:Java/Getting_Involved

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

 * The gentoo-java, gentoo-user и gentoo-dev архив почтовой рассылки
 * и на IRC
 * Java 7 and bootstrapping icedtea на форумах Gentoo

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



Предложения и вопросы, касающиеся данной статьи, присылайте на email команды Gentoo Java: