В начало → Gentoo и Java
Gentoo-doc HOME В началоСлед.: Руководство по обновлению Java в Gentoo

Gentoo и Java


1. Руководство по настройке Java в Gentoo
2. Руководство по обновлению Java в Gentoo

1. Руководство по настройке Java в Gentoo

Ссылка на оригинал: http://www.gentoo.org/doc/en/java.xml

                             +  http://ru.wikipedia.org/wiki/Java

Перевод + дополнения: Батогов Е.В a.k.a. JohnBat26

С версии: 1.0.

Обновлено в: 1.4

Дата оригинала:  01.01.2008

Дата перевода: 28.01.2008

1.1. 1. Что такое Java ?

1.1.1. Введение

Java — (произносится /ˈdʒɑːvə/) — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Многие люди, говоря на русском, называют язык «Ява» по аналогии с географическим названием.

Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания апплетов, приложений и серверного программного обеспечения.

Этот объектно-ориентированный  язык, разработанный для запуска на множестве платформ без необходимости повторной компиляции кода для каждой платформы. Хотя программа, написанная на Java, может быть скомпилирована как родная для конкретной платформы, наибольшую популярность Java принесла её переносимость, наряду с другими функциями, такими как сборка мусора (garbage collection).

Программы на Java могут быть транслированы в байт-код, выполняемый на виртуальной джава-машине (JVM) — программе, обрабатывающей байтовый код и передающей инструкции оборудованию, как интерпретатор, но с тем отличием, что байтовый код в отличие от текста обрабатывается значительно быстрее.

Достоинство подобного способа выполнения программ — в полной независимости байт-кода от ОС и оборудования, что позволяет выполнять Java приложения на любом устройстве, которое поддерживает виртуальную машину. Другой важной особенностью технологии Java является гибкая система безопасности, благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Это позволяет пользователям загружать программы, написанные на Java, на их компьютеры (или другие устройства, например, мобильные телефоны) из неизвестных источников, при этом не опасаясь заражения вирусами, пропажи ценной информации, и т. п.

Часто к недостаткам этого подхода относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. Данное утверждение справедливо для первых версий виртуальной машины Java, однако в последнее время оно практически потеряло актуальность. Этому способствовал ряд усовершенствований: применение технологии JITs (Just-In-Time compiler), позволяющей переводить байт-код в машинный код во время исполнения программы с возможностью сохранения версий класса в машинном коде, широкое использование native-кода в стандартных библиотеках, а также аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

Внутри Java существуют 3 основных семейства технологий:

  1. J2EE или Java EE (начиная с v1.5) — Java Enterprise Editon, для создания программного обеспечения уровня предприятия;

  2. J2SE или Java SE (начиная с v1.5) — Java Standard Editon, для создания пользовательских приложений, в первую очередь — для настольных систем;

  3. J2ME, Java ME или Java Micro Edition, для использования в устройствах, ограниченных по вычислительной мощности, в том числе мобильных телефонах, PDA, встроенных системах

Последней версией является версия 1.6, в которой было произведено улучшение системы безопасности, улучшение поддержки XML и скриптового языка Mozilla Rhino, улучшена интеграция с рабочим столом, добавлены некоторые новые возможности в создании графических интерфейсов.

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

1.2. 2.  Перед тем как начать

Если у Вас уже установлена Java, тогда удостоверьтесь, что Вы следовали Java Upgrade Guide.

Новая установка не требует дополнительных приготовлений.

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

1.3.1. Варианты

Gentoo сопровождает многочисленные Runtime Environments (JREs) и Development Kits (JDKs). Среди всех предлагаемых вариантов имеются:

Поставщик

JDK

JRE

The Blackdown Java Kit

dev-java/blackdown-jdk

dev-java/blackdown-jre

Sun's Java Kit

dev-java/sun-jdk

dev-java/sun-jre-bin

The IBM Java Kit

dev-java/ibm-jdk-bin

dev-java/ibm-jre-bin

BEA WebLogic's J2SE Development Kit

dev-java/jrockit-jdk-bin

----------------------------

Таблица 3.1: Выбор JDKs/JREs в Gentoo Linux

Пара Blackdown JRE/JDK  используется по умолчанию для версии 1.4., т.к. Она свободна доступна без дополнительных регистраций. JREs и JDKs от Sun, IBM, и BEA конечно быстрее, но их получение требует немного больше усилий, таких как чтение и подтверждение лицензии перед загрузкой (IBM дополнительно требует Вашей регистрации).

