龙空技术网

Java 11 还是 Java 17?为什么还有那么多程序员坚持用java8?

xTech 14885

前言:

如今同学们对“java时段”大约比较珍视,各位老铁们都需要剖析一些“java时段”的相关文章。那么小编也在网摘上收集了一些关于“java时段””的相关知识,希望你们能喜欢,小伙伴们一起来学习一下吧!

Java,相信大家已经不陌生了。在这里,我想和大家聊聊JDK版本。经过近30年的变迁,JDK也慢慢更新换代了。大家热衷的有JDK8、JDK11、JDK17。那么对你来说,你更喜欢哪个?

首先说说java11。2018年开始,java11正式发布,带来了ZGC、Http Client等重要特性,包括17个JEP(JDK Enhancement Proposals,JDK增强建议)。对于我们的业务来说,选择 11 将意味着一个长期、可靠和可预测的技术路线图。特别是免费的 OpenJDK11 肯定会得到 OpenJDK 社区的长期支持。

此外,JDK11引入了两种新型GC,尤其是ZGC。从能力上来说,这对JDK来说是一个巨大的突破,为特定生产环境的苛刻需求提供了一种可能的选择

在这里,我们也罗列了java11的几个新特性:

ZGC 是 JAVA 11 中最重要的特性,它是一个并发的、基于区域的、紧凑的垃圾收集器。只有根扫描阶段会STW,所以GC停顿时间不会随着堆的增长和存活对象的增长而变长)。优点:GC停顿时间不会超过10ms;它可以处理数百兆字节的小堆和几个 T 的大堆(OMG);与G1相比,应用吞吐量下降不超过15%;为以后的GC功能和colord pointers的使用以及Load barriers的优化打下基础。字符串处理方法Optional 增强(Optional增加了几个很酷的方法,比如很容易将 Optional 转换成 Stream)局部变量类型推断升级(jdk11之前无法实现给var加注解的语法格式)新的HTTP 客户端 API更简化的编译和运行程序废除 Nashorn 引擎

上面简单介绍了JAVA11的相关情况,接下来介绍一下JAVA17,接下来我们来看看JAVA17的几个特点:

record关键字(record用于创建不可变数据类。在此之前,如果需要创建一个存储数据的类,通常需要先创建一个Class,然后生成constructors、getters、setters、hashCode、equals和toString等等这些方法,或者使用Lombok来简化这些操作。)密封类(Sealed classes 让我们更好地控制哪些类可以扩展我定义的类。密封类可能对框架或中间件开发人员更有用。在此之前,一个类要么是可扩展的,要么是最终的,只有这两个选项)instanceof 模式匹配,一般我们在使用instanceof 的时候,一般会出现在我们需要判断一个变量的类型的时候。如果它匹配指定的类型,则该类型被强制转换为一个新的变量。日期循环格式化,Java 17 中新增了一种模式 B 用于格式化 DateTime,按照 Unicode 标准表示一天中的时间段简化数字格式化支持,向 NumberFormat 添加工厂方法,可以根据 Unicode 标准以紧凑的、人类可读的形式格式化数字

对于JAVA17,我们简单列出优点,让大家看看对比。那么重点来了,为什么还有那么多工程师在用java8呢?

很多同事给出的理由如下:

(1)平台升级存在风险,风险需自行承担

(2)新版本的一些新功能对现有业务来说不是必须的

(3)重点是java8之后的新版本的特性要足够吸引大家更新

对于你来说,你更喜欢哪个版本?

标签: #java时段