从版本9开始,Java每6个月就会有新功能,因此很难跟踪这些新更改。 互联网上的大多数信息都描述了最近两个Java版本之间的变化。 但是,如果您的情况与我相似,则说明您使用的不是Java的最新版本,而是使用了较旧的Java版本。
然后,知道自您现在使用的版本以来,或者在您现在使用的版本与您要开始使用的版本之间添加了哪些新功能很有用。 因此,对于每个新的Java版本,我已经编译了一个表,其中包含自Java 8起添加的所有新功能。 第一个表包含Java语言的更改,第二个表包含该语言之外的其他内容,例如命令行工具或JVM改进。
请注意,我没有包括所有新功能和API附加功能,只有最有用的功能。 为了使清单简短,有一些我不常用的新功能。
您可以在下面找到表格:
- 新的Java语言功能
- OpenJDK中的新工具和功能
- 不推荐使用/已删除的功能和API
自Java 8以来的新Java语言功能
特征 | 以来 | 从此开始预览/孵化 |
记录类型 | 14 | |
instanceof的模式匹配 (如果(x instanceOf String){x在这里是String} | 14 | |
文字区块 | 13 | |
开关表达式 (也在JDK 13中为JEP 354 ) | 14 | 12 |
CompletionStage类中异常的新变体(异步,组件) | 12 | |
字符串API的改进 (缩进,转换) | 12 | |
CompactNumberFormat类 | 12 | |
字符串API的改进 (重复,isBlank,条带,行) | 11 | |
Lambda参数的局部变量语法 | 11 | |
新的HTTP客户端API | 11 | 9 |
局部变量类型推断 | 10 | |
流API(反应流) | 9 | |
Java Platform Module System(模块) | 9 | |
收集工厂方法 | 9 | |
流API的改进 (takeWhile,dropWhile,ofNullable,条件迭代) | 9 | |
多分辨率图像API | 9 | |
堆栈步行API | 9 | |
this.getClass()。getPackageName() | 9 | |
流程API更新 (有关流程的详细信息,例如ID,onExit,destroy) | 9 | |
CompletableFuture API增强功能 (延迟,超时) | 9 | |
接口私有方法 | 9 | |
从and forRemoval弃用注解 | 9 | |
接口默认方法和静态方法 | 8 | |
方法参考 | 8 | |
选修课 | 8 | |
Lambda表达式 | 8 | |
功能接口 | 8 | |
流API | 8 | |
有效的最终变量 | 8 | |
重复注释 | 8 | |
新日期时间API | 8 |
自OpenJDK 8以来的新JDK工具和功能
工具/功能 | 以来 | 自实验 |
包装工具 | 14 | |
有用的NullPointerExceptions | 14 | |
雪兰多GC | 12 | |
Epsilon(无操作)GC | 11 | |
Z气相色谱 | 11 | |
基于Java的实验性JIT编译器 (Graal VM) | 10 | |
Docker容器支持 (-XX:-UseContainerSupport) | 10和 8u191 | |
灵活的堆大小选择 (-XX:MaxRAMPercentage) | 10和 8u191 | |
应用类别-数据共享 | 10 | |
捷联 | 9 | |
JShell(Java REPL) | 9 | |
多版本JAR文件 | 9 | |
紧凑弦 | 9 |
不推荐使用/已删除的功能和API:
功能/ API | 自弃用 | 自从删除 |
Solaris和SPARC端口 | 14 | |
ParallelScavenge + SerialOld GC组合 | 14 | |
气相色谱仪 | 9 | 14 |
Pack200工具和API | 11 | 14 |
Nashorn JavaScript引擎 | 11 | |
Java FX (已移至OpenJFX ) | 11 | |
Java EE和CORBA模块 | 9 | 11 |
javah本机头 生成器 | 10 | |
jhat堆可视化器 | 9 | |
启动时JRE版本选择 | 9 | |
很少使用的GC组合 | 8 | 9 |
Applet API | 9 |
有关更多详细信息, 尽管浏览了Java的所有历史记录,但javaalmanac.io/目录对于浏览Java中的更改非常有用。 它可以为您提供所选Java版本之间 (例如Java 8和Java 11之间)的API的完全不同。 非常有用,如果您正在考虑迁移到特定的Java版本。
翻译自: https://www.javacodegeeks.com/2020/03/new-features-between-java-8-and-java-14.html