1.3.2. Установка JRE/JDKs

Для установки JDK, принятой по умолчанию для Вашего профиля запустите:

 emerge  virtual/jdk.

Или для установки JRE, принятой по умолчанию для Вашего профиля, запустите:

 emerge virtual/jre.

Недавно Sun провел повторное лицензирование своих JDK и JRE под более дружественной к Linux лицензией. В результате этого, Sun выпустил версию Java 1.5 и выше как свободно загружаемые, без дополнительных трудностей.

Примечание: JDK также включает и JRE, поэтому установив JDK, Вам не нужно устанавливать JRE

1.3.3. Установка других, немного ограничивающих их получение, виртуальных машин

Как уже упоминалось, некоторые из JDKs и JREs требуют, чтобы Вы совершили несколько дополнительных действий перед установкой. Просто запустите emerge для этих пакетов как Вы обычно это делаете. Ebuilds (сборочные файлы) в последствии сообщат Вам, куда идти и что скачать. Затем Вам следует загрузить указанные файлы в каталог: /usr/portage/distfiles. После этого, Вы можете повторно запустить команду emerge, которая на этот раз установит данную JRE/JDK.

1.4. 4. Настройка Вашей виртуальной машины

1.4.1. Введение

Gentoo способен иметь множество  установленных JDKs и JREs  без появления каких-либо конфликтов.

Используя средство  java-config, Вы можете установить умолчания для всей системы (удостоверьтесь, что Вы имеете доступ под root). Пользователи могут также использовать java-config, для установки их персональных настроек по умолчанию.

Примечание: Вы также можете использовать eselect  для изменения системной и пользовательской  виртуальной машины. Смотрите eselect java-vm help.

1.4.2. Установка виртуальной машины по умолчанию

Запущенная команда java-config --list-available-vms даст Вам список всех JREs и JDKs, установленных на Вашей системе. Здесь приведен пример вывода этой команды:

Листинг 1. Список доступных виртуальных машин.

# java-config --list-available-vms
The following VMs are available for generation-2:
1)      Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2)      Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
3)      Blackdown 32bit JRE 1.4.2.03 [emul-linux-x86-java-1.4.2]
4)      Sun 32bit JRE 1.5.0.08 [emul-linux-x86-java-1.5]
5)      Kaffe 1.1.7 [kaffe]
*)      Sun JDK 1.5.0.08 [sun-jdk-1.5]


Символ * показывает текущую активную виртуальную машину (system-vm или user-vm). Имя в скобках ([]) это описатель или номер для конкретной VM. Вы можете использовать описатель или номер для команды: java-config —set-system-vm. Здесь приведён пример по установке системной VM:

Листинг 2. Установка системной виртуальной машины (system-vm)

(По описателю (предпочтительней))
# java-config --set-system-vm blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
(По номеру)
# java-config --set-system-vm 6
Now using sun-jdk-1.5 as your generation-2 system JVM


Как обычный пользователь, Вы можете использовать: java-config --set-user-vm

Примечание

Вам нет необходимости изменять профиль для смены user/system VM.

1.4.3. Установка предпочтительной виртуальной машины

Во время установки различных Java пакетов, виртуальная машина может и будет переключена так, как требуется.

Из-за того, что доступно большое множество виртуальных машин, мы не имеем ресурсов для тестирования и проверки работы каждого пакета их всех.  Таким образом, для гарантии того, что все пакеты установятся гладко и правильно, мы определили список по умолчанию/поддерживаемых виртуальных машин на каждую архитектуру. Вы можете найти этот список в файле: /usr/share/java-config-2/config/jdk-defaults.conf. Когда Вы устанавливаете Java пакеты (через portage), то он обнаруживает одну из этих виртуальных машин в том файле и будет автоматически использовать ту VM, вместо системной VM. Во время установки VM переключается если это необходимо когда, например, ваша системная VM установлена на версию 1.4, но пакет, который Вы устанавливаете, требует как минимум VM версии 1.5. Во время установки он будет использовать предпочтительную версию 1.5 VM, оставляя вашу системную VM не тронутой.

Конечно, Gentoo всегда предлагает выбор, поэтому Вы можете переопределить эти установки по умолчанию в файле: /etc/java-config-2/build/jdk.conf и будете иметь полный контроль тем, какая VM будет использована. Несколько примеров:

Листинг 3. Пример файла: /etc/java-config-2/build/jdk.conf

