首页 > 其他分享 >【转】JDK11 升级 JDK17 最全实践干货来了 | 京东云技术团队

【转】JDK11 升级 JDK17 最全实践干货来了 | 京东云技术团队

时间:2023-11-15 12:12:39浏览次数:37  
标签:Java JDK17 OpenJDK JDK11 升级 干货 版本

原文地址:JDK11 升级 JDK17 最全实践干货来了 | 京东云技术团队
原文作者:京东云开发者

1.前言

上篇文章给大家带来了 JDK8 升级 JDK11 的最全实践,相信大家阅读后已经对 JDK11 有了比较深入的了解。2021 年 9 月 14 日,Oracle 发布了可以长期支持的 JDK17 版本,那么从 JDK11 到 JDK17,到底带来了哪些特性呢?亚毫秒级的 ZGC 效果到底怎么样呢?值得我们升级吗?而且升级过程会遇到哪些问题呢?带着这些问题,本篇文章将带来完整的 JDK11 升级 JDK17 最全实践。

2.为什么升级 JDK17

1.长期支持版本

JDK17 是 Oracle 官方在 2021 年 9 月 14 日发布的一个长期支持(LTS)版本,意味着它将获得长期的更新和支持,有助于保持程序的稳定性和可靠性。

2.性能提升

更好的垃圾回收器。综合评估,从 Java 8 升级到 Java 11,G1GC 平均速度提升 16.1%,ParallelGC 为 4.5%****, 从 Java 11 升级到 Java 17,G1GC 平均速度提升 8.66%,ParallelGC 为 6.54%(基于 OptaPlanner 的用例基准测试表明

3.新语法和特性

Switch 表达式简化、Text Blocks 文本块、instanceof 的模式匹配升级和 NullPointerException 提示信息改进等

4.支持最新的技术和框架

Spring framework6 和 Spring Boot3 都默认使用 Java 17 作为最低版本

3.升级后压测效果

先给出结论:

1、JDK17 相对于 JDK8 和 JDK11,所有垃圾回收器的性能都有很明显的提升,特别是稳定版的 ZGC 垃圾回收器

2、不论任何机器配置下,都推荐使用 ZGC,ZGC 的停顿时间达到亚毫秒级,吞吐量也比较高
我在 JDOS 平台上选择了不同配置的机器(2C4G、4C8G、8C16G),并分别使用 JDK8、JDK11 和 JDK17 进行部署和压测。

整个压测过程限时 60 分钟,用 180 个虚拟用户并发请求一个接口,每次接口请求都创建 512Kb 的数据。最终产出不同 GC 回收器的各项指标数据,来分析 GC 的性能提升效果。

以下是压测的性能情况:
image

4.OracleJDK 和 OpenJDK 的选择

2021 年 9 月,Oracle 宣布 JDK17 可以免费商用,直到下一个 LTS 版本之后继续提供整整一年,同时 Oracle 将继续按照自 Java 9 以来的相同版本和时间表提供 GPL 下的 Oracle OpenJDK 版本。

2023 年 9 月,OracleJDK 发布了新的 LTS 版本 JDK21,这就意味着从 2024 年 9 月开始,在生产环境使用 OracleJDK17 将需要付费。
image
参考: https://www.oracle.com/hk/java/technologies/downloads/#java17

OracleJDK 和 OpenJDK 这两个之间没有真正的技术差别,因为针对 Oracle JDK 构建过程是基于 OpenJDK 的。自从 JDK11 开始,OracleJDK 和 OpenJDK 在功能上基本相同,所以推荐使用 OpenJDK17 或其他开源的 JDK 版本,这些开源版本都是基于 OpenJDK 构建并提供长期支持的,比如:AdoptOpenJDK、RedHatOpenJDK。
image
官方参考: https://blogs.oracle.com/java/post/oracle-jdk-releases-for-java-11-and-later

5.JDK11 到 JDK17 带来了哪些新特性

1.JVM 改进

标签:Java,JDK17,OpenJDK,JDK11,升级,干货,版本
From: https://www.cnblogs.com/fanqisoft/p/17833539.html

相关文章

  • # yyds干货盘点 # 由['a', 'b', 'c']变为['c', 'a', 'b&
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【吴超建】问了一个Python基础问题,一起来看看吧。由['a','b','c']变为['c','a','b','c']请教下有没有优雅一点的写法?二、实现过程这里【巭孬......
  • Linux-AT命令干货分享,还不赶紧收藏!
    AT简介AT即Attention,AT指令集是从终端设备(TerminalEquipment,TE)或数据中断设备(DataTerminalEquipment,DTE)向终端适配器(TerminalAdapter,TA)或数据电路终端设备(DataCircuitTerminalEquipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(MobileStation,MS)的功能,与GSM......
  • # yyds干货盘点 # 从5亿行数据中,筛选出重复次数在1000行的数据行,也爆内存了
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【巭孬......
  • JDK11->JDK17问题记录一(又jenkins使用问题记录一)
    背景:springboot项目jdk版本从11升级至17,本地打包编译OK,将代码提交至gerrit仓库时触发编译报错,错误如下:09:29:02[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile(default-compile)onprojectXXX:Fatalerrorcompiling:inva......
  • #yyds干货盘点#react之useEffect
    React的HooksAPI为我们提供了一种新的处理副作用的方式——useEffect。useEffect函数接受两个参数:一个是_副作用函数_和一个_依赖数组_。副作用函数是在组件render之后运行,而依赖数组告诉React何时应该执行或跳过该副作用。如果没有提供依赖数组,`useEffect`将在每次渲染后运行。......
  • # yyds干货盘点 # 对5亿行数据去重,各位有没有啥方法。。。内存直接爆了
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【巭孬......
  • #yyds干货盘点#react的useState源码分析
    简单说下为什么React选择函数式组件,主要是class组件比较冗余、生命周期函数写法不友好,骚写法多,functional组件更符合React编程思想等等等。更具体的可以拜读dan大神的blog。其中Functioncomponentscapturetherenderedvalues这句十分精辟的道出函数式组件的优势。但是在16.8之......
  • 【虹科干货】TWAMP:什么是双向主动测量协议?
    TWAMP(双向主动测量协议)是什么?它在网络性能测量中有什么作用?如果您对IP网络中设备之间的性能问题感兴趣,或者想了解TWAMP与OWAMP之间的区别,以及TWAMP测试的好处。 一、TWAMP是什么?TWAMP代表“双向主动测量协议”,如RFC5357中所述,它是一种用于测量IP网络中任意两个设备或端点之间的网......
  • 【虹科干货】Lambda数据架构和Kappa数据架构——构建现代数据架构
    如何更好地构建我们的数据处理架构,如何对IT系统中的遗留问题进行现代化改造并将其转变为现代数据架构?该怎么为你的需求匹配最适合的架构设计呢,本文将分析两种最流行的基于速度的数据架构,为你提供一些思路。文章速览:什么是数据架构?基于速度的数据架构结语 一、什么是数据......
  • #yyds干货盘点# LeetCode程序员面试金典:累加数
    题目累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含3个数。除了最开始的两个数以外,序列中的每个后续数字必须是它之前两个数字之和。给你一个只包含数字'0'-'9'的字符串,编写一个算法来判断给定输入是否是累加数。如果是,返回true......