主要观点:JEP 502 已移至 JDK 25 的完成状态,引入计算常量概念,即最多初始化一次的不可变值持有者,新 API 可创建具“延迟不可变性”的对象。
关键信息:
- 针对应用启动因复杂对象急切初始化导致的性能问题,稳定值可按需初始化,能结合 final 字段性能和延迟初始化灵活性。
- 围绕[StableValue]类,其 primary 初始化方法[orElseSet()]确保线程安全和最多一次初始化。
- 扩展到稳定供应者和稳定列表,分别支持初始化逻辑指定和独立元素初始化。
- 稳定值在 JVM 中有特殊处理,使用[@Stable]注解,能进行常量折叠优化。
- 可改变应用初始化策略,按需初始化组件提升启动时间,尤其适用于大型企业应用。
重要细节: - 示例代码展示了在[OrderController]类中使用稳定值获取日志记录器,避免传统懒初始化的问题。
- 在[DataService]类中使用稳定供应者创建数据库连接,仅在首次访问时创建。
- 在[ThreadPool]类中使用稳定列表创建工作线程,仅在首次访问时创建。
- 作为预览 API,需在编译和运行时显式启用,如
javac --release 25 --enable-preview MyApplication.java
和java --enable-preview MyApplication
。预览状态便于收集反馈以完善 API 设计和实现。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。