# Java (Русский)

"Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года." [1]

## Установка

В репозиториях ArchLinux, с недавнего времени (причина) находится одна Java-машина, доступная для установки — открытая реализация, имеющая название OpenJDK. Закрытая реализация от фирмы Sun доступна в AUR. В Арче для установки рекомендуется OpenJDK.

### OpenJDK JVM

Для того, чтобы запускать программы, написанные на Java, вам понадобится установить OpenJDK. Вместе с ним установится Java Development Kit.

Обратите внимание: Установка openjdk6 или jre повлечет за собой установку Java плагина для Firefox. При возникновении каких-либо проблем с данным плагином, рекомендуется воспользоваться решением, приведенным для Flash-плагина для Firefox: Flash#Plugins_are_installed_but_not_working

    # pacman -S openjdk6

Обратите внимание: Если вы используете non-reparenting window manager, вам нужно раскомментировать необходимые строки в /etc/profile.d/openjdk6.sh

### Sun JVM

Для того, чтобы запускать программы, написанные на Java, вы можете установить Sun JRE из AUR:

После установки необходимо будет перезапустить сеанс пользователя или добавить /opt/java/jre/bin/ в переменную окружения $PATH для использования java.

Для создания программ на языке Java, необходимо установить Sun JDK, который так же доступен теперь только в AUR

Обратите внимание: Для реализации Java от компании Sun, вам понадобится перечитать файл /etc/profile для корректной инициализации переменной окружения JAVA_HOME

    # source /etc/profile

Обратите внимание: Для того, что бы узнать как осуществляется установка пакетов из AUR, рекомендуется прочитать соответствующую статью

### BEA JRockit JIT JVM (+JDK)

Также вы можете попробовать JIT-реализацию Java из AUR. jrockit

## Известные проблемы

### MySQL

JDBC-драйверы используют для подключения URL-адрес и порт для установления соединения, так что подключение считается "удаленным" даже если БД находится на локальной машине. Поэтому необходимо разрешить доступ по сети в настройках MySQL.

### Java и Pulseaudio

Обратите внимание: Скорее всего, эта процедура потребуется только если используется Java 6.

По умолчанию, Java и Pulseaudio не очень хорошо ладят между собой, но это легко исправить с помощью утилиты padsp.

Нижеуказанные пути корректны для версии JVM от Sun. Возможно, Вам потребуется использовать другие пути для OpenJDK).

Во-первых, переименуйте исполняемый файл `java` в `java.bin`

    # mv /opt/java/jre/bin/java /opt/java/jre/bin/java.bin

Затем создайте новый скрипт запуска `/opt/java/jre/bin/java`

    #!/bin/sh
    padsp /opt/java/jre/bin/java.bin "$@"

Убедитесь что созданный скрипт имеет права на выполнение

    # chmod +x /opt/java/jre/bin/java

Вам придется повторять эти действия после каждого обновления Java.

Вы также можете попробовать использовать aoss вместо padsp, которая работает как в ALSA, так и в Pulse. Стоит помнить что подобные хаки иногда работают хорошо, а иногда могут привести к нестабильной работе.

### Подмена имени используемого WM

Вы можете использовать wmname с suckless.org чтобы заставить думать виртуальную машину что Вы используете другой оконный менеджер. Это может решить проблему отображения пользовательского интерфейса Java-программ в оконных менеджерах вроде Awesome или Dwm.

    $ wmname LG3D

Вы должны перезапустить приложение после ввода команды.

Это работает потому что виртуальная машина содержит жестко заданный список известных non-re-parenting window managers. Что характерно, многоие пользователи предпочитают представляться “`LG3D`” - оконным менеджером, являющимся non-re-parenting и который был спонсирован Sun.

Обратите внимание: Вы можете раскомментировать соответствующую строку в скрипте openjdk6.sh/jre.sh находящемся в каталоге `/etc/profile.d/`

## Советы и подсказки

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

Поведение большинства Java-программ может контролироваться изменением переменных окружения. Это можно сделать [2] добавив следующую строку в `~/.bashrc` (или `/etc/profile.d/jre.sh` если хотите чтобы изменения затронули всех пользователей):

    export _JAVA_OPTIONS="-D<option 1> -D<option 2>..."

Например, чтобы использовать системные настройки сглаживания и заставить swing-приложения использовать GTK look and feel:

    export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'

### Рендеринг шрифтов

И реализация от Sun, и open source реализации Java известны неправильным сглаживанием шрифтов. Это можно исправить следующими опциями: `awt.useSystemAAFontSettings=on`, `swing.aatext=true`

### GTK LookAndFeel

Если Ваша программа выглядит ужасно, попробуйте установить стандартный look and feel для компонентов swing: `swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel`.

Некоторые Java-программы настойчиво используют кросс-платформенный Metal look and feel. Иногда в таких случаях можно принудительно заставить приложение использовать GTK look and feel установив следующее свойство:

`swing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel`.

Categories:

- Русский
- Programming language (Русский)