JavaFX и OpenJDK

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

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

java,javafx-2,javafx,openjdk,

72

Ответов: 5


61 принят

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

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

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

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

Обновление: использование дистрибутива JavaFX, предварительно созданного из источников OpenJDK

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

  • https://packages.qa.debian.org/o/openjfx.html
  • Установите через:

    sudo apt-get install openjfx

Различия между Open JDK и Oracle JDK в отношении JavaFX

Следующая информация была предоставлена ??для Java 8. Начиная с Java 9, кодирование VP6 устарело для JavaFX, а технология развертывания встроенного приложения Oracle WebStart / Browser также устарела . Поэтому будущие версии 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 и Browser Embedded, что позволило бы легко и без труда использовать пользовательский интерфейс для распространения приложений. Я считаю, что некоторые проекты начали выполнять такую ??задачу, но они еще не достигли высокой зрелости и уровня принятия.

Лично я считаю, что развертывание WebStart / Browser Embedded является устаревшей технологией, и в настоящее время существуют лучшие способы развертывания многих приложений 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, linux. Rpm или .deb).

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

  • Будущее обновления JavaFX и других Java-карт Roadman от Дональда Смита, старшего директора по управлению продуктами Oracle.
  • Обновление дорожной карты клиента Java - март 2018 года .

42

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

sudo apt-get install openjfx


6

В качестве быстрого решения вы можете скопировать 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 или выше


3

Попробуйте obuildfactory .

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

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


1

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

Java, JavaFX-2, JavaFX, OpenJDK,
Похожие вопросы
Яндекс.Метрика