# Java 版本和新功能

> 原文： [https://howtodoinjava.com/java-version-wise-features-history/](https://howtodoinjava.com/java-version-wise-features-history/)

Java 版本 7 或 8 中的**新 Java 功能是什么？ 这些是 Java 面试中经常被问到的问题。**

在此页面中，我依次列出了所有 **JDK 从 JDK 1.x 到 Java SE 12** 的更改。 尽管我已尽力涵盖了我所能收集的全部信息，但是，如果您知道我在下面遗漏的内容，请告诉我，我将添加该信息。

## Java 12 功能

[Java 12](https://howtodoinjava.com/java12/new-features-enhancements/) （于 2019 年 3 月 19 日发布）是 JDK 的最新版本。 让我们看看它为开发人员和建筑师带来的新功能和改进。

*   Stream API 中的 Collectors.teeing()
*   字符串 API 的更改
*   Files.mismatch（路径，路径）
*   紧凑数字格式
*   支持 Unicode 11
*   切换表达式（预览）

## Java 11 功能

[Java 11](https://howtodoinjava.com/java11/features-enhancements/) （于 2018 年 9 月发布）包含许多重要且有用的更新。 让我们看看它为开发人员和建筑师带来的新功能和改进。

*   HTTP 客户端 API
*   启动不编译的单文件程序
*   字符串 API 的更改
*   Collection.toArray（IntFunction）
*   Files.readString()和 Files.writeString()
*   Optional.isEmpty()

## Java 10 功能

Java 9 发布后，Java 10 很快问世。 与以前的版本不同，Java 10 没有那么多令人兴奋的功能，但它仍然[很少有重要更新](https://howtodoinjava.com/java10/java10-features/)，它们会改变您的编码方式以及其他将来的 Java 版本。

*   [JEP 286：局部变量类型推断](https://howtodoinjava.com/java10/var-local-variable-type-inference/)
*   JEP 322：基于时间的发行版本控制
*   JEP 304：垃圾收集器接口
*   JEP 307：用于 G1 的并行全 GC
*   JEP 316：备用存储设备上的堆分配
*   JEP 296：将 JDK 林整合到单个仓库中
*   JEP 310：应用类 - 数据共享
*   JEP 314：其他 Unicode 语言标签扩展
*   JEP 319：根证书
*   JEP 317：基于 Java 的实验性 JIT 编译器
*   JEP 312：线程本地握手
*   JEP 313：删除本机头生成工具
*   新增的 API 和选项
*   删除的 API 和选项

## Java 9 功能

Java 9 在`September, 2017`上可用。 最大的变化是模块化，即 Java 模块。

Java 9 中的一些重要功能/ [更改是：](https://howtodoinjava.com/java9/java9-new-features-enhancements/)

*   [Java 平台模块系统](https://howtodoinjava.com/java9/java-9-modules-tutorial/)
*   [接口专用方法](https://howtodoinjava.com/java9/java9-private-interface-methods/)
*   HTTP 2 客户端
*   JShell – REPL 工具
*   平台和 JVM 日志记录
*   处理 API 更新
*   集合 API 更新
*   [流 API](https://howtodoinjava.com/java9/stream-api-improvements/) 的改进
*   多版本 JAR 文件
*   @不推荐使用的标签更改
*   栈走
*   Java 文档更新
*   其他功能

请在此处查看更新的发行信息[。](https://openjdk.java.net/projects/jdk9/)

## Java8 功能

**发行日期**：`March 18, 2014`

代号文化被删除。 包括的功能包括：

*   API 中的 [Lambda 表达式](//howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/)支持
*   [流 API](https://howtodoinjava.com/java8/java-streams-by-examples/)
*   [功能接口](//howtodoinjava.com/java8/functional-interface-tutorial/)和[默认方法](//howtodoinjava.com/java8/default-methods-in-java-8/)
*   [可选](//howtodoinjava.com/java8/java-8-optionals-complete-reference/)
*   Nashorn – JavaScript 运行时，允许开发人员将 JavaScript 代码嵌入应用中
*   Java 类型注释
*   [无符号整数运算](//howtodoinjava.com/java8/java-8-exact-airthmetic-operations-supported-in-math-class/)
*   重复注释
*   [新日期和时间 API](//howtodoinjava.com/java8/date-and-time-api-changes-in-java-8-lambda/)
*   静态链接的 JNI 库
*   从 jar 文件启动 JavaFX 应用
*   从 GC 中删除永久生成

## Java SE 7 功能

**发行日期**：`July 28, 2011`

此版本称为“海豚”。 包括的功能包括：

*   JVM 对动态语言的支持
*   压缩的 64 位指针
*   [开关](//howtodoinjava.com/java-7/string-class-is-supported-in-switch-statement-in-java-7/)中的字符串
*   [尝试声明中的自动资源管理](//howtodoinjava.com/java-7/automatic-resource-management-with-try-with-resources-in-java-7/)
*   [钻石运算符](//howtodoinjava.com/java-7/improved-type-inference-in-java-7/)
*   简化的 varargs 方法声明
*   二进制整数字面值
*   [数字字面值下划线](//howtodoinjava.com/java-7/improved-formatted-numbers-in-java-7/)
*   [改进的异常处理](//howtodoinjava.com/java-7/improved-exception-handling-in-java-7/)
*   [ForkJoin 框架](//howtodoinjava.com/java-7/forkjoin-framework-tutorial-forkjoinpool-example/)
*   [NIO 2.0](//howtodoinjava.com/category/java-7-features/nio/) 具有对多个文件系统，文件元数据和符号链接的支持
*   [WatchService](//howtodoinjava.com/java-7/auto-reload-of-configuration-when-any-change-happen/)
*   Timsort 用于对对象的集合和数组进行排序，而不是归并排序
*   图形功能的 API
*   支持新的网络协议，包括 SCTP 和套接字直接协议

## Java SE 6 功能

**发行日期**：`December 11, 2006`

此版本称为“野马”。 Sun 从版本号中删除了“ .0”，版本变为 Java SE6。所包含的功能包括：

*   脚本语言支持
*   性能提升
*   JAX-WS
*   JDBC 4.0
*   Java 编译器 API
*   JAXB 2.0 和 StAX 解析器
*   可插拔注释
*   新的 GC 算法

## J2SE 5.0 功能

**发行日期**：`September 30, 2004`

此版本称为“老虎”。 此发行版中添加了 Java 采访中要求的大多数功能。

版本也称为 5.0，而不是 1.5。 包括的功能在下面列出：

*   [泛型](//howtodoinjava.com/java/generics/complete-java-generics-tutorial/)
*   [注解](//howtodoinjava.com/2014/06/09/complete-java-annotations-tutorial/)
*   自动装箱/拆箱
*   [枚举](//howtodoinjava.com/java-5/guide-for-understanding-enum-in-java/)
*   瓦拉格斯
*   [增强的`for each`循环](//howtodoinjava.com/java/basics/enhanced-for-each-loop-in-java/)
*   [静态导入](//howtodoinjava.com/java/basics/static-import-declarations-in-java/)
*   `java.util.concurrent`中新的[并发工具](//howtodoinjava.com/java-5/java-executor-framework-tutorial-and-best-practices/)
*   `Scanner`类，用于解析来自各种输入流和缓冲区的数据。

## J2SE 1.4 功能

**发行日期**：`February 6, 2002`

此版本称为“ Merlin”。 包括的功能包括：

*   [`assert`](//howtodoinjava.com/tutorials/java-keywords/assert/)关键字
*   [正则表达式](//howtodoinjava.com/java-regular-expression-tutorials/)
*   异常链
*   互联网协议版本 6（IPv6）支持
*   [新的 I / O； 蔚来](//howtodoinjava.com/java-nio-tutorials/)
*   记录 API
*   图像 I / O API
*   集成的 XML 解析器和 XSLT 处理器（JAXP）
*   集成的安全性和加密扩展（JCE，JSSE，JAAS）
*   Java Web Start
*   首选项 API（java.util.prefs）

## J2SE 1.3 功能

**发行日期**：`May 8, 2000`

该版本称为“ Kestrel”。 包括的功能包括：

*   热点 JVM
*   Java 命名和目录接口（JNDI）
*   Java 平台调试器架构（JPDA）
*   Java 声音
*   复合代理类

## J2SE 1.2 功能

**发行日期**：`December 8, 1998`

此版本称为“游乐场”。 就添加的类数而言，这是一个主要版本（几乎是其大小的三倍）。 引入“ J2SE”一词是为了区分代码平台与 J2EE 和 J2ME。 包括的功能包括：

*   `strictfp`关键字
*   Swing 图形 API
*   Sun 的 JVM 首次配备了 JIT 编译器
*   Java 插件
*   [收藏框架](//howtodoinjava.com/java/collections/useful-java-collection-interview-questions/)

## JDK 1 功能

**发行日期**：`January 23, 1996`

这是[初始版本](https://web.archive.org/web/20080205101616/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml)，最初称为 **Oak** 。 它具有非常不稳定的 API 和一个名为 **WebRunner** 的 Java Web 浏览器。

第一个稳定版本 JDK 1.0.2 被称为 Java 1。

1997 年 2 月 19 日，发布了 JDK 1.1，其中列出了一些主要功能，例如：

*   AWT 事件模型
*   内部班
*   JavaBeans
*   JDBC
*   RMI
*   [反射](//howtodoinjava.com/java/related-concepts/real-usage-examples-of-reflection-in-java/)仅支持自省，无法在运行时进行修改。
*   Windows 的 JIT（即时）编译器

同样，随时建议我在上面的列表中错过的任何 Java 版本中的 **Java 功能。**

学习愉快！