(Я хочу всегда использовать sun-jdk, т.е sun-jdk-1.4 для 1.4, sun-jdk-1.5 для 1.5, и так далее)
*=sun-jdk


Листинг 4. Пример файла: /etc/java-config-2/build/jdk.conf

(Я хочу всегда использовать sun-jdk-1.5 когда возможно, за исключением случаев, когда 1.3 или 1.4 VM явно необходимы)
*=sun-jdk-1.5


Листинг 5. Пример файла: /etc/java-config-2/build/jdk.conf

# Для 1.3  я предпочитаю  sun-jdk 1.4, но когда она недоступна необходимо использовать ibm-jdk-bin,
# Для 1.4, использовать blackdown-jdk, а для 1.5, использовать sun-jdk 
1.3=sun-jdk-1.4 ibm-jdk-bin
1.4=blackdown-jdk
1.5=sun-jdk


Внимание

Вам нет необходимости изменять этот файл. Если вы измените эти параметры на не поддерживаемую VM, может случиться непредсказуемое. Сведения об ошибках в таком случае будут иметь гораздо меньший приоритет, чем сведения об ошибках с поддерживаемыми Vms.

1.5. 5. Компиляторы

Стандартным Java-компилятором, используемым для сборки, является: javac. Он поставляется с каждым JDK. В добавление к настройке виртуальной машины, используемой на этапе сборки, также возможно настроить какой компилятор использовать. Вы определяете список предпочтительных компиляторов в файле: in /etc/java-config-2/build/compilers.conf.

Листинг 6. файл /etc/java-config-2/build/compilers.conf

# If the ebuild supports it
# it will check the COMPILERS var front to back and
# use the first compiler that is installed

COMPILERS="ecj-3.1 jikes javac"


Некоторый компиляторы не поддерживают все возможные параметры -target и -source.  Как бы то ни было, каждый компилятор в этом списке проверяется, может ли он поддерживать желаемые -source/-target. javac будет работать во всех случаях, когда ни одного подходящего компилятора не найдено. Более детально о каждом компиляторе показано в таблице ниже:

Наименование

Описатель

Пакет

Подробности

javac

javac

N/A

Это компилятор по умолчанию, поставляется с каждой JDK

jikes

jikes

dev-java/jikes

Jikes был изначально разработан IBM. Это анекдот, но он обычно быстрее чем javac. Тем не менее он более педантичный и падает в тех случаях, в которых javac не имеет проблем. Jikes пока не поддерживает синтаксис Java 1.5

Eclipse Compiler for Java

ecj-3.1

=dev-java/eclipse-ecj-3.1*

Этот компилятор используется в Eclipse SDK. Он является достаточно функциональным и быстрым. Также поддерживает синтаксис Java 1.5

1.6. 6. Установка переменной CLASSPATH по умолчанию

Предупреждение:  Опции, рассмотренные в этом разделе являются устаревшими, и будут удалены в будущем. Мы очень рекомендуем не использовать их, так как Ваши Java проекты или приложения могут идеально управлять своими classpaths. Если Вы определили специфичный CLASSPATH по умолчанию, то некоторые приложения могут повести себя неожиданно, так как классы могут вдруг появиться в classpath.

java-config может использоваться для установки системного CLASSPATH, так же как и пользовательского CLASSPATH.  Во-первых Вам необходимо получить список доступных java библиотек, установленных в Вашей системе, которые Вы желаете поместить в CLASSPATH.  Далее приведен пример:

Листинг 7. Список классов

# java-config --list-available-packages
[xerces-2] The next generation of high performance, fully compliant XML parsers in the Apache Xerces family (/usr/share/xerces-2/package.env)
[junit] Simple framework to write repeatable tests (/usr/share/junit/package.env)
[bsh] BeanShell: A small embeddable Java source interpreter (/usr/share/bsh/package.env)
[bcel] The Byte Code Engineering Library: analyze, create, manipulate Java class files (/usr/share/bcel/package.env)
[log4j] A low-overhead robust logging package for Java (/usr/share/log4j/package.env)
...


И вновь, имена в скобках ([]) являются ID для передачи в  java-config —set-system-classpath. Здесь  пример:

Листинг 8. Установка CLASSPATHs

# java-config --set-system-classpath log4j,xerces-2


Примечание

заметьте, что текущая директория (.) не является частью системного CLASSPATH, и должна быть добавлена  в пользовательский профиль

Для обновления Вашего окружения, выйдите их системы, и зайдите вновь. Можно еще сделать

