Я пытаюсь решить, могу ли я переключиться на JavaFX для пользовательского интерфейса моего Java-приложения. Большинство моих пользователей будут использовать Oracle JRE, в которую сегодня интегрирован JavaFX. Однако некоторые используют OpenJDK (в Linux). Этот (старый) вопрос предполагает, что OpenJDK очень плохо справляется с JavaFX. Согласно этому вопросу, альтернативный OpenJFX будет полностью интегрирован в OpenJDK только в версии 9. Итак, у меня двоякий вопрос:
- Неужели поддержка JavaFX в OpenJDK все еще так плоха?
- Если да, то есть ли какие-либо дистрибутивы Linux, которые уже предлагают пакет OpenJFX, чтобы пользователям не приходилось создавать его самостоятельно ?
Ответы:
JavaFX является частью OpenJDK
Сам проект JavaFX имеет открытый исходный код и является частью проекта OpenJDK .
Обновление декабрь 2019 г.
Для получения актуальной информации о том, как использовать JavaFX с открытым исходным кодом, посетите https://openjfx.io . Сюда входят инструкции по использованию JavaFX в качестве модульной библиотеки, доступ к которой осуществляется из существующего JDK (например, установка Open JDK ).
Репозиторий с открытым исходным кодом для JavaFX находится по адресу https://github.com/openjdk/jfx .
В связанном исходном местоположении вы можете найти файлы лицензии для открытого JavaFX (в настоящее время эта лицензия соответствует лицензии для OpenJDK: исключение GPL + classpath).
Вики проекта находится по адресу: https://wiki.openjdk.java.net/display/OpenJFX/Main.
Если вы хотите быстро приступить к использованию открытого JavaFX, дистрибутивы Belsoft Liberica JDK предоставляют готовые двоичные файлы OpenJDK, которые (в настоящее время) включают открытый JavaFX для различных платформ.
Для распространения в качестве автономных приложений в Java 14 планируется реализовать JEP 343: Packaging Tool , который «поддерживает собственные форматы упаковки, чтобы конечные пользователи могли выполнять установку естественным образом. Эти форматы включают msi и exe в Windows, pkg и dmg в macOS. , а также deb и rpm в Linux. "для развертывания приложений на основе OpenJFX с собственными установщиками и без дополнительных зависимостей платформы (например, предустановленного JDK).
Старая информация, которая со временем может устареть
Сборка JavaFX из репозитория OpenJDK
Вы можете полностью собрать открытую версию OpenJDK (включая JavaFX) из исходного кода, который не зависит от Oracle JDK или закрытого исходного кода.
Обновление: использование дистрибутива JavaFX, предварительно созданного из источников OpenJDK.
Как отмечено в комментариях к этому вопросу и в другом ответе, дистрибутивы Debian Linux предлагают двоичное распределение JavaFX на основе OpenJDK:
Установить через:
(в настоящее время, насколько мне известно, это работает только для Java 8).
Различия между Open JDK и Oracle JDK в отношении JavaFX
Следующая информация была предоставлена для Java 8. Начиная с Java 9, кодирование VP6 не рекомендуется для JavaFX, а технология развертывания встроенных приложений Oracle WebStart / Browser также не рекомендуется . Таким образом, будущие версии JavaFX, даже если они будут распространяться Oracle, скорее всего, не будут включать какую-либо технологию, не являющуюся открытым исходным кодом.
Oracle JDK включает в себя некоторое программное обеспечение, которое нельзя использовать из OpenJDK. Есть два основных компонента, которые относятся к JavaFX.
Это означает, что открытая версия JavaFX не может воспроизводить файлы FLV VP6. Это небольшая потеря, поскольку трудно найти кодеры VP6 или носители, закодированные в VP6.
Другие более распространенные форматы видео, такие как H.264, будут нормально воспроизводиться с открытой версией JavaFX (если на целевой машине предварительно установлены соответствующие кодеки).
Отсутствие технологии развертывания WebStart / Browser Embedded действительно связано с самим OpenJDK, а не конкретно с JavaFX. Эта технология может использоваться для развертывания приложений, отличных от JavaFX.
Было бы замечательно, если бы сообщество OpenSource разработало технологию развертывания для Java (и другого программного обеспечения), которая полностью заменила бы методы развертывания WebStart и Browser Embedded, обеспечивая приятный легкий и легкий пользовательский интерфейс для распространения приложений. Я считаю, что для достижения этой цели были начаты некоторые проекты, но они еще не достигли высокого уровня зрелости и уровня принятия.
Лично я считаю, что развертывание WebStart / Browser Embedded - это устаревшая технология, и в настоящее время существуют более эффективные способы развертывания многих приложений JavaFX (например, автономных приложений).
Обновление декабрь 2019 г .:
Была разработана версия WebStart с открытым исходным кодом для JDK 11+, которая доступна по адресу https://openwebstart.com .
Кому нужно создавать дистрибутивы Linux OpenJDK, включающие JavaFX
Люди, которые создают пакеты для дистрибутивов Linux на основе OpenJDK (например, Redhat, Ubuntu и т.д.), должны создавать RPM для JDK и JRE, которые включают JavaFX. Затем этим распространителям программного обеспечения необходимо поместить сгенерированные пакеты в свои стандартные репозитории кода распространения (например, репозитории Fedora / Red Hat network yum). В настоящее время это не делается, но я был бы очень удивлен, если бы пакеты Java 8 Linux не включали JavaFX, когда Java 8 будет выпущена в марте 2014 года.
Обновление, декабрь 2019 г . :
Теперь, когда JavaFX отделен от большинства бинарных дистрибутивов JDK и JRE (включая дистрибутив Oracle) и вместо этого доступен либо в виде автономного SDK, либо в виде набора jmods, либо в виде зависимостей библиотеки, доступных из центрального репозитория Maven (как обозначено как https://openjfx.io ), необходимость включения JavaFX в стандартные дистрибутивы Linux OpenJDK меньше.
Если вам нужен предварительно собранный JDK, который включает JavaFX, рассмотрите дистрибутивы Liberica JDK , которые предоставляются для множества платформ.
Консультации по развертыванию важных приложений
Я советую использовать режим автономного развертывания приложений Java .
Описание этого режима развертывания:
Вы можете создать автономное приложение либо из дистрибутива Oracle JDK, либо из сборки OpenJDK, которая включает JavaFX. В настоящее время это проще сделать с помощью Oracle JDK.
Поскольку версия Java связана с вашим приложением, вам не нужно заботиться о том, какая версия Java могла быть предварительно установлена на машине, какие возможности она имеет и совместима ли она с вашей программой. Вместо этого вы можете протестировать свое приложение с точной версией среды выполнения Java и распространить ее вместе с вашим приложением. Пользовательский интерфейс для развертывания вашего приложения будет таким же, как при установке собственного приложения на его машину (например, установленный файл .exe или .msi Windows, .dmg OS X, linux .rpm или .deb).
Примечание. Функция автономного приложения была доступна только для Java 8 и 9, но не для Java 10-13. В Java 14 через JEP 343: Packaging Tool планируется снова обеспечить поддержку этой функции из дистрибутивов OpenJDK.
Обновление, апрель 2018 г .: информация о текущей политике Oracle в отношении будущих разработок
источник
Для меня это сработало.
источник
webupd8 PPA
с Ubuntu иfedy
настольным установщиком для Fedora, есть два быстрых способа установить последнюю версию Oracle JDK / JRE, которая включает JavaFX.apt-get install openjfx
(который в настоящее время работает только для Java 8), вы можете использовать инструкции с веб-сайта openjfx.io , где JavaFX "доступен как SDK для конкретной платформы" в виде числа jmods и как набор артефактов в maven central. ".sudo apt-get install openjfx
, будет по-прежнему поддерживаться и работать для более поздних выпусков JavaFX и ubuntu. Обратите внимание, что пакеты Debian openjfx, похоже, обновляются не так часто, как библиотеки, распространяемые openjfx.io, поэтому, если вы хотите использовать самую последнюю версию, вам, вероятно, лучше всего использовать дистрибутив openjfx.io.В качестве быстрого решения вы можете скопировать файл JAR среды выполнения JavaFX и те, на которые есть ссылки из Oracle JRE (JDK) или любого автономного приложения, использующего JavaFX (например, JavaFX Scene Builder 2.0 ):
просто убедитесь, что у вас gtk 2.18 или выше
источник
Также отвечая на этот вопрос:
Где взять готовые библиотеки JavaFX для OpenJDK (Windows)
В Linux это не проблема, но в Windows это не так просто, особенно если вы хотите распространять JRE.
Фактически вы можете использовать OpenJFX с OpenJDK 8 в Windows, вам просто нужно собрать его самостоятельно:
Загрузите OpenJDK отсюда: https://github.com/AdoptOpenJDK/openjdk8-releases/releases/tag/jdk8u172-b11
Загрузите OpenJFX отсюда: https://github.com/SkyLandTW/OpenJFX-binary-windows/releases/tag/v8u172-b11
скопируйте все файлы из архива OpenFX поверх JDK, вуаля, у вас есть OpenJDK с JavaFX.
Обновление :
К счастью от Azul, теперь есть сборка OpenJDK + OpenJFX, которую можно загрузить на их странице сообщества: https://www.azul.com/downloads/zulu-community/?&version=java-8-lts&os=windows&package=jdk-fx
источник
Попробуйте obuildfactory .
Необходимо изменить эти сценарии (содержат ошибку и не совсем выполняют то, что требуется), я загружу свои сценарии, разветвленные из obuildfactory, в следующие несколько дней. и поэтому я также обновлю свой ответ соответственно.
А пока наслаждайтесь, сэр :)
источник
Согласно Oracle, интеграция OpenJDK и javaFX будет в первом квартале 2014 года (см. Дорожную карту: http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html ). Итак, на первый вопрос ответ таков: вам нужно подождать до тех пор. На второй вопрос другого пути нет. Итак, пока идите с java swing или запустите javaFX и подождите
источник