Java17(LTS Long Term Support)特性

支持JDK17的主流技术框架

  1. spring framework 6.x
  2. springboot 3.x
  3. kafka 3.0(不在支持jdk8)
  4. jenkins 2.357(必须jdk11起步)
  5. James Gosling表示赶紧弃用Java8,使用性能最好的JDK17
  6. Chart GPT也推荐JDK17,从长期到性能来说。

JDK17的特性

swich语句增强

 //jdk12推出的var name = "shb";String alis = switch (name) {case "周瑜" -> "公瑾";case "徐庶" -> "元直";case "诸葛亮" -> "卧龙";case "庞统" -> "凤雏";case "shb" -> "大佬";default -> "未知";};System.out.printf("alis" + alis);//jdk17增强的  "诸葛亮","徐庶","庞统" 多个前提条件String coutry = switch (name) {case "周瑜" -> "东吴";case "诸葛亮", "徐庶", "庞统" -> "蜀汉";case "shb" -> "中华人民共和国";default -> "未知";};System.out.printf("coutry" + coutry);//方法执行{},返回结果 yield关键字String method = switch (name) {case "周瑜" -> {Thread.sleep(1000);yield "东吴";}case "诸葛亮", "徐庶", "庞统" -> {System.out.println(666);yield "蜀汉";}case "shb" -> {System.out.println("民族伟大复兴");yield "中华人民共和国";}default -> "未知";};

jdk17及以后版本的多行字符串处理方式 SQL、JSON、HTML

    	//jdk17及以后版本的多行字符串处理方式 SQL、JSON、HTML// \ :置于行尾,用来将两行连接为一行// \s:单个空白字符String html = """<html>\<body><h1>hello,world %s</h1></body></html>\s""";System.out.println(html);System.out.println(String.format(html,"shb"));

jdk17对 instanceof 增强

   //jdk17对 instanceof 增强//jdk14已经增强Object o = "1";if (o instanceof Integer i) {System.out.println(i.intValue());} else if (o instanceof String s) {System.out.println(s.charAt(0));}

密封类(Sealed Classes)

密封类的实现特征有哪些?

1. 密封类(Sealed Classes)一般修饰父类、接口

2. permits许可指定类来继承Dog,Cat,子类必须指定:

final表示无法在继承

non-sealed 可以被子类在继承)

3. 密封类和子类必须在同一个包package底下,否则报错

4. 密封类子类必须直接继承密封类才生效,中间不能间隔其他类例如:Dog extends Animal Animal是密封类

密封类有什么好处?

1.密封类限制继承,更加的安全

2.更加可控,减少代码复杂性 更易于理解

package com.map.helper.facade.om.controller;/*** @author songhaibo* @description* 密封类的实现特征有哪些?* 1. 密封类(Sealed Classes)一般修饰父类、接口* 2. permits许可指定类来继承Dog,Cat,子类必须指定:*                              final表示无法在继承*                              non-sealed 可以被子类在继承)* 3. 密封类和子类必须在同一个包package底下,否则报错* 4. 密封类子类必须直接继承密封类才生效,中间不能间隔其他类例如:Dog extends Animal Animal是密封类* 密封类有什么好处?*     答:1.密封类限制继承,更加的安全*        2.更加可控,减少代码复杂性 更易于理解*** @date 2023-11-28 19:35*/
public abstract sealed class  Animal permits Dog,Cat {
}package com.map.helper.facade.om.controller;/*** @author songhaibo* @description* final表示无法在继承* non-sealed 可以被子类在继承* @date 2023-11-28 19:39*/
public final class Cat extends Animal {
}package com.map.helper.facade.om.controller;/*** @author songhaibo* @description* final表示无法在继承* non-sealed 可以被子类在继承* @date 2023-11-28 19:39*/
public non-sealed class Dog extends Animal {
}

Record类,类似lombok的属性只读对象

  1. 通过class文件能看到,它会默认生成有参构造,和获取单个属性的方法。但是没有设置属性的方法
  2. Record.equals()属性值相等就是相等的。因为Record重写equals了
  3. 使用场景:简单的javaBean,比如说坐标类,只有经纬度
