我们目前正在将Java应用程序从Oracle JDK 8(由JNLP交付的应用程序代码)迁移到OpenJDK 11(作为可运行的应用程序代码与Java Runtime一起交付)。尽管我们在测试环境中或多或少发现了一个可行的解决方案,但仍然存在以下问题:
我们的应用程序需要JavaFX,我们希望使用jlink进行构建。是否建议使用https://gluonhq.com/products/javafx上提供的OpenJFX jmods通过OpenJDK构建适当的jlink映像,还是有其他选择?
OpenJFX jmods似乎目前仅在gluonhq的版本11(为JDK 11编译)中仅正式发布 ,而Proguard模糊处理仅对已编译的代码起作用 适用于JDK版本10(请参见https://sourceforge.net/p/proguard/feature-requests/188/)。不确定何时Proguard也将支持版本11。我们应该等到它出现,还是有什么选择?是一个很好的选择,下载并构建针对版本10的OpenJFX源代码(我不知道是否有可能立即使用),甚至是将Oracle 10 JDK二进制文件和/或它的javafx jmod文件保留为一个好选择。只要Proguard不了解OpenJDK 11代码?
我们还在寻找一种工具,用于为Windows和MacOS创建用户友好的可运行对象(例如,无需注册表修改的自解压可执行文件)。 javapackager现在似乎不可用(http://openjdk.java.net/jeps/343已计划用于OpenJDK 12),并且既不支持交叉编译,也不支持自动更新机制。因此,我们正在寻找一种可以执行以下操作的工具:a)自动更新(在启动时动态加载应用程序代码或新的jlink图像),以及b)构建适用于Windows和MacOS的可运行文件。是否有任何好的工具可以支持类似于Oracle JNLP启动器的自动更新机制的东西,并且可以在生产环境中使用?
对于JNLP,我们应用代码签名。是否仍然建议并可以签名a)位于jlink映像中的我们的应用程序代码和b)动态加载的应用程序代码(均使用JDK11 +构建)?
谢谢您的帮助,彼得。
答案 0 :(得分:0)
第三个问题是Open Web Start解决方案,它使您能够使用最新的Java版本运行JNLP文件。它是Java Web Start技术的开源重新实现。此替换提供了Java Web Start和JNLP标准的最常用功能,因此您可以继续使用基于Java Web Start和JNLP的应用程序,而无需进行任何更改。
关于第四个问题,您可以使用Jarsigner maven插件,只要为其提供私钥和jar的签名路径即可。