FreeBSD: Java в браузерах Mozilla Firefox, Chromium, Epiphany и Opera

OpenJDK Как и в описанном ранее случае с Flash, свежеустановленные браузеры Mozilla Firefox, Chromium, Epiphany и Opera для FreeBSD не поддерживают Java. Я не могу сказать, что добавление поддержки Java к любому из указанных браузеров является сложной задачей, однако из-за существования массы устаревших мануалов процесс поиска подходящего «рецепта» в лучшем случае может затянуться на достаточно продолжительное время, а в худшем — закончиться без получения ожидаемого результата.

Краткая историческая справка

В момент моего знакомства с FreeBSD в роли десктопной операционной системы для обеспечения поддержки Java в браузерах Mozilla Firefox, Konqueror и Opera лучше всего подходил плагин из пакета Diablo JDK 1.6 или его аналог из пакета JDK 1.6, собранного с опцией [X] WEB Enable the browser plugin and Java Web Start. Со временем перечисленные браузеры перестали поддерживать данные плагины, в связи с чем пришлось заменить их плагином из пакета OpenJDK 6, собранного с опцией [X] WEB Enable the browser plugin and Java Web Start. И, наконец, совсем недавно IcedTea-Web стал самостоятельным пакетом. В настоящее время только он позволяет обеспечить полноценную поддержку Java в последних версиях браузеров Mozilla Firefox, Chromium, Epiphany и Opera для операционной системы FreeBSD.

Исходные данные

Имеется компьютер с операционной системой FreeBSD, на который установлены браузеры Mozilla Firefox, Chromium, Epiphany и Opera (одновременное наличие всех перечисленных браузеров не является обязательным). Для выполнения Java-апплетов в браузерах будет применяться связка OpenJDK 6 (ни в коем случае не OpenJDK 7, не поддерживающего нужную нам функциональность) с IcedTea-Web. В связи с тем, что OpenJDK 6 зависит от Diablo JDK 1.6, придется установить и его. Все упомянутое программное обеспечение будет устанавливаться из предварительно обновленной коллекции портов.

Быстрая установка Diablo JDK 1.6

Пакет Diablo JDK 1.6 имеет непривычную для пользователей FreeBSD лицензию, запрещающую автоматическую загрузку дистрибутивных файлов diablo-caffe-freebsd7-amd64-1.6.x_xx-xxx.tar.bz2 и tzupdater-x_x_xx-xxxxx.zip со страниц FreeBSD Foundation Java Downloads и Java SE Downloads без ручной установки галочек о прочтении скучного текста на английском языке. В качестве бонуса для читателей моих статей о FreeBSD я буду выкладывать сюда актуальные версии дистрибутивных файлов Diablo JDK 1.6, обновлять команды их загрузки.
В настоящее время для загрузки нужных файлов с этого сайта и последующей установки Diablo JDK 1.6 из портов необходимо выполнить команды:

cd /usr/ports/distfiles
fetch https://sergeysl.ru/wp-content/uploads/freebsd/diablo-caffe-freebsd7-amd64-1.6.0_07-b02.tar.bz2 https://sergeysl.ru/wp-content/uploads/freebsd/tzupdater-1_3_45-2011n.zip
cd ../java/diablo-jdk16
make install clean

При выборе опций сборки порта следует убедиться в том, что галочка [X] TZUPDATE Update the time zone data в окне Options for diablo-jdk 1.6.x.x.x установлена.

Установка OpenJDK 6 и IcedTea-Web

Для установки OpenJDK 6 и IcedTea-Web из портов необходимо выполнить команды:

cd /usr/ports/java/openjdk6
make install clean
cd ../icedtea-web
make install clean

Во время выбора опций сборки портов следует убедиться в том, что галочки [X] ICEDTEA Apply additional patches from IcedTea и [X] PLUGIN Enable the browser plug-in в окнах Options for openjdk6 x_x и Options for icedtea-web x.x.x установлены.
После завершения установки нужно добавить в файл /etc/fstab определения виртуальных файловых систем fdescfs(5) и procfs(5):

fdesc /dev/fd fdescfs rw 0 0
proc  /proc   procfs  rw 0 0

а затем смонтировать эти файловые системы командами:

mount /dev/fd
mount /proc

Добавление поддержки Java в Mozilla Firefox

Для добавления поддержки Java в браузер Mozilla Firefox для текущего пользователя следует создать в папке ~/.mozilla/plugins символическую ссылку на файл /usr/local/lib/IcedTeaPlugin.so командой:

ln -s /usr/local/lib/IcedTeaPlugin.so ~/.mozilla/plugins

