# 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/) ## Java 8 功能 **发行日期**:`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/) * 异常链 * Internet 协议版本 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 功能。** 学习愉快!