更新快到飞起的Java-新特性

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

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

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

按照官方介绍,新的版本发布周期将会严格按照时间节点,于每年的 3 月和 9 月发布,Java 11 发布的时间节点也正好处于 Java 8 免费更新到期的前夕。

与 Java 9 和 Java 10 这两个被称为"功能性的版本"不同,Java 11 仅将提供长期支持服务(LTS, Long-Term-Support),还将作为 Java 平台的默认支持版本,

并且会提供技术支持直至 2023 年 9 月,对应的补丁和安全警告等支持将持续至 2026 年。

 

 

Java版本进化

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

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

2. 方法引用

3. 接口默认方法

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

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

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

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

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

Java 8官方介绍

 

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 中的响应式编程。

Java 9官方介绍

 

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收集器

Java 10官方介绍

 

Java 11 新特性:(Java 11是Java 8之后第一个长期支持的稳定版本,也完全取代了Java 9和Java 10,追求新特性的同学来说,可以使用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模块

Java 11官方介绍

 

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实现的重复工作

Java 12官方介绍

 

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

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

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

3. Socket API 重构

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

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

Java 13官方介绍

 

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

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)

Java 14官方介绍

 

Java 15 新特性:(当前最新的Java版本,也不建议直接在生产环境使用

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

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

3. EdDSA椭圆曲线签名算法

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

5. Records (二次预览)

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

7. 文本块

Java 15官方介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值