После перезапуска браузера Mozilla Firefox можно перейти по специальному адресу about:plugins, убедиться в том, что список Включенные плагины содержит раздел IcedTea-Web Plugin (using IcedTea-Web x.x.x), и начать тестирование добавленной функциональности.

Добавление поддержки Java в Chromium

Добавление поддержки Java в браузер Chromium для текущего пользователя не отличается от аналогичной процедуры для браузера Mozilla Firefox. Если Вы уже добавили поддержку Java в браузер Mozilla Firefox, то браузер Chromium тоже сможет выполнять Java-апплеты, а если Вы не используете браузер Mozilla Firefox, для добавления поддержки Java в браузер Chromium необходимо создать папку ~/.mozilla/plugins, а затем поместить в нее упомянутую выше символическую ссылку на файл /usr/local/lib/IcedTeaPlugin.so командами:

mkdir -p ~/.mozilla/plugins
ln -s /usr/local/lib/IcedTeaPlugin.so ~/.mozilla/plugins

После выполнения указанных команд можно, не перезапуская Chromium, перейти по специальному адресу about:plugins, убедиться в том, что список Подключаемые модули содержит раздел IcedTea-Web Plugin (using IcedTea-Web x.x.x), и начать тестирование добавленной функциональности.

Добавление поддержки Java в Epiphany

Для добавления поддержки Java в браузер Epiphany не требуется выполнять ни какие дополнительные действия. Браузер Epiphany, работающий от имени любого пользователя, готов к выполнению Java-апплетов сразу после описанной выше установки Diablo JDK 1.6, OpenJDK 6 и IcedTea-Web.

Добавление поддержки Java в Opera

Если Вы не изменяли конфигурацию плагинов браузера Opera его штатными средствами, для добавления поддержки Java для текущего пользователя не придется выполнять ни какие дополнительные действия. Как и в случае Mozilla Firefox и Chromium, для просмотра списка Плагины можно перейти по специальному адресу about:plugins и щелкнуть ссылку Обновить плагины. Если эти действия приведут к появлению раздела IcedTea-Web Plugin (using IcedTea-Web x.x.x), можно начать тестирование добавленной функциональности, в противном случае нужно выбрать в главном меню Opera пункт Настройки » Общие настройки… или нажать комбинацию клавиш <Ctrl>+<F12>, в открывшемся окне Настройки перейти на закладку Расширенные, выбрать раздел Содержимое, установить галочку Включить плагины, и нажать кнопку Настроить плагин…, в открывшемся окне Плагины нажать кнопку Сменить путь…, в открывшемся окне Путь к плагинам нажать кнопку Добавить…, в открывшемся стандартном окне выбора файлов выделить папку /usr/local/lib/browser_plugins и нажать кнопку OK, в окне Путь к плагинам нажать кнопку OK, в окне Плагины нажать кнопку Найти… После завершения поиска в списке Обнаруженные плагины появятся все найденные плагины, включая IcedTea-Web Plugin (using IcedTea-Web x.x.x), и сразу после закрытия окон Плагины и Настройки браузер Opera сможет выполнять Java-апплеты.

Заключение

Тестирование описанной конфигурации с браузерами Mozilla Firefox, Chromium и Epiphany не выявило никаких проблем. Java-апплеты, встроенные в посещаемые мной сайты, а также в Веб-интерфейсы используемого нами оборудования выполнялись и выполняются без ошибок, поэтому я надеюсь, что предложенная инструкция окажется полезной всем, кто еще не добавил поддержку Java в браузеры Mozilla Firefox, Chromium и Epiphany.
В отличие от коллег, браузер Opera, интегрированный с перечисленным в данной статье программным обеспечением, часто зависает в момент запуска Java-апплетов, поэтому я не могу рекомендовать эту инструкцию его приверженцам, по крайней мере, в настоящее время.

Понравилась статья?

 Подпишитесь на RSS или почтовую рассылку

 Присоединиться в Twitter, Facebook или Google+

 Поделитесь ссылкой в социальной сети или блоге

