多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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 的最新版本。 让我们看看它为开发人员和架构师带来的新特性和改进。 * 流 API 中的`Collectors.teeing()` * 字符串 API 的更改 * `Files.mismatch(Path, Path)` * 紧凑数字格式 * 支持 Unicode 11 * `switch`表达式(预览) ## 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 在 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 文件 * `@Deprecated`标签更改 * 栈遍历 * Java 文档更新 * 其他特性 [请在此处查看更新的发行信息。](https://openjdk.java.net/projects/jdk9/) ## Java8 特性 **发行日期**:2014.3.18 代号文化被删除。 包括的特性包括: * 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/) * [`Optional`](//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 特性 **发行日期**:2011.7.28 此版本称为“海豚”。 包括的特性包括: * JVM 对动态语言的支持 * 压缩的 64 位指针 * [`switch`中的字符串](//howtodoinjava.com/java-7/string-class-is-supported-in-switch-statement-in-java-7/) * [`try`语句中的自动资源管理](//howtodoinjava.com/java-7/automatic-resource-management-with-try-with-resources-in-java-7/) * [菱形运算符](//howtodoinjava.com/java-7/improved-type-inference-in-java-7/) * 简化的可变参数方法声明 * 二进制整数字面值 * [数字字面值下划线](//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 特性 **发行日期**:2006.12.11 此版本称为“野马”。 Sun 从版本号中删除了“`.0`”,版本变为 Java SE6。所包含的特性包括: * 脚本语言支持 * 性能提升 * JAX-WS * JDBC 4.0 * Java 编译器 API * JAXB 2.0 和 StAX 解析器 * 可插拔注解 * 新的 GC 算法 ## J2SE 5.0 特性 **发行日期**:2004.9.30 此版本称为“老虎”。 此发行版中添加了 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`循环](//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 特性 **发行日期**:2002.2.6 此版本称为“Merlin”。 包括的特性包括: * [`assert`](//howtodoinjava.com/tutorials/java-keywords/assert/)关键字 * [正则表达式](//howtodoinjava.com/java-regular-expression-tutorials/) * 异常链 * 互联网协议版本 6(IPv6)支持 * [新的 I/O;`Future`](//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 特性 **发行日期**:2000.5.8 该版本称为“Kestrel”。 包括的特性包括: * Hotspot JVM * Java 命名和目录接口(JNDI) * Java 平台调试器架构(JPDA) * JavaSound * 复合代理类 ## J2SE 1.2 特性 **发行日期**:1008.12.8 此版本称为“游乐场”。 就添加的类数而言,这是一个主要版本(几乎是其大小的三倍)。 引入“J2SE”一词是为了区分代码平台与 J2EE 和 J2ME。 包括的特性包括: * `strictfp`关键字 * Swing 图形 API * Sun 的 JVM 首次配备了 JIT 编译器 * Java 插件 * [集合框架](//howtodoinjava.com/java/collections/useful-java-collection-interview-questions/) ## JDK 1 特性 **发行日期**:1996.1.23 这是[初始版本](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 特性**。 学习愉快!