/*** @author songhaibo* @description** 通过class文件能看到,它会默认生成有参构造,和获取单个属性的方法。但是没有设置属性的方法* 使用场景:简单的javaBean,比如说坐标类,只有经纬度* @date 2023-11-28 19:54*/
public record UserRecord(Long userId,String userName) {
}public static void main(String[] args) {UserRecord userRecord = new UserRecord(1L, "shb");UserRecord userRecord1 = new UserRecord(1L, "shb");System.out.println(userRecord.userName());// true  Record.equals()属性值相等就是相等的。因为Record重写equals了。System.out.println(userRecord.equals(userRecord1));//falseSystem.out.println(userRecord==userRecord1);}

优化空指针异常信息(妈妈再也不担心我找不到空指针异常是哪句代码了)

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "a" is null
at com.map.helper.facade.om.controller.RecordDemo.main(RecordDemo.java:12)

ZGC垃圾收集器(垃圾回收不卡顿,Java开发不用愁)

最大卡顿10毫秒以内,堆内存可以设置很大。具体单独出文章

国外大佬对比过这三种垃圾回收器,通过对比可以看出ZGC的吞吐量是最高的。当然不管是哪种垃圾回收器,JDK17的性能都是最高的。

因为ZGC设置的堆内存空间比较大,在这里G1延迟效率是最好的

综合对比能看出JDK17有很大的性能提升,如果考虑高性能的话毫不犹豫选择JDK17以及ZGC垃圾回收器!。

添加以下JVM选项即可开启ZGC:(目前11和17默认还是G1,需要手动指定)

-XX:+UseZGC

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

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

相关文章

htop命令中显示相同进程的解决方案

使用 htop 的过程中会发现有很多同样的进程被标注了绿色大量显示。如下图所示。 这使得在大量程序运行时想要找到需要观察的进程变的困难。本文介绍了如何省略这些重复现实的进程。 输入 htop&#xff0c;显示出 htop 界面。按下 F2 键&#xff0c;进入 Setup 模式点击 Displa…

C++基础 -10- 类

类的格式 public:公共成员 类外可访问 protected:保护成员 类外不可访问 private:私有成员 类外不可访问 class base {public:int a;protected:int b;private:int c;};

WEB渗透—反序列化(八)

Web渗透—反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩哔_…

Blazor Select 实现点击一次选项触发一次后台事件

Blazor的官方案例中&#xff0c;Select组件只有两个事件 1、OnSelectedItemChanged 每次选项的时候改变触发&#xff0c;如果你点击同一个选项是不会触发后台的方法的 2、OnBeforeSelectedItemChange 我们可以用这个事件实现每次点击同一个选项都可以触发后台事件 需要注意下最…

先喝点水,这期程序员兼职干货没有水分!

钱越来越难挣?程序员找兼职越来越难&#xff1f;结局只能指路美团&#xff1f; 还没看透职场“高薪”骗局&#xff1f;别人早就把精力放在了做副业上。兼职找不到&#xff0c;多半是经验不够、思路没打开&#xff0c;本篇文章&#xff0c;应该能让你茅塞顿开、收获颇丰。先喝…

Linux环境安装Java,Tomcat,Mysql,

1、Java的安装 载 jdk1.8 注&#xff1a;此处 CentOS7 是64位&#xff0c;所以下载的是&#xff1a;Linux x64&#xff0c; 文件类型为 tar.gz 的文件 JDK 官网地址&#xff1a;https://www.oracle.com/java/ cd /usr/local/ mkdir jdk cd jdk/tar -xvf jdk-8u202-linux-x64.…

配置华为云镜像加速器

登录华为云官网&#xff0c;点击控制台 在服务列表里面寻找swr服务 点击镜像中心&#xff0c;点击镜像加速器 {"registry-mirrors": [ "https://301dc05233c6419b810bdb22135af9eb.mirror.swr.myhuaweicloud.com" ]}配置镜像加速器 vim /etc/docker…

物理机虚拟化关键技术介绍

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、虚拟化原理 将多个“同质或异构”资源&#xff08;包括但不限于芯片、硬件、软件、应用&#xff09;形成一个资源池&#xff0c;对资源池进行抽象、解耦形成独立的“虚拟资源”&#xff0c;并实现虚拟资…

Adversarial Attack and Defense on Graph Data: A Survey(2022 IEEE Trans)

Adversarial Attack and Defense on Graph Data: A Survey----《图数据的对抗性攻击和防御&#xff1a;综述》 图对抗攻击论文数据库&#xff1a; https://github.com/safe-graph/graph-adversarial-learning-literature 摘要 深度神经网络&#xff08;DNN&#xff09;已广泛应…

多线程【第二十章】

线程简介 世间有很多工作都是可以同时完成的。例如&#xff0c;人体可以同时进行呼吸、血液循环、思考问题等活动;用户既可以使用计算机听歌&#xff0c;也可以使用它打印文件。同样&#xff0c;计算机完全可以将多种活动同时进行&#xff0c;这种思想放在 Java 中被称为并发&a…

怎么判断香港服务器的性能好不好?

随着互联网的不断发展&#xff0c;越来越多的人开始使用香港服务器来搭建自己的网站或者应用。但是&#xff0c;对于初次使用香港服务器的用户来说&#xff0c;往往会遇到一个问题&#xff1a;怎么判断香港服务器的性能好不好? 首先我们需要了解香港服务器的性能主要取决于哪些…

Vue CLI 初体验之如何创建一个项目并打开,以及组件的简单使用案例。

目录 什么是Vue CLI? 如何使用Vue CLI 创建一个项目 1.winr 打开cmd 输入vue create 1127(1127是文件名) 2.配置基础设置 选择Manually select features 选择Router和Vuex 选中vue版本&#xff08;我这里选vue3&#xff09; 剩下的看自己需要&#xff0c;如果不确定就一…

fiddler测试弱网别再去深山老林测了,这样做就能达到弱网效果了!

弱网测试 概念&#xff1a;弱网看字面意思就是网络比较弱&#xff0c;我们通称为信号差&#xff0c;网速慢。 意义&#xff1a;模拟在地铁、隧道、电梯和车库等场景下使用APP &#xff0c;网络会出现延时、中断和超时等情况。 添加图片注释&#xff0c;不超过 140 字&#xf…

C语言基础程序设计题

1.个人所得税计算 应纳税款的计算公式如下&#xff1a;收入<&#xff1d;1000元部分税率为0&#xff05;&#xff0c;2000元>&#xff1d;收入>1000元的部分税率为5&#xff05;&#xff0c;3000元>&#xff1d;收入>2000元的部分税率为10&#xff05;&#xf…

MySQL数据库入门到大牛_基础_18_MySQL8其它新特性(MySQL基础部分最后一章;新特性概述;窗口函数;公用表表达式)

文章目录 1. MySQL8新特性1.1 MySQL8.0 新增特性1.2 MySQL8.0移除的旧特性 2. 新特性1&#xff1a;窗口函数2.1 使用窗口函数前后对比2.2 窗口函数分类2.3 语法结构2.4 分类讲解1. 序号函数2. 分布函数3. 前后函数4. 首尾函数5. 其他函数 2.5 小 结 3. 新特性2&#xff1a;公用…

qt实现一个安卓测试小工具

qt实现一个安卓测试小工具 最终效果&#xff1a;目录结构源码gui.py 主要是按钮&#xff0c;文本控制代码main.py 主要是逻辑代码gui.spec 是打包使用的adb.ui 最终效果&#xff1a; 目录结构 上面2个是打包的生成的不用管 源码 gui.py 主要是按钮&#xff0c;文本控制代码…

借助工具落地提高外包软件项目代码提交规范

随着外包软件项目的不断增加&#xff0c;代码提交规范成为了一个必须解决的问题。由于外包项目的特殊性&#xff0c;很难保证每个开发者都按照统一的规范开发代码。为了解决这个问题&#xff0c;我们可以借助工具来提高代码提交规范。Codigger这个工具来解决外包软件项目中的代…

C++基础 -9- 函数的默认参数

函数默认格式(图片代码段呈现) #include "iostream"using namespace std;void rlxy(int a100) {cout << a << endl; }int main() {rlxy();rlxy(99); }函数默认参数注意事项 函数的默认参数从左开始推导 错误写法 正确写法

在微服务架构中的数据一致性

当从传统的单体应用架构转移到微服务架构时&#xff0c;特别是涉及数据一致性时&#xff0c;数据一致性是微服务架构中最困难的部分。传统的单体应用中&#xff0c;一个共享的关系型数据库负责处理数据一致性。在微服务架构中&#xff0c;如果使用“每个服务一个数据库”的模式…

【安卓】安卓xTS之Media模块 学习笔记(1) xTS介绍

1.背景 Media的安卓xTS相关测试和功能修复已经进行了一段时间了。 在此整理总结下xTS工作总结&#xff0c;留待后续查阅整理。 2. xTS介绍 - 什么是xTS 谷歌的xTS是对谷歌发布的CTS/GTS/VTS/STS/BTS/CTS-on-GSI等一系列测试的统称。 因为安卓系统比较庞大&#xff0c;模块多…