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 и выпустите три разные версии для трех разных платформ, так что в любом случае вам нужен дистрибутив для конкретной платформы.