jdk8升级到jdk17

jdk8新特性:
1、lambda表达式
2、引入了stream api
3、函数式接口
4、方法引用 ::
5、hashmap实现的增强
6、Optional类
7、对时间、日期的优化,新增了LocalDate、LocalTime、LocalDateTime,打印输入时比date友好。
5、并发增强:JDK 8对并发编程进行了增强。它引入了一些新的并发工具和类,使得并发编程更加容易和有效。其中包括CompletableFuture类、StampedLock类、并行数组等。这些增强使得开发人员能够更好地处理并发问题,提高程序的性能和可伸缩性。

jdk17新特性:
1、switch表达式

int num = 5;
int square = switch (num) {case 1, 2, 3 -> num;default -> num * num;
};
System.out.println(square);

2、ZGC
JDK 17 中对 ZGC(可伸缩的低延迟垃圾回收器)进行了一些改进,其中包括了针对 MappedByteBuffer 和堆外内存的改进,使得它们可以更快地进行垃圾回收,提高了应用程序的性能。

3 JDK 17 中引入了一个统一的 JVM 日志系统,它可以在运行时收集并记录 JVM 和应用程序的日志信息,并支持按时间戳、等级和线程 ID 等进行筛选和过滤,以帮助开发人员更轻松地调试和分析应用程序的运行情况。

4、空指针会报出具体的对象

5、引入文本块
三个引号

// jdk1.8的写法
String html = "<html>\n" +"   <head>\n" +"       <title>test</title>\n" +"   </head>\n" +"   <body>\n" +"       <h1>test</h1>\n" +"   </body>\n" +"  </html>\n";
// jdk13的写法
var jdk15Html = """<html><body><p>hello, world</p></body></html>""";

6、封闭类

Sealed Classes(封闭类)

// 测试代码
public sealed class Car permits MiniCar, SmallCar, Bigcar{...
}
// 以下代码可以正常运行
public final class MiniCar extends Car {...}
// 以下代码会报错
public final class Train extends Car {...}

