Skip to content

[Feature] 草案:提升 HMCL 的 JAR 版本到 23 #5734

@burningtnt

Description

@burningtnt

概述 | Summary

将用于编译 HMCL 的 JDK 版本,和运行时最低 JRE 版本提升至 Java 23。

  • 开发者:建议使用 JDK 25 开发;
  • 一般用户:推送 JRE 25 + JavaFX 25 的安装包;
  • Windows x86 (32-bit) 用户:推送 JRE 23 的安装包。

原因 | Reason

JEP 454: Foreign Function & Memory API 于 Java 22 进入稳定状态。该 JEP 提供了在不使用 JNI 的前提下,访问本机原生 API 和手动控制堆外内存的能力。
对于 HMCL 而言,我们可以抛弃 JNA 和其中的平台相关动态链接库文件,减小最终 JAR 包体积;将短暂需要大量内存的操作迁移到手动控制的堆外内存,降低 -Xmx 默认值以节约内存。

JEP 479: Remove the Windows 32-bit x86 Port 移除了 Windows x86 架构的支持。自 Java 24 起,OpenJDK 项目不再支持上述系统。因此,停留在 JRE 23 可以继续保留旧系统的兼容性。

另外,现在 JavaFX 会兼容 Java N-2 ,所以 JavaFX 25 也兼容 Java 23,我们可以对所有 64 位平台统一下载 JavaFX 25;JDK 23 - 25 并没有提供非常多好用的 API,不升级到 Java 25 的代价是可以接受的。

风险 | Risks

  1. FFM 因不在 Windows x86 上支持 stdcall 而无法调用任何 WinAPI;
  2. 暂未找到可用于 Windows x86 的 JRE 23 产物发布页,我们可能还得自己从源码构建;

替代方案 | Alternatives

  • 发布第二个 LTS 版本(但我们大概率是没这个精力的)作为最后兼容 Windows x86 的版本,然后迁移到 Java 25,或;
  • 对着 Windows x86 用户竖中指,然后不发布 LTS 版本,直接迁移到 Java 25,或;
  • 使用黑魔法在 Java 21 上使用预览状态的 FFM,且想办法适配 Java 21、22、23 的 FFM API 变动。

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions