Java 25 引入了用于延迟不可变性的稳定值 API 以及改进的应用程序启动

主要观点:JEP 502 已移至 JDK 25 的完成状态,引入计算常量概念,即最多初始化一次的不可变值持有者,新 API 可创建具“延迟不可变性”的对象。
关键信息

  • 针对应用启动因复杂对象急切初始化导致的性能问题,稳定值可按需初始化,能结合 final 字段性能和延迟初始化灵活性。
  • 围绕[StableValue]类,其 primary 初始化方法[orElseSet()]确保线程安全和最多一次初始化。
  • 扩展到稳定供应者和稳定列表,分别支持初始化逻辑指定和独立元素初始化。
  • 稳定值在 JVM 中有特殊处理,使用[@Stable]注解,能进行常量折叠优化。
  • 可改变应用初始化策略,按需初始化组件提升启动时间,尤其适用于大型企业应用。
    重要细节
  • 示例代码展示了在[OrderController]类中使用稳定值获取日志记录器,避免传统懒初始化的问题。
  • 在[DataService]类中使用稳定供应者创建数据库连接,仅在首次访问时创建。
  • 在[ThreadPool]类中使用稳定列表创建工作线程,仅在首次访问时创建。
  • 作为预览 API,需在编译和运行时显式启用,如javac --release 25 --enable-preview MyApplication.javajava --enable-preview MyApplication。预览状态便于收集反馈以完善 API 设计和实现。
阅读 141
0 条评论