7、Record类型
record 是 JDK 14 引入的关键字,用于声明不可变的数据类。它适用于存储纯粹的值类型数据.编译后的字节码被final修饰且继承Record类,所有属性也都被final修饰。
可以直接获取属性,point.x(),不能set
使用:
public record point(int x,int y){

8、instanceof类型判断再也不需要强制转换
原:
if(obj instanceOf String){
String str = (String) obj;}

现在:
if(obj instance String str){}

在instanceOf的同时将obj强制转换并赋值给str。

为什么要升级到jdk17

最简单的理由就是,springboot3.0放弃了jdk8,kafka4.0同样放弃了jdk8

其次是垃圾回收器的效率都提升了,最大的亮点是带来了稳定版的ZGC垃圾回收器,达到亚毫秒级停顿。

1、ZGC垃圾回收器从实验性功能更改为正式产品功能,从JDK11引入以来,经过持续的迭代升级,目前已经足够稳定。需要手动开启,开启方式:-XX:+UseZGC
2、G1垃圾回收器仍然作为默认垃圾回收器,进行改进升级,主要包括可中止的混合收集集合、NUMA 可识别内存分配等
3、JDK14开始删除CMS垃圾回收器
4、JDK14开始弃用 ParallelScavenge 和 SerialOld GC 的组合使用

升级时,将springBoot升级到2.7.14, Spring升级到5.3.29

升级过程中出现的问题:
主要是一些找不到类的问题,
1、在编译时会找不到相关的类。这是因为 Java EE 已经在 Java 9 中被标记为 deprecated,Java 11 中被正式移除,可以手动引入 javax 的包
2、lombok找不到找不到包,升级一下版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大盗阿福1301

1301&#xff1a;大盗阿福 时间限制: 1000 ms 内存限制: 65536 KB 提交数:13109 通过数: 6123 【题目描述】 阿福是一名经验丰富的大盗。趁着月黑风高&#xff0c;阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N&#xfffd; 家店铺&#xff0c;每家店中都有一…

利用alibaba.item_get API接口,跨境电商如何快速获取商品详情?

利用alibaba.item_get API接口&#xff0c;跨境电商可以快速获取商品详情&#xff0c;为业务的开展提供有力支持。alibaba.item_get API接口是阿里巴巴开放平台提供的一项服务&#xff0c;它允许开发者通过调用API接口&#xff0c;获取阿里巴巴平台上商品的详细信息。以下是如何…

Android8.1 代码编译报错

注&#xff1a; 本文只是博主学习记录分享&#xff0c;仅供参考。如有错误肯定是博主理解有问题&#xff0c;谢谢&#xff01; 1. Android8.1 编译报 java 环境错误 1.1. 具休描述 Android8.1 代码编译报 Failed to run java: exce: "java": excutable file not fo…

【全网独家】oceanbase容器重启时报obshell failed错误,无法正常启动的问题处理

正常运行的oceanbase容器&#xff0c;重新启动该容器却启动不了&#xff0c;重启服务器也无法恢复&#xff0c;报obshell failed错误&#xff0c;无法正常启动&#xff0c;本文记录了问题处理过程。 一、问题现象 1、正常运行的oceanbase容器&#xff0c;重启却启动不了 2、运…

使用Charles断点修改接口返回数据

问题&#xff1a;数量/金额原来接口是用一个字段返回&#xff0c;由于业务需要换行展示&#xff0c;后端便拆分成了两个字段&#xff0c;前端则需要用新拆分的字段去取值&#xff0c;导致目前发现有个字段的金额也取成了件数&#xff08;红框部分&#xff09;&#xff1b;需求&…

一种springboot请求参数校验的实现方案

一、前提引入 很多时候,springboot提供的Restful-api需要根据业务需要进行参数校验,相应的,基于各位码友的习惯,各有各的实现方式,可谓是八仙过海各显神通。 二、常见方案 2.1 一种最原始的方法 通过if语句,对特定参数进行校验 if(null == name){return "name …

为无网环境安装golang

yum install --downloadonly --downloaddir/root/download golang #打包/root/download下rpm 文件到无网机器上 #解压后进入目录基于解压rpm文件安装rpm -ivh *.rpm在没有外网连接的 CentOS 7 服务器上安装应用程序可能需要一些额外的步骤&#xff0c;因为你不能直接使用 yum 或…

Java-变量和常量

变量是什么&#xff1a;就是可以变化的量&#xff01;Java是一种强类型语言&#xff0c;每个变量必须声明声明其类型Java变量是程序中最基础的存储单元&#xff0c;其要素包括变量名&#xff0c;变量类型和作用域 type varName [value][{,varName[value]}]; //数据类型 变量…

五种主流数据库:连接查询

关系型数据库通常将不同的实体对象和它们之间的联系存储在多个表中&#xff0c;例如电商系统中使用的产品表、用户表、订单表以及订单明细表等。当我们查看某个订单信息时&#xff0c;需要同时从这几个表中查找关于该订单的相关数据。 本文比较五种主流数据库实现的多表连接查…

Python编程技巧大全

简介 Python是一种高级编程语言&#xff0c;以其简洁明了的语法和强大的功能库而广受欢迎。无论是数据科学、机器学习还是Web开发&#xff0c;Python都有着广泛的应用。在这篇文章中&#xff0c;我们将分享一些Python编程的常见技巧&#xff0c;帮助你提升编程效率&#xff0c…

第3章 数据链路层(3)

3.6 局域网 采用广播信道 3.6.1 局域网的基本概念和体系结构 特点: ①覆盖范围小②专门通信介质【双绞线,同轴电缆】③通信延时短,误码率低,可靠性高。④通信质量好。因此采用无确认,无连接的服务。⑤关系平等,共享信道⑥分布式控制,广播信道,广播,组播 决定因素: ①拓扑结构:…

深入理解HTTP/HTTPS协议

HTTP协议像日常生活中简单的口头或书面交流&#xff0c;而HTTPS则类似于涉及敏感信息交换时采取的加密、身份验证等安全措施&#xff0c;确保通信的安全性和隐私性。该篇文章从以下几个方面展开&#xff1a; 目录 HTTP协议 请求与响应 请求&#xff1a; 响应&#xff1a; …

MuJoCo 入门教程(八)Model仓库

系列文章目录 前言 一、MuJoCo 动物园 一个物理仿真器的好坏取决于它所仿真的模型&#xff0c;而在像 MuJoCo 这样功能强大、建模选项众多的仿真器中&#xff0c;很容易创建出行为与预期不符的 "坏 "模型。MuJoCo Menagerie 的目标是为社区提供一个设计精良、开箱即用…

【学习笔记】R语言入门与数据分析1

数据分析 数据分析的过程&#xff1a; 数据采集 数据存储 数据分析 数据挖掘 数据可视化 进行决策 数据挖掘 数据量大 复杂度高&#xff0c;容忍一定的误差限 追求相关性而非因果性 数据可视化 直观明了 R语言介绍 R是免费的&#xff08;开源软件、扩展性好&#xff09;…

家居颜色搭配6大法则,奶油风配色指南。福州中宅装饰,福州装修

奶油风装修的配色主要以奶油色系为主&#xff0c;搭配其他低饱和度的色彩&#xff0c;营造出一种温馨、柔和的氛围。以下是一些常见的奶油风装修配色法则&#xff1a; 1. 主色&#xff1a;奶油色 奶油色是奶油风装修的主色调&#xff0c;通常使用在墙面、地面、家具等大面积的…

如何从0开始构建GPT模型?

OpenAI 推出强大的生成式预训练转换器 &#xff08;GPT&#xff09; 语言模型&#xff0c;为自然语言处理 &#xff08;NLP&#xff09; 开辟了新的领域。将 GPT 模型集成到虚拟助手和聊天机器人中可以增强它们的能力&#xff0c;这导致对 GPT 模型的需求激增。根据 Allied Mar…

跨链桥的王牌Wormhole,现在买还有机会吗?附bitget教程

昨天Wormhole上线发了个推文&#xff0c;大致是Wormhole在3月4日的场外均价为1.5&#xff0c;历史数据最高2&#xff0c;当下价格相对公允。然而一点点波动加上上线不到24小时&#xff0c;面临空投的抛压&#xff0c;有价格波动我认为是很正常&#xff0c;后续到2估计不会太难说…

软考122-上午题-【软件工程】-需求分析

一、软件需求 在进行需求获取之前&#xff0c;首先要明确需要获取什么&#xff0c;也就是需求包含哪些内容。 软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。通常&#xff0c;这些需求包括功能需求、性能需求、用户或人的因素、环境需求、界面需…

fzf模糊查找工具

fzf是一个命令行模糊查找工具&#xff0c;可以帮助用户快速查找和选择文件、目录、命令历史和其他文本内容。它与终端兼容&#xff0c;并且可以与众多其他命令行工具无缝集成。 以下是fzf的一些主要特点和使用方法&#xff1a; 快速模糊查找&#xff1a;fzf可以根据输入的关键…

Android开发之移除权限

Android开发之移除权限 在Android开发结束后&#xff0c;我们将build好的App Bundle上传至Google Play。这时Google可能会提示一些需要解决的错误&#xff0c;比如xx权限需要限制&#xff0c;需要解释为什么需要这些权限&#xff0c;需要添加文字描述和视频链接&#xff0c;但…