首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >技术 | 那些年,我们错过的Java新特性

技术 | 那些年,我们错过的Java新特性

作者头像
程序员鱼皮
发布2020-11-25 10:22:01
发布2020-11-25 10:22:01
8870
举报
文章被收录于专栏:鱼皮客栈鱼皮客栈

2017年8月起,JCP执行委员将Java的发布频率改为每六个月一次,且每三年一个大的稳定版本。

此后,Java一直遵循这个频率发布新版本,如今Java15已悄然问世。

虽然大多数的开发者和企业仍在使用Java8,但是关注和学习Java的新特性是很有必要的。

鱼皮为大家整理了Java8及以后各版本的Java特性,让大家先有个印象,可以进一步通过搜索引擎进行学习。

Java版本进化

2014年3月18日

Java 8

Java 8是Java语言开发的一个主要版本,目前国内大部分公司都在使用该版本进行Java开发。

Java 8 新特性:

1. Lambda 表达式和函数式编程

2. 方法引用

3. 接口默认方法

4. 新的编译工具,如Nashorn引擎jjs、类依赖分析器jdeps

5. 新的Nashorn Javascript引擎,允许我们在JVM上运行特定的Javascript应用。

6. 流式处理Stream API,提供了方便操作流式数据的能力

7. 新的日期时间处理 Date Time API

8. Optional 可选类,有效解决空指针异常

官方介绍:https://www.oracle.com/java/technologies/javase/8-whats-new.html

2017年9月22日

Java 9

Java 9最大的新特性是引入模块化系统,由于不是稳定版本,不建议使用Java 9。

Java 9 新特性:

1. 模块系统:模块是一个包的容器,Java 9 最大的变化之一是引入了模块系统。

2. REPL (JShell):交互式编程环境。

3. HTTP 2 客户端:HTTP/2标准是HTTP协议的最新版本,新的 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服务器推送特性。

4. 改进的 Javadoc:Javadoc 现在支持在 API 文档中的进行搜索。另外,Javadoc 的输出现在符合兼容 HTML5 标准。

5. 多版本兼容 JAR 包:多版本兼容 JAR 功能能让你创建仅在特定版本的 Java 环境中运行库程序时选择使用的 class 版本。

6. 集合工厂方法:List,Set 和 Map 接口中,新的静态工厂方法可以创建这些集合的不可变实例。

7. 私有接口方法:在接口中使用private私有方法。我们可以使用 private 访问修饰符在接口中编写私有方法。

8. 进程 API: 改进的 API 来控制和管理操作系统进程。引进 java.lang.ProcessHandle 及其嵌套接口 Info 来让开发者逃离时常因为要获取一个本地进程的 PID 而不得不使用本地代码的窘境。

9. 改进的 Stream API:改进的 Stream API 添加了一些便利的方法,使流处理更容易,并使用收集器编写复杂的查询。

10. 改进 try-with-resources:如果你已经有一个资源是 final 或等效于 final 变量,您可以在 try-with-resources 语句中使用该变量,而无需在 try-with-resources 语句中声明一个新变量。

11. 改进的弃用注解 @Deprecated:注解 @Deprecated 可以标记 Java API 状态,可以表示被标记的 API 将会被移除,或者已经破坏。

12. 改进钻石操作符(Diamond Operator) :匿名类可以使用钻石操作符(Diamond Operator)。

13. 改进 Optional 类:java.util.Optional 添加了很多新的有用方法,Optional 可以直接转为 stream。

14. 多分辨率图像 API:定义多分辨率图像API,开发者可以很容易的操作和展示不同分辨率的图像了。

15. 改进的 CompletableFuture API :CompletableFuture 类的异步机制可以在 ProcessHandle.onExit 方法退出时执行操作。

轻量级的 JSON API:内置了一个轻量级的JSON API

16. 响应式流(Reactive Streams) API: Java 9中引入了新的响应式流 API 来支持 Java 9 中的响应式编程。

官方介绍:https://www.oracle.com/java/technologies/javase/9-relnote-issues.html

2018年3月20日

Java 10

Java 10最大的新特性是局部变量的类型推断,由于不是稳定版本,不建议使用Java 10。

Java 10 新特性:

1. 局部变量的类型推断 var关键字

2. GC改进和内存管理 并行全垃圾回收器 G1

3. 新的垃圾回收器接口

4. 线程-局部变量管控

5. 合并 JDK 多个代码仓库到一个单独的储存库中

