返回顶部
首页 > 资讯 > 后端开发 > JAVA >比较 JDK 8 与 JDK 17 的区别
  • 329
分享到

比较 JDK 8 与 JDK 17 的区别

javajvm开发语言 2023-09-04 12:09:20 329人浏览 泡泡鱼
摘要

        随着技术的不断发展,Java 也在不断地推出新版本以满足开发者的需求。在本文中,我们将比较两个重要版本:jdk 8 和 JDK 17。JDK 8 是 Java 发展史上的一个里程碑,引入了很多新特性,如 Lambda 表达式

        随着技术的不断发展,Java 也在不断地推出新版本以满足开发者的需求。在本文中,我们将比较两个重要版本:jdk 8 和 JDK 17。JDK 8 是 Java 发展史上的一个里程碑,引入了很多新特性,如 Lambda 表达式和 Stream api。而 JDK 17 是一个长期支持(LTS)版本,也引入了许多新特性和性能改进。让我们深入了解这两个版本之间的主要区别。

1. 新特性

JDK 8:

  • Lambda 表达式:简化了匿名内部类的写法,提高了代码的可读性和简洁性。
  • Stream API:提供了一种新的数据处理方式,可以更简洁、更高效地处理集合
  • 接口默认方法和静态方法:允许在接口中定义默认方法和静态方法,提高了接口的灵活性和扩展性。
  • 日期和时间 API(Java.time):全新的日期和时间处理 API,取代了以前的不直观且容易出错的 Calendar 和 Date 类。

JDK 17:

  • JEP 356: Enhanced Pseudo-Random Number Generators:引入了新的伪随机数生成器 API,提供了更强大、更灵活的随机数生成能力。
  • JEP 389: Foreign Function & Memory API (Incubator):提供了一种新的、更安全的方式来调用本地代码(如 C 语言代码)和操作本地内存。
  • JEP 411: Deprecate the Security Manager for Removal:宣布 Security Manager 将在未来版本中被移除,标志着 Java 平台安全模型的重大转变。
  • JEP 391: MacOS/AArch64 Port:为 macOS/AArch64 平台提供了一个新的 JDK 版本,以支持 Apple M1 芯片等 ARM 架构设备。

2. 性能改进

JDK 17 相较于 JDK 8 在性能方面也有很多优化,主要包括:

  • 垃圾回收器(GC)的改进:JDK 17 引入了 ZGC 和 Shenandoah,这两个垃圾回收器在低延迟和高吞吐量方面表现优秀,同时提高了内存管理效率。
  • 编译器优化:JDK 17 中的 JIT 编译器进行了许多性能优化,提高了代码执行速度。
  • 紧凑字符串:JDK 17 对字符串内部存储进行了优化,降低了字符串占用的内存空间。

3. 可维护性和稳定性

JDK 17 作为一个长期支持版本,其可维护性和稳定性得到了很大程度的提升:

  • 模块化:从 JDK 9 开始,Java 引入了模块化系统(Project Jigsaw),使得开发者可以更轻松地构建和维护大型项目
  • 新的 API 和类:JDK 17 提供了许多新的 API 和类,以帮助开发者更快速、更安全地完成开发任务。
  • 长期支持:oracle 提供了长期支持,确保在未来几年内,JDK 17 会得到性能优化、安全更新和错误修复。

4.代码举例说明语法新特性

instanceof关键词

public String getMessage(Object obj) {    if (obj instanceof String s) {        return "String: " + s;    } else if (obj instanceof Integer i) {        return "Integer: " + i;    } else {        return "Unknown type";    }}

Sealed类

