继 SpringBoot 3.0,Elasticsearch8.0 官宣:拥抱 Java 17
大家好,我是君哥。
新版任你发,我用 Java 8,这可能是当下 Java 开发者的真实写照。不过时代可能真的要抛弃 Java 8,全面拥抱 Java 17 了。
Spring Boot 3.0
前些天,相信小伙伴们都注意到了,SpringBoot 发布了 3.0.0-M1 版本,并官宣全面拥抱 Java 17,下面的截图是 Release Notes 中的一段:
其他的新特性大家可以去 Github 查看。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M1-Release-Notes/16c166b5fb4232998a8cfd3966c2851ec1eddf02
Spring Boot 3.0.0-M1 版本发布,也意味着 Spring Boot 进入 3.x 版本的迭代,同时也看到,3.x 版本开始 Spring Boot 要全面拥抱 Java 17 了。
Elastic 8
凑巧的是,2022 年 2 月 11 日,Elastic 也发布了新版本 Elastic 8,这个版本跟上个版本间隔了 3 年。下面的截图是 Issue 79873:
可以看到,运行新的 Elasticsearch 版本需要 Java 17 了。
Java 17
从 Java 8 以后,每个版本发布都增加了哪些新特性呢?我们一起来看一下。
Java 9
私有接口方法
默认垃圾收集器改为 G1
HTTP client,支持 WebSocket、HTTP/2、HTTPS/TLS、非阻塞 API。
Java 10
局部变量类型推断,可以使用 var 类型来定义变量。
不可变集合
G1 支持并行 Full GC
基于 Java 的 JIT 编译器 Graal
支持在不执行全局安全点的情况下执行线程回调,这样可以在不停止所有线程的情况下停止单个线程。
Java 11
标准 HTTP Client 升级
引入 ZGC 垃圾收集器
Flight Recorder,可以收集基于 OS、JVM和JDK 事件产生的数据。
对Stream、Optional、集合 API进行增强。
Java 12
引入 Switch 表达式
Shenandoah GC 垃圾收集算法
JMH 基准测试
G1 支持可中断的 mixed GC,将 Mixed GC 拆分为强制部分和可选部分,强制部分一定会被回收,可选部分可以不被回收,这样垃圾收集过程中优先处理强制集,更容易满足暂停时间目标。
G1 可以归还不使用的内存给操作系统
Java 13
switch 优化更新,增加 yield 关键字用于返回结果。
ZGC 支持将未使用的内存归还操作系统
引入了文本块,可以使用 """ 三个引号表示文本块,示例代码如下:
String html = """<html><body><p>Hello, world</p></body></html>
""";
Java 14
instanceof 语法简化,可以直接给对象赋值:
if (obj instanceof String s) { //这里可以使用 s 变量
} else {//这里不能使用 s 变量
}
引入 Record,类似于枚举类型,具有 Lombok 功能,可以自动生成构造器、equals、getter 等方法。
放弃 CMS
Java 15
引入 hidden class
String.substring 优化,如果长度为 0,返回 null
引入 Sealed class
Java 16
Stream新增toList方法
提供jpackage
java.time 根据时段获取时间
Java 17
升级 switch 使用,switch可直接用 instanceof 模式匹配选择,不过需要提前做 null 判断(下面代码选自 oschina):
Object o;
switch (o) {case null -> System.out.println("首先判断对象是否为空,走空指针逻辑等后续逻辑");case String s -> System.out.println("判断是否为字符串,s:" + s);case record p -> System.out.println("判断是否为Record类型: " + p.toString());case int[] arr -> System.out.println("判断是否为数组,展示int数组的长度" + ia.length);case Integer i -> System.out.println("判断是否为Intger对象,i:" + i);case Student s -> System.out.println("判断是否为具体学生对象,student:" + s.toString());case UserCommonService -> System.out.println("判断是否为普通用户实现类,然后走普通用户逻辑");case UserVipService -> System.out.println("判断是否为vip用户实现类,然后走vip用户逻辑");default -> System.out.println("Something else");
}
默认启用 Parallel GC
增强TreeMap
统一日志异步刷新,先将日志写入缓存,独立线程负责刷新到相应输出。
上面的版本只有 Java 11 和 Java 17 是 LTS(Long Term Support) 版本。
总结
全面拥抱 Java 17 还没有真的到来,但已经在路上了,作为程序员的我们应该做准备了。
继 SpringBoot 3.0,Elasticsearch8.0 官宣:拥抱 Java 17相关推荐
- 继小米之后,360 也官宣造车!互联网企业造车到底哪家强?
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 还记得 3 月 30 日晚上,雷军一句"我愿押上人生全部声誉,为小米汽车而战!"激起了千层浪.彼时不少人都在感慨,5 ...
- keras 分布式_TensorFlow 2.0正式版官宣!深度集成Keras
新智元报道 来源:medium.GitHub 编辑:小芹.大明 [新智元导读]TensorFlow 2.0正式版终于发布了!深度集成Keras,更简单.更易用,GPU训练性能提升.这是一个革命 ...
- 华为鸿蒙2.0智慧屏,官宣!华为车载智慧屏将于10月30日发布,或搭载鸿蒙OS 2.0...
10月27日,华为官方宣布,华为车载智慧屏将于10月30日发布,国行华为 Mate40 系列新品也将一同亮相. 据悉,华为车载智慧屏或搭载华为鸿蒙OS 2.0系统,聚合了华为智能手机的大部分适合汽车移 ...
- java semaphore(0)_面试官:说说Java中的信号量?Semaphore
Semaphore (信号量)是由计算机科学家Dijkstra在1965年提出的,广泛应用不同的操作系统,在管程提出之前信号量就是并发编程领域的霸主!几乎所有并发的语言都支持信号量机制. Semaph ...
- GitHub重磅官宣!Java开发环境搭建超全详解
=>下载虚拟机 由于本次演示是基于windows的,因此下载windows版本的虚拟机 =>安装 下载好的虚拟机安装包如下,双击进行安装. 注意:一般在安装新软件时,尽量把杀毒软件关闭. ...
- realmeq2鸿蒙系统,realme UI 2.0官宣:十月随新机一起发布!
在今日,OPPO开发者大会正式召开,在大会上OPPO的最新系统ColorOS11也正式亮相,与此同时,作为OPPO的子品牌的Realme的最新系统realme UI 2.0也正式官宣,并称会与Real ...
- 魅族15系统是android,Powered by Android 10:魅族17系列官宣预装Flyme 8.1系统
新酷产品第一时间免费试玩,还有众多优质达人分享独到生活经验,快来新浪众测,体验各领域最前沿.最有趣.最好玩的产品吧~!下载客户端还能获得专享福利哦! 原标题:Powered by Android 10 ...
- 官宣! 国际著名投资家吉姆·罗杰斯确认出席钛媒体2021 T-EDGE
关注ITValue,看企业级最新鲜.最价值报道! ▎更多重磅嘉宾持续揭晓中! 又一重磅嘉宾!继Google母公司董事会主席John Hennessy官宣之后,国际著名投资家.量子基金创始人吉姆·罗杰 ...
- Java 17.0.2 LTS 生产环境免费使用版本下载地址
Java 17 LTS 是 Java SE 平台的最新长期支持版本.根据Oracle 免费条款和条件许可,JDK 17 二进制文件可在生产环境中免费使用,并可免费重新分发.自Java 8u202版本后 ...
最新文章
- 用python编写脚本实现备份文件
- 洛谷 P3455BZOJ1101 【[POI2007]ZAP-Queries】
- 渴望尽快能找到工作,开始上班
- 【Python】Python字典的高级用法-统计计数
- js中split字符串分割示例
- python 目录 文件名_python目录与文件名操作
- java对比swith和if的不同,浅谈选择结构if语句和switch语句的区别
- ~~约数个数(附模板题)
- 开幕倒计时3天 | 2019中国大数据技术大会(BDTC)邀您一同共赴大数据+AI盛宴!...
- 【Linux】Vi中的各种命令
- 5-01表达基本概念
- 中国车牌数据集以及车牌识别代码
- 为什么论文查重建议用word?
- 大理古城“八戒”“悟空”与游客互殴 警方已介入
- 重装系统显示“安装程序正在应用系统设置“静止不动
- 第二篇:关键点检测的两类方法及区别(短文)
- matlab的独立样本t检验,独立双样本检验的Matlab实现
- 2018 icpc 焦作站 自闭记
- jQuery菜鸟教程02
- typora免费版,无需破解,安装直接使用