Java演进:揭示Java语言的发展历程

发表时间: 2024-12-13 15:09

Java平台演进

  • Java平台不断演进,自Java 8发布后持续发展,引入众多新特性
  • 改变发布周期,从多年一版改为每6个月发布一次,加速创新。
  • 性能持续提升,包括吞吐量、暂停时间和内存占用等方面。

Java平台的演进历程

  1. Java 8的重要性:于2014年发布,带来Lambda表达式、Stream API、Optional类等重要特性,成为Java历史上最受欢迎的版本之一,至今仍广泛使用。
  2. 后续版本的演进方向
  3. 加速创新:2017年起改为每6个月发布一次,让开发者更快获取新特性,也便于团队引入和改进功能,如通过预览系统和早期访问构建收集社区反馈,分解大型功能以提升项目规划和用户体验
  4. 性能提升:Java平台在性能方面不断进步,如Java 17在吞吐量、暂停时间和内存占用等方面较之前版本有显著改进。ZGC在Java 15达到生产状态,Java 17中其暂停时间更低;Parallel和G1收集器在Java 17中的平均暂停时间大幅降低,且在数据量增大时表现更好;G1收集器在Java 17中的内存占用开销从Java 8的约20%降至约10%。

主要改进内容

  1. 语言特性
  2. 增强简洁性:Records、Sealed Classes、Text Blocks等。
  3. 改进模式匹配:如Pattern Matching for instanceof和Pattern Matching for Switch。
  4. 其他:如Switch Expressions、Local - Variable Type Inference等。
  5. 工具与库
  6. 实用工具:JEP 408(Simple Web Server)、JEP 413(Code Snippets in Java API Documentation)、Java Shell Tool等。
  7. 功能增强:如Foreign Function & Memory API。
  8. 安全性增强:如Strongly Encapsulate JDK Internals、Enhanced Pseudo - Random Number Generators、JEP 415(Context - Specific Deserialization Filters)。
  9. 可观察性与调试改进:JEP 349(JFR Event Streaming)、JEP 358(Helpful NullPointerExceptions)。
  10. 垃圾收集优化:ZGC相关改进,如ZGC: A Scalable Low - Latency Garbage Collector、ZGC: Uncommit Unused Memory等,以及G1收集器的相关优化。
  11. 基础设施现代化:如迁移版本控制系统(JEP 357、JEP 369)、macOS/AArch64端口(JEP 391)。
  12. 移除和弃用:如移除Concurrent Mark Sweep(CMS)垃圾收集器(JEP 363)、Nashorn JavaScript引擎(JEP 372)等。
  13. 其他杂项:如UTF - 8默认编码(JEP 400)、重新实现Core Reflection(JEP 416)等。

JEP means JDK Enhancement Proposals

参考:

https://openjdk.org/projects/amber/ https://dev.java/future/stewardship/ https://dev.java/evolution/ This JEP is the index of all JDK Enhancement Proposals, known as JEPs.