public sealed class Shape permits Circle, Rectangle {    // ...}public final class Circle extends Shape {    // ...}public final class Rectangle extends Shape {    // ...}

文本块

public class TextBlock {        public static final String gethtmlTextInJDK8() {        return "\n" +                "  \n" +                "    

Hello, world

\n" + " \n" + ""; } public static final String getHtmlTextInJDK17() { return """

Hello, world

"""; }}

NullPointerException增强

public static void main(String[] args) {        String str = null;        int length = str.length();        System.out.println("length = " + length);    }

报错信息非常清晰地指出来了是哪个对象为空导致出现的NPE问题

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null at com.example.demo.DemoApplicationTests.main(DemoApplicationTests.java:34)

Records

全新的switch表达式和模式匹配

        public int getCodeInJDK17(Week week) {        // 1, 现在的switch变成了表达式,可以返回值了,而且支持yield和->符号来返回值        // 2, 再也不用担心漏写了break,而导致出问题了        // 3, case后面支持写多个条件        return switch (week) {            case null -> -1;            case MONDAY, TUESDAY -> 1;            case WEDNESDAY -> 3;            case THURSDAY -> { yield 4; }            case FRIDAY -> 5;            case SATURDAY -> 6;            case SUNDAY -> 7;            default -> 0;        };    }

全新的HttpClient

try catch资源关闭优化

结论

        JDK 8 和 JDK 17 都是 Java 发展历程中非常重要的版本。尽管 JDK 8 引入了许多新特性和改进,但 JDK 17 作为长期支持版本,在性能、可维护性和稳定性方面都有显著优势。如果您正在考虑升级或选择一个 Java 版本作为项目的基础,JDK 17 无疑是一个值得推荐的选择。

来源地址:https://blog.csdn.net/m0_68705273/article/details/131001219

--结束END--

本文标题: 比较 JDK 8 与 JDK 17 的区别

本文链接: https://lsjlt.com/news/393502.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 比较 JDK 8 与 JDK 17 的区别
            随着技术的不断发展,Java 也在不断地推出新版本以满足开发者的需求。在本文中,我们将比较两个重要版本:JDK 8 和 JDK 17。JDK 8 是 Java 发展史上的一个里程碑,引入了很多新特性,如 Lambda 表达式...
    99+
    2023-09-04
    java jvm 开发语言
  • JDK 8 和 JDK 17 的区别和新特性
    JDK 8 和 JDK 17 的区别和新特性 背景介绍JDK 8 的新特性JDK 17 的新特性JDK 8 和 JDK 17的代码对比示例Lambda表达式Pattern Matching for instanceof新增的库新的集...
    99+
    2023-08-17
    java jvm 开发语言
  • 【Java学习】-Java JDK 1.8与17版本比较
    前言 Java Development Kit(JDK)是Java编程语言的开发环境。它包含了Java编译器(javac)、Java虚拟机(JVM)以及其他必需的工具和库。本文将比较JDK 1.8和17两个版本,分析它们的发展历史和地位...
    99+
    2023-08-16
    java 学习 jvm
  • jdk与java的区别
    区别:jdk是个java开发的工具包,java是门编程语言。什么是javaJava是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。Java编程语言的风格十分接近C++语言。...
    99+
    2015-02-16
    java入门 java jdk 区别
  • jdk与jre的区别
    对于java初学者来说,往往不懂区分jdk和jre的区别,实际上这两个东西差别很大的,有必要了解一下:简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit ...
    99+
    2023-06-03
  • JDK与之间的差异 JRE比 JVM
    今天,我们将讨论JDK vs JRE与JVM的介绍。什么是Java开发工具包(JDK)?JDK代表用于开发Java applet和应用程序的Java Development Kit。它基本上是一个软件开发环境。JDK包括Java运行时环境(...
    99+
    2023-06-05
  • Java JDK与cglib动态代理有哪些区别
    本篇内容主要讲解“Java JDK与cglib动态代理有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java JDK与cglib动态代理有哪些区别”吧!一、说明sp...
    99+
    2023-07-05
  • CSS与HTLM的比较区别有哪些
    这篇文章将为大家详细讲解有关CSS与HTLM的比较区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。CSS : Cascading Style Sheet 层叠样式...
    99+
    2024-04-02
  • Java NIO与IO的区别以及比较
    目录前言一、NIO的简介二、IO的传统方式三、NIO的详细介绍四. 举例说明前言 传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内...
    99+
    2024-04-02
  • C++和C语言的比较与区别
    C++和C语言的比较与区别 C++和C语言是两种非常常见的编程语言,它们在很多方面都有相似的地方,但也有很多不同之处。本文将通过具体的代码示例来比较和阐述C++和C语言之间的区别。 ...
    99+
    2024-04-02
  • java中jdk和jre的区别是什么
    JDK(Java Development Kit)和JRE(Java Runtime Environment)是Java开发中常用的...
    99+
    2023-08-25
    java
  • Oracle和DB2的SQL语法比较与区别
    Oracle和DB2是两个常用的关系型数据库管理系统,它们都有自己独特的SQL语法和特点。本文将针对Oracle和DB2的SQL语法进行比较与区别,并提供具体的代码示例。 数据库连接 ...
    99+
    2024-03-11
    sql oracle db
  • SAP ERP与Oracle ERP比较的区别是怎样的
    本篇文章为大家展示了SAP ERP与Oracle ERP比较的区别是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有关SAP和ORACLE产品的比较:1:软件...
    99+
    2024-04-02
  • 解析动态代理jdk的Proxy与spring的CGlib(包括区别介绍)
    目录1. 为什么要使用动态代理?2.JDK Proxy 动态代理面向接口的动态代理3.CGlib动态代理原理区别:两个动态代理的区别1. 为什么要使用动态代理? 动态代理:在不改变原...
    99+
    2024-04-02
  • 通过 for 循环比较 Python 与 Ruby 的编程区别
    前言: Ruby 与 Python 之间的差异在很大程度上可通过for循环看出本质。Python 拥有for语句。对象告诉for如何进行协作,而for的循环体会处理对象返回的内容。R...
    99+
    2024-04-02
  • Go语言和Golang的特点与区别比较分析
    标题:比较分析:Go和Golang的特点与区别 引言:在现代编程领域中,Go(也称为Golang)是一种备受瞩目的编程语言,它以其简洁、高效和并发性而闻名。Go是Google在2007年发布的一门开源编程语言...
    99+
    2024-01-20
    Golang Go语言 特点与区别
  • 分析JDK中String的存储区与不可变性
    这篇文章主要介绍“分析JDK中String的存储区与不可变性”,在日常操作中,相信很多人在分析JDK中String的存储区与不可变性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析JDK中String的存储...
    99+
    2023-06-02
  • 分布式缓存Redis与Memcached的优缺点区别比较
    目录Memcache与Redis的区别都有哪些?1)、存储方式2)、数据支持类型3)、使用底层模型不同4),value大小redis相比memcached有哪些优势?使用redis有...
    99+
    2022-12-14
    Redis Memcache
  • PHP CLI与CGI的区别及应用场景比较分析
    PHP CLI与CGI的区别及应用场景比较分析 PHP是一种流行的服务器端脚本语言,通常用于创建动态网页内容。在PHP中,有两种主要的执行方式:命令行界面(CLI)和通用网关接口(CG...
    99+
    2024-03-10
    cgi php cli php脚本
  • PHP 中 == 和 === 比较运算符的区别
    本文将介绍 PHP 中双等号 == 和三等号 === 比较运算符的区别。显着的区别是双等于比较运算符比较两个操作数的值。相反,三元组等于比较运算符比较操作数的值和类型。 我们将介绍一种通过比较整数和...
    99+
    2024-02-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作