JavaFX и OpenJDK

Я пытаюсь решить, могу ли я переключиться на JavaFX для пользовательского интерфейса моего приложения Java. Большинство моих пользователей будут использовать Oracle JRE, который интегрировал JavaFX в эти дни. Однако некоторые из них используют OpenJDK (в linux). этой (старый) вопрос предполагает, что OpenJDK имеет дело очень плохо с JavaFX. Согласно этой вопрос, альтернативный OpenJFX будет полностью интегрирован в OpenJDK только в версии 9. Итак, мой вопрос: два раза:

  • поддержка JavaFX в OpenJDK все еще так плоха?
  • если да, есть ли дистрибутивы Linux, которые уже предлагают пакет OpenJFX, поэтому пользователям не придется построить его сами?

5 ответов


JavaFX является частью OpenJDK

сам проект JavaFX является открыть источник и часть проекта OpenJDK.

создание JavaFX из репозитория OpenJDK

вы можете построить открытая версия OpenJDK (включая JavaFX) полностью из источника, который не имеет зависимостей от Oracle JDK или закрытого исходного кода.

обновление: с помощью JavaFX с дистрибутив, предварительно построенный из источников OpenJDK

Как отмечено в комментариях к этому вопросу и в другом ответе, дистрибутивы Debian Linux предлагают двоичную дистибицию JavaFX на основе OpenJDK:

различия между открытым JDK и Oracle JDK в отношении JavaFX

в следующая информация была предоставлена для Java 8. С Java 9, кодировка VP6 устарела для JavaFX и технология развертывания приложений Oracle WebStart/Browser embedded также устарела. Таким образом, будущие версии JavaFX, даже если они распространяются Oracle, скорее всего, не будут включать в себя технологию, которая не является открытым исходным кодом.

Oracle JDK включает некоторое программное обеспечение, которое нельзя использовать из OpenJDK. Существует два основных компонента, которые относятся к JavaFX.

  1. видеокодек ON2 VP6, который принадлежит Google и Google не имеет открытых источников.
  2. технология развертывания приложений Oracle WebStart/Browser Embedded.

это означает, что открытая версия JavaFX не может воспроизводить файлы VP6 FLV. Это не большая потеря, так как трудно найти кодеры VP6 или носители, закодированные в VP6.

другие более общие видеоформаты, такие как H. 264, будут воспроизводиться с открытым версия JavaFX (если у вас есть соответствующие кодеки, предварительно установленные на целевой машине).

отсутствие технологии встроенного развертывания WebStart/Browser действительно связано с самим OpenJDK, а не с JavaFX. Эта технология может использоваться для развертывания приложений, отличных от JavaFX.

было бы здорово, если бы сообщество OpenSource разработало технологию развертывания для Java (и другого программного обеспечения), которая полностью заменила WebStart и браузер Внедренные методы развертывания, позволяющие обеспечить легкий и легкий пользовательский интерфейс для распространения приложений. Я считаю, что для достижения этой цели были начаты некоторые проекты, но они еще не достигли высокого уровня зрелости и принятия.

лично я считаю, что встроенные развертывания WebStart/Browser являются устаревшей технологией, и в настоящее время есть лучшие способы развертывания многих приложений JavaFX (таких как автономные приложения).

кто необходимо создать дистрибутивы Linux OpenJDK, которые включают JavaFX

Это зависит от людей, которые создают пакеты для дистрибутивов Linux на основе OpenJDK (например, Redhat, Ubuntu и т. д.), Чтобы создать RPMs для JDK и JRE, которые включают JavaFX. Затем эти распространители программного обеспечения должны разместить сгенерированные пакеты в своих стандартных репозиториях кода распространения (например, репозитории fedora/red hat network yum). В настоящее время это не делается, но я был бы весьма удивлен, если Пакеты Java 8 Linux не включали JavaFX, когда Java 8 был выпущен в марте 2014.

советы по развертыванию для существенных приложений

Я советую использовать Java автономное приложение режим развертывания.

описание этого режима развертывания:

приложение установлено на локальном диске и работает как автономное программа, использующая частную копию Java и JavaFX runtimes. Этот приложение может быть запущено так же, как и другие native приложений для этой операционной системы, например с помощью настольных ярлык или пункт меню.

вы можете создать автономное приложение либо из дистрибутива Oracle JDK, либо из сборки OpenJDK, которая включает JavaFX. В настоящее время это проще сделать с помощью Oracle JDK.

поскольку версия Java поставляется в комплекте с вашим приложением, вам не нужно заботиться о том, какая версия Java может иметь был предварительно установлен на машине, какие возможности он имеет и совместим ли он с вашей программой. Вместо этого вы можете протестировать приложение на точную версию среды выполнения Java и распространить ее вместе с приложением. Пользовательский интерфейс для развертывания приложения будет таким же, как при установке собственного приложения на компьютере (например, windows .exe или .msi установлен, OS X .dmg, linux .rpm или .дебютантка.)

обновление, апрель 2018: информация о Текущая политика Oracle в отношении будущих разработок


для меня это сработало.

sudo apt-get install openjfx


в качестве быстрого решения вы можете скопировать файл jar среды выполнения JavaFX и те, на которые ссылаются из Oracle JRE (JDK) или любое автономное приложение, которое использует JavaFX (например,JavaFX Scene Builder 2.0):

cp <JRE_WITH_JAVAFX_HOME>/lib/ext/jfxrt.jar     <JRE_HOME>/lib/ext/
cp <JRE_WITH_JAVAFX_HOME>/lib/javafx.properties <JRE_HOME>/lib/
cp <JRE_WITH_JAVAFX_HOME>/lib/amd64/libprism_*  <JRE_HOME>/lib/amd64/
cp <JRE_WITH_JAVAFX_HOME>/lib/amd64/libglass.so <JRE_HOME>/lib/amd64/
cp <JRE_WITH_JAVAFX_HOME>/lib/amd64/libjavafx_* <JRE_HOME>/lib/amd64/

просто убедится у вас есть gtk 2.18 или выше


попробовать obuildfactory.

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

до тех пор наслаждайтесь, сэр:)


согласно Oracle интеграция OpenJDK & javaFX будет на Q1-2014 ( см. дорожную карту:http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html). Итак, для 1-го вопроса ответ заключается в том, что вам нужно подождать до тех пор. Для 2-го вопроса нет другого пути. Итак, теперь идите с java swing или запустите javaFX и подождите