source /etc/profile

Для пользователей, java-config --set-user-classpath создаст ~/.gentoo/java-env-classpath,  который будет затем использоваться в вашем консольном профиле.

Листинг 9. Установка пользовательского classpath.

if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
       source ${HOME}/.gentoo/java-env-classpath
fi


Если Вы действительно хотите иметь системный или пользовательский classpath, Вы можете добавить следующее в Ваш консольный профиль. Но мы советует избегать этого

Листинг 10. Установка CLASSPATH

export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)" 


1.7. 7. Java-плагины для  браузера

1.7.1. Установка плагина

Вы можете установить Java плагин для Вашего Web браузера путем запуска emerge для Java VM  c включенным флагом nsplugin.

Примечание: nsplugin недоступен для всех архитектур. Для проверки доступности плагинов для вашей архитектуры, перед установкой Java VM выполните:

emerge -pv <java-vm>

Portage позволяет установить Вам множество версий плагинов, но только один будет использоваться браузером. Вы можете проверить список доступных плагинов, запустив:

Листинг 11. Просмотр доступных плагинов

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.5
   [2]   blackdown-jre-1.4.2


В примере ниже, sun-jre-bin устанавливается в качестве плагина для браузера:

Листинг 12. Выбор плагина

# eselect java-nsplugin set sun-jre-bin-1.5


Проверка, что правильный плагин был выбран:

Листинг 13. Проверка правильности выбора плагина

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.5  current
   [2]   blackdown-jre-1.4.2


Ресурс http://java.com также предоставляет ссылку для проверки правильности установки плагина .  Дополнительно, если Вы используете браузер, основанный на Mozilla (например Firefox), тогда Вы можете проверить Ваш Java плагин, просто введя: about:plugins в адресной строке.

1.7.2. Плагины на системах с множеством библиотек.

Если Вы работаете на смешанной 64-битной и 32-битной системе (например: на AMD64), то можете использовать только 32-битные плагины.

Для использования 32-битного плагина, Вам необходимо выполнить:

emerge emul-linux-x86-java

с включенным USE-флагом nsplugin.

Листинг 14. Установка 32-битного плагина.

# echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use
# emerge emul-linux-x86-java


Далее проверьте, какие плагины вообще доступны:

Листинг 15. Просмотр доступных плагинов.

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.4.2
  [2]   emul-linux-x86-java-1.5


Хотя, Вы должны выбрать 32-битный браузер (такой как mozilla-firefox-bin) для использования с Вашим 32-битным плагином, 64-битная версия  konqueror использует Вашу Java VM напрямую. Таким образом, возможно использовать 64-битную версию  blackdown с этим браузером без дополнительных настроек.

Теперь выберите правильный плагин для Вашего 32-битного браузера:

Листинг 16. Выбор плагинов

# eselect java-nsplugin set 32bit emul-linux-x86-java-1.5


Проверка, что правильные плагины были выбраны.

Листинг 17. Проверка правильного плагина

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.4.2
  [2]   emul-linux-x86-java-1.5  current


1.8. 8.  USE флаги, используемые с  Java

Установка USE флагов.

Для получения дополнительной информации относительно USE флагов, смотрите главу USE флаги в настольной книге Gentoo

Флаги[4]:

  1. Флаг java добавляет поддержку Java  во множество программ.

  2. Флаг nsplugin добавляет поддержку для браузеров, основанных на Mozilla (включая Firefox). Это необходимо для просмотра апплетов в этих браузерах.

  3. Флаг source включает установку zip архива исходных кодов пакета. Это обычно используется в IDE для присоединения исходников.

  4. Флаг jce добавляет поддержку криптографического расширения Java.

  5. Для Java пакетов, флаг doc включает сборку документации по API, используя javadoc.

1.9. 9.  Дополнительные ресурсы

Off-line ресурсы:

  1. java-config man page

  2. java-config --help

Online ресурсы

  1. Java Project Page

  2.  gentoo-java, gentoo-user, и gentoo-dev списки рассылки

  3. #gentoo и #gentoo-java на irc.freenode.net

  4. Wikipedia's entry for Java

  5. If you have suggestions or questions regarding this document, please email the Gentoo Java team: java@gentoo.org



[4] Для более удобной установки USE-флагов, используйте ufed (Use Flag Editor) (emerge ufed)

В началоСлед.: Руководство по обновлению Java в Gentoo
В начало → Gentoo и Java