前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java新特性总结(Java 8/Java 9/Java 11)

Java新特性总结(Java 8/Java 9/Java 11)

原创
作者头像
爱努力的Max
发布2022-03-26 20:25:06
1.2K0
发布2022-03-26 20:25:06
举报
文章被收录于专栏:Max的知识笔记

最近经常有一些"为啥不使用Java新特性"的观点在讨论中被提及。想了想也确实,事物的演进总是围绕着它需要发展的方向进行衍生,为什么不顺势而为呢?为什么不使用Java的新特性呢?为什么不去了解、去体会它的妙处呢?下面根据生产平台的不同进行Java新特性的总结。

1、 Java 8 新特性

Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。Java8 新增了非常多的特性,主要以下几个:

- Lambda 表达式 − Lambda      允许把函数作为一个方法的参数(函数作为参数传递到方法中)。

- 方法引用−      方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

- 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。

- 新工具 − 新的编译工具,如:Nashorn引擎 jjs、      类依赖分析器jdeps。

- Stream API −新添加的Stream API(java.util.stream)      把真正的函数式编程风格引入到Java中。

- Date Time API − 加强对日期与时间的处理。

- Optional 类 − Optional 类已经成为 Java 8      类库的一部分,用来解决空指针异常。

- Nashorn, JavaScript 引擎 − Java      8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。

2、 Java 9 新特性

Java 9 发布于 2017 年 9 月 22 日,带来了很多新特性,其中最主要的变化是已经实现的模块化系统。接下来我们会详细介绍 Java 9 的新特性。

- 模块系统:模块是一个包的容器,Java 9      最大的变化之一是引入了模块系统(Jigsaw 项目)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3、 Java 11 新特性

 2018年09月25日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本。现在 Java 11 长期支持,也已经包含了 9 和 10 的全部功能。

- 本地变量类型推断:左边的类型直接使用var定义,而不用写具体的类型,编译器能根据右边的表达式自动推断类型。

- 字符串加强:增加一系列字符串处理方法。

代码语言:javascript
复制
 ```shell
 // 判断字符串是否为空白" ".isBlank(); // true
 // 去除首尾空格" Javastack ".strip(); // "Javastack"
 // 去除尾部空格 " Javastack ".stripTrailing(); // " Javastack"
 // 去除首部空格 " Javastack ".stripLeading(); // "Javastack "
 // 复制字符串"Java".repeat(3); // "JavaJavaJava"
 // 行数统计"A\nB\nC".lines().count(); // 3
 ```

- 集合加强:自Java9开始,jdk为集合(List/Set/Map)都添加了of和copyOf方法,他们两个都用来创建不可变的集合,来看下面的使用和区别。使用      of 和 copyOf 创建的集合为不可变集合,不能进行添加、删除、替换、排序等操作。

代码语言:javascript
复制
 ```shell
 var list = List.of("Java", "Python", "C");
 var copy = List.copyOf(list);
 System.out.println(list == copy); // true
 var list = new ArrayList<String>();
 var copy = List.copyOf(list);
 System.out.println(list == copy); // false
 ```

- Stream加强: Stream是Java8中的新特性,Java9开始对Stream增加了以下4个新方法(ofNullable/takewhile/dropwhile/iterate重载)。

- Optional加强:Opthonal 也增加了几个非常酷的方法,现在可以很方便的将一个      Optional 转换成一个 Stream, 或者当一个空 Optional 时给它一个替代的。

- InputStream加强:InputStream      终于有了一个非常有用的方法:transferTo,可以用来将数据直接传输到 OutputStream,这是在处理原始数据流时非常常见的一种用法。

- HTTP Client API:这是 Java 9      开始引入的一个处理 HTTP 请求的的孵化 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态。

- jshell:类似由于Python的控制台。

- 化繁为简java11:在我们的认知里面,要运行一个 Java      源代码必须先编译,再运行,两步执行动作。而在未来的 Java 11 版本中,通过一个java命令就直接搞定了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 Java 8 新特性
  • 2、 Java 9 新特性
  • 3、 Java 11 新特性
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档