29 комментариев к «FreeBSD: Java в браузерах Mozilla Firefox, Chromium, Epiphany и Opera»

  1. В 2006 ставил линуховую яву и через эмулятор линукса подключал к браузерам…

    • Переписываем хэндбук? 🙂

      Можно ссылку на соответствующий раздел русскоязычного handbook’а?

      HP iLo2 с плагином IcedTea-Web у меня на фре работает криво.

      Какой браузер? В чем кривизна? В itweb-settings локальное кэширование включено?

  2. Со временем перечисленные браузеры перестали поддерживать данные плагины, в связи с чем пришлось заменить

    Вы ошибаетесь. У меня отлично работает плагин от diablo jdk
    libjavaplugin_oji.so -> /usr/local/diablo-jdk1.6.0/jre/plugin/i386/ns7/libjavaplugin_oji.so

    • На всякий случай проверил…

      1. pkg_info | grep chromium:
      chromium-15.0.874.121 A mostly BSD-licensed web browser based on WebKit and Gtk+
      Отображает плагин Diablo JDK на странице about:plugins, но пишет Missing plugin вместо выполнения Java-апплетов.

      2. pkg_info | grep epiphany
      epiphany-2.30.6_2 An extremely lightweight and simple web browser for GNOME 2
      Ничего не пишет и не выполняет Java-апплеты.

      3. pkg_info | grep firefox:
      firefox-8.0,1 Web browser based on the browser portion of Mozilla
      firefox-i18n-8.0 Localized interface for Firefox

      Не видит плагин Diablo JDK.

      Konqueror и Opera не использую. Что я делаю не так?

  3. Я тоже сталкивался с ситуациями, когда openjdk и icedtea плагины работали криво или вообще не работали там, где работала нормально родная JRE от Sun (теперь уже Oracle). Чаще всего наблюдалось со всякими интернет-банкингами и веб-интерфейсами IPKVM-ов.

    • Я сам когда-то с этим сталкивался. Но проект развивается. Перейдя на IcedTea-Web около года назад, я приятно удивился, что все, что мне нужно, работает.

  4. Прошу простить слоупочество, но пока не к кому обратиться — нуб. Как бороться с не соответствием версий tzupdater-1_3_42-2011k.zip в 9.0 релиз, когда везде лежит 1.3.45-2012?
    Если, конечно, здесь еще бывает кто-нибудь.

  5. Спасибо за ответ. Но вот это:

    Please open _http://www.oracle.com/technetwork/java/javase/downloads/index.html
    in a web browser and follow the "Download" link for
    "JDK DST Timezone Update Tool - 1_3_42" to obtain the
    time zone update file, tzupdater-1_3_42-2011k.zip.

    вводит меня в ступор. Каким образом оно хочет tzupdater-1_3_42-2011k.zip?
    Или porturgrade -a, а затем -r и -R всего чего что здесь вижу — неправильно? Не судите строго. Или убейте сразу. Я мог бы не смешить читающих, если бы писал в личку. Если это важно.

    • Каким образом оно хочет tzupdater-1_3_42-2011k.zip?

      Таким, что коллекция портов старая. Рекомендую разобраться с тем, что такое коллекция портов FreeBSD. Это одна из основ системы, позволяющая гибко управлять установленным программным обеспечением. portupgrade выполняет обновление программного обеспечения ПОСЛЕ ОБНОВЛЕНИЯ КОЛЛЕКЦИИ ПОРТОВ (не считая запуска с ключом -f, который Вам пока не нужен).

      Не судите строго. Или убейте сразу.

      Я не судья и не убийца, но Ваше отношение к вопросу наводит на неприятные мысли. Я понимаю, что в IT есть куча сложностей и тонкостей, но здесь все подробно расписано в официальном руководстве. Для таких случаев придумана фраза RTFM.

      Я мог бы не смешить читающих, если бы писал в личку. Если это важно.

      Такая личка однозначно попадает в СПАМ.

      • Таким, что коллекция портов старая.


        tbsd90_64# uname -a
        FreeBSD tbsd90_64 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan 3 07:46:30 UTC
        2012 root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
        tbsd90_64# portsnap fetch extract
        tbsd90_64# grep ^TZUPDATE /usr/ports/java/diablo-jdk16/Makefile
        TZUPDATE_VERSION= 1_3_42
        TZUPDATE_TZVERSION= 2011k
        TZUPDATEFILE= tzupdater-${TZUPDATE_VERSION}-${TZUPDATE_TZVERSION}.zip

          • Понятно, оказывается portsnap не удаляет папки, которые были удалены в репозитории. Другими словами, на тот момент когда anonymous сделал portnap fetch extract, в репозитории был удален порт java/diablo-jdk16, в результате чего в /usr/ports остался порт из дистрибутива (9.0-RELEASE). А вы успели обновить дерево портов до того, как порт был удален в репозитории.
            Если кто не в теме, в 9.1-RELEASE этот файл уже не нужен.

    • …попробую cvsup’нуть, хотя это меня пока пугает.

      А Вы не пугайтесь. Handbook прочитайте и вперед. csup и portsnap не кусаются.
      Как только обновите коллекцию портов, заработает portupgrade 😉

      • Спасибо за поддержку. Как только с работой разберусь приступлю к исполнению.

Оставить комментарий