Работает ли JavaFX после удаления его из кроссплатформенного jdk? - PullRequest
0 голосов
/ 01 октября 2018

JavaFX 11 кросс-платформенный?Как я увидел в openjfx.org, мне нужно загружать релизы для каждой платформы.И если да, могу ли я каким-либо образом использовать его в кроссплатформенной форме?И я должен использовать каждый выпуск javafx для каждого выпуска java?Не говорите мне использовать Maven или что-то в этом роде.Я хочу программировать кроссплатформенное программное обеспечение.И не мульти-релиз программного обеспечения каждого выпуска для каждой ОС.Я загружаю модули после проверки ОС, но могу ли я это сделать?В любом случае, есть много кроссплатформенных библиотек, даже если они имеют собственный код, так почему же OpenJFX этого не делает?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

JavaFX 11 больше не является частью JDK, и теперь он распространяется в двух вариантах:

Когда вы загружаете JavaFX SDK, вам нужно выбрать платформу, так же, как и при установке JDK для вашей платформы.Он остается кроссплатформенным с точки зрения API, поэтому ваш код будет выглядеть одинаково на всех платформах, но он специфичен для каждой платформы с точки зрения SDK / зависимостей.

Причиной этого являются собственные библиотеки, которыев комплекте с каждым SDK.

Если вы посмотрите на три пакета JavaFX 11 SDK, то в каждом из них есть 40 МБ:

  • Windows: 39,7 МБ в архиве, 64,8 МБ вбиблиотеки dll (jfxwebkit.dll имеет только 59,2 МБ) и 15,5 МБ в jar-файлах и исходных кодах.
  • Mac: 39,7 МБ в архиве, 72,2 МБ в библиотеках dylib (libjfxwebkit.dylib имеет только 67,8 МБ) и 15,6 МБв jars и source.
  • Linux: 43,8 МБ в архиве, 84,9 МБ в библиотеках (libjfxwebkit.so имеет только 80,1 МБ) и 15,8 МБ в jars и source.

сейчасвопрос: вы бы объединили три платформы в одну?Общий заархивированный размер 120 МБ, разархивированные нативные библиотеки для трех платформ около 220 МБ?

Об этой проблеме велись споры именно в списке рассылки openjfx-dev , но я считаю, чтоподход правильный.

Если вы используете Maven / Gradle и извлекаете свои зависимости из Maven Central, в Gradle вы должны указать классификатор для вашей платформы.См. Начало работы образец .Maven делает это внутренне, поэтому, даже если вы не установите классификатор, он загружает только файлы jar для вашей платформы.

Так что для обычного проекта, где вы не используете WebView, это может иметь смысл, так какВы будете загружать только необходимые зависимости модулей для вашей платформы: javafx.base, javafx.graphics, javafx.controls и javafx.fxml.

Но пока, и это не то, что можно изменить сейчас, вы получаете независимый от платформы JavaFX API, но с зависящим от платформы JavaFX SDK / modules.

Обратите внимание, что при распространенииПриложение JavaFX, вы будете использовать Jpackager и выпустите три разные версии для трех разных платформ, так что в любом случае вам нужен дистрибутив для конкретной платформы.

0 голосов
/ 01 октября 2018

JavaFX написан на Java, который запускается на JVM, которая является кроссплатформенной.Это означает, что JavaFX также является кроссплатформенным.

Вы загружаете различные выпуски для запуска JVM на своем компьютере.Но ваш код JavaFX может быть запущен в любом из этих выпусков, поэтому он кросс-платформенный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...