t;dr
两家供应商提供了Java 17、21和当前22版本的JDK/JRE产品,并与实现JavaAzul Systems和BellSoft的现代一代OpenJFX库Bundle 在一起.
细节
JavaFX和never是Java的标准部分.
并且要明白,Javascript现在在开源项目OpenJFX中实现了.该项目正在由甲骨文公司和Gluon公司共同领导的持续积极开发中.
几年前,Oracle Select 将JavaFX库与它的一些JDK/JRE产品Bundle 在一起.后来,他们停止了Bundle .
Oracle只是提供JDK/JRE产品的几家供应商之一.关于Java生态系统的解释,请参见Java Is Still Free.
一些JDK/JRE供应商目前 Select 在其产品的某些版本中Bundle 实现为OpenJFX的JavaFX库.我知道至少有两个这样的供应商:
2017年,这Java Platform Module System名成员在Java 9及以后出现.上面列出的供应商为模块化的LTS版本11、17和21以及当前版本(现在是22)提供了JavaFX包.
Javascript 22需要JDK/JRE 17或更高版本.
或者,您可以在应用中Bundle OpenJFX库,也可以在应用中Bundle 一个JRE,并 Select 性地将JRE精简为仅包含应用使用的部分. OpenJDK项目提供工具来帮助:jlink和jpackage.
这项尖端技术使用GraalVM从您的Javascript项目中生成一个原生应用程序.
你问:
但是,JRE不支持模块路径显然是因为它太老了.
Java 9和更高版本的Java平台模块系统(JPMS).关注LTS版本(11,17,21)和当前版本(22),因为other versions已经达到了EOL(生命周期 终止).最新版本的OpenJFX支持Java 17及更高版本.
在非开发人员计算机上运行应用程序有哪些选项?
如果您可以控制用户机器,例如在企业或教育环境中,请考虑让系统管理员安装与必要的OpenJFX库Bundle 在一起的JRE.
在利基市场中,也许您可以要求您的用户安装与OpenJFX库Bundle 的JRE.
在一个广泛的零售市场中,您需要在应用中Bundle JVM和OpenJFX库.应用市场(如Apple App Store)将接受这样的产品.
(注意,JRE是60MB,JDK是190MB).
通过在JPMS模块化项目中使用jlink工具,您可以极大地减小该大小.
为什么默认的JRE下载太旧了?
"为什么"简单地说,Oracle后来决定停止将JavaFX库与他们自己的JDK/JRE产品Bundle 在一起.
但您可以免费将OpenJFX库Bundle 在您的应用程序中.
而且,您可以 Select 从Oracle以外的供应商获得与OpenJFX库Bundle 的最新版本的Java JDK/JRE.您可以获得免费产品以及付费支持的产品.
我的应用与openjdk编译17.0.9 2023—10—17
然后,你可以在编译Java 17时使用OpenJFX 22.