网站首页 > 精选教程 正文
新版任你发,我用 Java 8。
这可能是当下 Java 开发者所经常听到的一句话,这也从侧面反映出了 Java 8 的经典。
不过时代可能真的要抛弃 Java 8,拥抱新版本了。
Spring Boot 3.0
之前 Spring Boot 发布了 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 月,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 新版本的阶段还没有真的到来,但或许已经在路上了。
猜你喜欢
- 2024-12-01 我的世界:13个关于1.17的小变化,却可能对未来mc产生巨大影响
- 2024-12-01 编程专题:初识JAVA(以java1.8为例)
- 2024-12-01 从 Java 8 升级到 Java 17 全过程,贼特么坑
- 2024-12-01 Java 状态报告:Java 8 占主导,Java 11 不算多
- 2024-12-01 Java8已经发布7年了,不会还有人没用过CompletableFuture吧
- 2024-12-01 我的世界:老mc收藏多年的干货,教你寻找最罕见的11个遗迹
- 2024-12-01 从 Java 8 转换到 Java 11
- 2024-12-01 我的世界:12颗满眼末地门多稀有?大神翻遍mc,找到900万个种子
- 2024-12-01 学妹惊呼:使用Java8改造后的模板方法模式真的是yyds
- 2024-12-01 JDK1.8的安装与环境变量配置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)