JavaFX и OpenJDK



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




  • Это JavaFX поддержка в OpenJDK все еще так плоха?

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

1004   5  

5 ответов:

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

сам проект JavaFX является open source и часть проекта 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/обозревателя встроенная технология развертывания приложений также рекомендуется использовать. Таким образом, будущие версии 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 Embedded действительно связано с самим OpenJDK, а не с JavaFX в частности. Эта технология может быть использована для развертывания приложений, отличных от JavaFX.

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

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

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

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

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

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

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

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

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

поскольку версия Java входит в комплект вашего приложения, вам не нужно заботиться о том, какая версия Java может иметь была предварительно установлена на машине, какие возможности она имеет и совместима ли она с вашей программой. Вместо этого вы можете протестировать свое приложение против точной версии среды выполнения Java и распространять ее вместе с вашим приложением. Пользовательский интерфейс для развертывания вашего приложения будет таким же, как установка собственного приложения на своей машине (например, windows .exe или .установлен msi, OS X .dmg, Линукс .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 и подождите

Comments

    Ничего не найдено.