从Java 1.8到Java 21,发生了很多变化和改进。以下是一些主要的变化和需要注意的事项:
-
模块化系统 (JEP 261):
- 在Java 9中引入,这改变了Java的打包和部署方式。
- 使用
module-info.java
来定义模块和其依赖。
-
接口中的私有方法 (JEP 185):
- 从Java 9开始,接口中可以定义私有方法。
-
局部变量类型推断 (JEP 286):
- 使用
var
关键字进行局部变量类型推断。
- 使用
-
HTTP/2 客户端 (JEP 110):
- 在Java 11中引入了一个新的HTTP客户端API。
-
新的字符串方法:
- 如
isBlank()
,strip()
,stripLeading()
,stripTrailing()
等。
- 如
-
集合工厂方法:
- 例如
List.of()
,Set.of()
,Map.of()
等。
- 例如
-
Stream API的改进:
- 如
takeWhile()
,dropWhile()
等方法。
- 如
-
Optional的改进:
- 如
stream()
,orElseThrow()
等方法。
- 如
-
弃用的APIs:
-
Nashorn JavaScript Engine
在Java 11中被弃用。 -
java.util.Date
的部分方法如after()
,before()
在Java 9中被弃用。
-
-
飞行记录器(JFR, Java Flight Recorder) (JEP 328):文章来源:https://www.toymoban.com/news/detail-854958.html
- 从Java 11开始,JFR已经开源并作为OpenJDK的一部分。
- ZGC (JEP 333):
- 一个可伸缩的、低延迟的垃圾收集器,从Java 11开始可用。
- 新的文件API (JEP 320):
- 提供对文件系统的访问,可以替代老旧的
java.io.File
API。
- Switch表达式的改进 (JEP 361):
- 从Java 14开始,引入了新的switch表达式语法,支持箭头操作和"yield"关键字。
- Records (JEP 395):
- 从Java 16开始,可以使用records来创建不可变的数据载体,减少样板代码。
- 模式匹配 (JEP 406):
- 从Java 17开始,可以使用模式匹配来简化代码,特别是在switch语句和表达式中。
- 外部函数和内存API (JEP 412):
- 从Java 19开始,这个API允许Java代码与本机代码进行更深入的交互。
- 其他语言特性:
- 如文本块、新的包导出/打开语法等。
- 安全性的改进:
- 如对TLS 1.3的支持、加密算法的更新等。
- 工具和库的更新:
- 如JDK内部的工具如javadoc、jlink、jpackage等都得到了更新和改进。
- 移除的特性:
- 例如,Java的浏览器插件在Java 11后被移除。
- 性能改进:
- 每个版本通常都会带来一些性能上的优化和改进。
请注意,上述列表并不详尽,但应该涵盖了主要的变化和改进。在从Java 1.8迁移到Java 21时,建议查阅官方文档以获取更详细的信息和指南。文章来源地址https://www.toymoban.com/news/detail-854958.html
到了这里,关于从Java 1.8到Java 21,发生了很多变化和改进的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!