6. 新增API:ByteArrayOutputStream

7. 新增API:List、Map、Set

8. 新增API:java.util.Properties

9. 新增API:Collectors收集器

官方介绍:https://www.oracle.com/java/technologies/javase/10-relnote-issues.html

2018年9月25日

Java 11

Java 11是Java 8之后第一个长期支持的稳定版本,也完全取代了Java 9和Java 10,追求新特性的同学来说,可以使用Java 11进行开发。

Java 11 新特性:

1. 本地变量类型推断,var关键字

2. 字符串处理方法增强

3. 集合类方法增强

4. 流式处理 Stream API 增强

5. Optional 可选类增强

6. InputStream 输入流增强

7. 更方便的 HTTP Client API

8. java命令增强,一个命令编译运行源代码

9. ZGC:可扩展的低延迟垃圾收集器

10. Epsilon:仅处理内存分配而不实施任何实际的内存回收机制的垃圾收集器

11. 移除Java EE和CORBA模块

官方介绍:https://www.oracle.com/java/technologies/javase/jdk-11-relnote.html

2019年3月19日

Java 12

Java 12的新特性并不多,不建议使用这个版本。

Java 12 新特性:

1. Switch表达式增强

2. 默认CDS归档:通过在64位平台上的默认类列表的帮助下生成CDS归档来改进JDK构建过程

3. Shenandoah GC:Shenandoah是一种垃圾收集算法,旨在保证低延迟(实验性功能)

4. JMH 基准测试:简化了现有微基准测试的运行和新基准测试的创建过程

5. JVM 常量 API

6. G1的可中断 Mixed GC:通过将Mixed GC集拆分为强制部分和可选部分,使G1垃圾收集器更有效地中止垃圾收集过程

7. 改进G1垃圾收集器,归还不使用的堆内存给操作系统

8. 移除多余ARM64实现:消除了JDK11中维护两个64位ARM实现的重复工作

官方介绍:https://www.oracle.com/java/technologies/javase/12-relnote-issues.html

2019年9月17日

Java 13

Java 13的新特性不多,ZGC增强是一大亮点,也不建议使用该版本。

Java 13 新特性:

1. 动态应用程序类数据共享(CDS):允许在 Java 应用程序执行结束时动态进行类归档

2. 增强 ZGC:如释放未使用内存,最大堆大小为 16TB,添加限制堆大小参数等

3. Socket API 重构

4. Switch 表达式增强(预览功能):如 yield 语句

5. 文本块(预览功能):提供更清晰的多行字符串写法

官方介绍:https://www.oracle.com/java/technologies/javase/13-relnote-issues.html

2020年3月17日

Java 14

Java 14发布了很多新特性,比如其他语言中提供的instanceof模式匹配,Record记录,文本块特性再次发布预览版等等,由于不是稳定版,不建议在生产环境使用。

Java 14 新特性:

1. instanceof的模式匹配 (预览)

2. 打包工具 (Incubator)

3. G1的NUMA内存分配优化

4. JFR事件流

5. 非原子性的字节缓冲区映射

6. 友好的空指针异常

7. Records 记录(预览):更轻量的不可变类

8. Switch表达式增强 (标准)

9. 弃用Solaris和SPARC端口

10. 移除CMS(Concurrent Mark Sweep)垃圾收集器

11. 支持MacOS系统上的ZGC

12. 支持Windows系统上的ZGC

13. 弃用ParallelScavenge + SerialOld GC组合

14. 移除Pack200 Tools和API

15. 文本块 (第二个预览版)

16. 外部存储器API (Incubator)

官方介绍:https://www.oracle.com/java/technologies/javase/14-relnote-issues.html

2020年9月15日

Java 15

当前最新的Java版本,也不建议直接在生产环境使用。

Java 15 新特性:

1. RMI Activation(远程调用激活)被标记为Deprecate

2. Hidden Classes:不能直接被其他class的二净值代码使用的class

3. EdDSA椭圆曲线签名算法

4. instanceof模式匹配 (二次预览)

5. Records (二次预览)

6. Sealed Classes (预览):只允许被指定的类或接口实现

7. 文本块

官方介绍:https://www.oracle.com/java/technologies/javase/15-relnote-issues.html

以上就是Java各版本的新特性啦,可以挑选自己感兴趣的特性进行学习,一起期待下一个稳定版本Java 17吧!

大家有什么希望Java 17添加的新特性呢?评论区告诉鱼皮吧~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员鱼皮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档