java - 关于 OpenJDK 11 和 OpenJFX 11(和 Proguard)的迁移问题

标签 java proguard jlink openjfx

我们目前正在将 Java 应用程序从 Oracle JDK 8(由 JNLP 交付的应用程序代码)迁移到 OpenJDK 11(作为可运行的应用程序代码与 Java 运行时一起交付)。尽管我们在测试环境中或多或少地找到了一个可行的解决方案,但我们仍然存在以下问题:

  • 我们的应用程序需要 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+ 构建?

  • 谢谢你的帮助,彼得。

    最佳答案

    对于您的第三个问题,是 Open Web Start解决方案,它使您能够使用最新的 Java 版本运行 JNLP 文件。它是 Java Web Start 技术的开源重新实现。此替换提供了 Java Web Start 和 JNLP 标准最常用的功能,以便您可以继续使用基于 Java Web Start 和 JNLP 的应用程序,而无需进行任何更改。
    关于你的第四个问题,你可以使用 Jarsigner maven 插件,只要你给它一个私钥和 jar 的签名路径,你就可以了。

    关于java - 关于 OpenJDK 11 和 OpenJFX 11(和 Proguard)的迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53115075/

    相关文章:

    android - 防止 Proguard 删除特定的可绘制对象

    android - Proguard不缩水测试APK

    java - 如何获取Java类的真实模块依赖关系?

    java - mvn jgitflow -- 当 jgitflow 提交中没有可用的 JIRA 编号时推送失败

    c# - 扩展正则语言框架中正则语言的算法复杂度

    java - 在客户端应用程序中声明 REST 服务 api 端点的正确模式?

    android - 如何在我的 Android 库 (AAR) 中包含 proguard 配置

    java - jlinked JRE 中的 "Received fatal alert: handshake_failure"

    java - 从 Mathematica 调用 java 项目

    java - 如何处理 IntutTypeMismatchException 以再次从用户那里获取正确的输入而不重新运行程序?