Java22已发布,支持SpringBoot3.3.0正式版
Java22已发布,支持SpringBoot3.3.0正式版
文章目录
- Java22已发布,支持SpringBoot3.3.0正式版
- 1. JDK22现已推出!
- 2. Java22的新功能
- 1. 语言改进
- 1. 语言预览
- 2. 库文件
- 3. 性能
- 4. 工具
- 3. 资源
Java 22现已发布
下一个Java版本提高了Java应用程序开发的性能、稳定性和安全性。了解所有新功能和优点SpringBoot3.3.0正式版也会支持Java22
1. JDK22现已推出!
Oracle 自豪地宣布面向开发人员、企业和最终用户全面推出 JDK 22。
2. Java22的新功能
JDK 22 提供了 12 项增强功能,这些增强功能足以保证他们自己的 JDK 增强提案 (JEP),包括 7 个预览功能和 1 个孵化器功能。它们涵盖了对 Java 语言、其 API、性能以及 JDK 中包含的工具的改进。
1. 语言改进
未命名的变量和模式 - JEP 456
提高了需要但未使用变量声明或嵌套模式时的可读性。两者都由下划线字符表示
价值:
- 捕获开发人员的意图,即给定的绑定或 lambda 参数未被使用,并强制执行该属性以阐明程序并减少出错的机会。
- 通过识别必须声明的变量(例如,在 catch 子句中)但未使用的变量,提高了所有代码的可维护性。
- 允许多个模式出现在单个事例标签中,如果它们都没有声明任何模式变量。
- 通过省略不必要的嵌套类型模式来提高记录模式的可读性。
1. 语言预览
[super (…) 预览] 之前的语句** - JEP 447:
在构造函数中,允许不引用正在创建的实例的语句出现在显式构造函数调用之前。
价值:
- 为开发人员提供更大的自由来表达构造函数的行为,从而能够更自然地将当前必须分解为辅助静态方法、辅助中间构造函数或构造函数参数的逻辑。
- 保留构造函数在类实例化期间以自上而下的顺序运行的现有保证,确保子类构造函数中的代码不会干扰超类实例化。
- 不需要对 Java 虚拟机进行任何更改。此 Java 语言功能仅依赖于 JVM 的当前能力来验证和执行在构造函数中显式构造函数调用之前出现的代码。
字符串模板(第二预览版)- JEP 459:
字符串模板通过将文本与嵌入的表达式和模板处理器耦合来生成专门的结果,从而补充了 Java 现有的字符串文本和文本块。
价值:
- 通过轻松表达包含运行时计算值的字符串来简化 Java 程序的编写。
- 增强混合文本和表达式的表达式的可读性,无论文本适合单个源行(如字符串文本)还是跨多个源行(如文本块)。
- 通过支持模板及其嵌入表达式的值的验证和转换,提高了 Java 程序的安全性,这些程序从用户提供的值组成字符串并将其传递给其他系统(例如,为数据库构建查询)。
- 通过允许 Java 库定义字符串模板中使用的格式语法来保持灵活性。
- 简化了接受以非 Java 语言(例如 SQL、XML 和 JSON)编写的字符串的 API 的使用。
- 允许创建从文本和嵌入表达式计算的非字符串值,而不必通过中间字符串表示形式进行转换。
隐式声明的类和实例主方法(第二预览版)- JEP 463:
学生可以编写他们的第一个 Java 程序,而无需了解为大型程序设计的语言功能。学生可以为单班课程编写简化的声明,然后随着技能的增长无缝扩展他们的课程以使用更高级的功能,而不是使用单独的语言方言。
价值:
为了加速 Java 的学习 -
- 为 Java 编程提供平稳的入门通道,以便教师可以循序渐进地介绍概念。
- 帮助学生以简洁的方式编写基本程序,并随着技能的增长而优雅地增长他们的代码。
- 减少了编写简单程序(如脚本和命令行实用程序)的仪式。
- 不介绍单独的 Java 语言初学者方言。
- 不引入单独的初学者工具链;学生程序应使用与编译和运行任何 Java 程序相同的工具进行编译和运行。
2. 库文件
外部函数和内存 API - JEP 454:
允许 Java 程序与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外部的代码)并安全地访问外部内存(即不受 JVM 管理的内存),API 使 Java 程序能够调用本机库并处理本机数据,而不会像 JNI 那样脆弱和危险。
价值:
- 生产力 — 用简洁、可读和纯 Java API 取代
本机
方法和 Java 本机接口 (JNI) 的脆弱机制。 - 性能 — 提供对外部函数和内存的访问,其开销与 JNI 和
sun.misc.Unsafe
相当,甚至更好。 - 广泛的平台支持 — 在运行 JVM 的每个平台上实现本机库的发现和调用。
- 统一性 — 提供在多种内存(例如,本机内存、持久内存和托管堆内存)中对无限大小的结构化和非结构化数据进行操作的方法。
- 健全性 — 保证不会出现释放后使用错误,即使在多个线程之间分配和解除分配内存也是如此。
- 完整性 — 允许程序使用本机代码和数据执行不安全的操作,但默认情况下会警告用户此类操作。
2.1) 库预览和孵化器
类文件 API(预览版)- JEP 457:
提供用于解析、生成和转换 Java 类文件的标准 API。
价值:
- 该 API 允许依赖它的框架和程序自动支持来自最新 JDK 的最新类文件,以便可以快速轻松地采用在类文件中表示的新语言和 VM 功能。
流收集器(预览版)- JEP 461:
增强 Stream API 以支持自定义中间操作。这将允许流管道以现有内置中间操作不容易实现的方式转换数据。
价值:
- 通过使流中的常见自定义操作更加灵活和富有表现力,提高了开发人员的工作效率和代码可读性。尽可能允许中间操作操作无限大小的流。
结构化并发(第 2版预览版)- JEP 462:
简化并发编程。结构化并发将不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和消除,提高可靠性并增强可观测性。
价值:
- 通过推广一种可以消除因取消和关闭而产生的常见风险(如线程泄漏和取消延迟)的编程风格,简化并发代码的开发,并提高并发代码的可观测性。
作用域值(第 2版预览版)- JEP 464:
支持在线程内和线程之间高效共享不可变数据。
价值:
- 易用性 — 提供一个编程模型,用于在线程内和与子线程共享数据,以简化有关数据流的推理。
- 可理解性 — 使共享数据的生存期从代码的语法结构中可见。
- 稳健性 — 确保呼叫者共享的数据只能由合法的被叫方检索。
- 性能 — 将共享数据视为不可变数据,以允许大量线程共享,并启用运行时优化。
Vector API(第 7 个培养箱)- JEP 460:
一个用于表达向量计算的 API,该 API 在运行时可靠地编译为受支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。
此 JEP 建议在 JDK 22 中重新孵化 API,相对于 JDK 21 对 API 进行小幅增强。该实现包括错误修复和性能增强。我们包括以下值得注意的更改:
- 支持使用堆 MemorySegments 进行向量访问,这些堆 MemorySegments 由任何基元元素类型的数组提供支持。以前,访问仅限于由字节数组支持的堆 MemorySegments。
价值:
- 提供清晰简洁的 API,能够清晰简洁地表达各种向量计算,这些计算由循环中组成的向量操作序列组成,并可能具有控制流。
- 该 API 被设计为与 CPU 架构无关,支持在支持矢量指令的多个架构上实现。
- 在 x64 和 AArch64 体系结构上提供可靠的运行时编译和性能。
- 与英灵殿计划保持一致。
3. 性能
G1 的区域固定 - JEP 423:
通过在 G1 中实现区域固定来减少延迟,这样就不需要在 Java 本机接口 (JNI) 关键区域期间禁用垃圾回收。
价值:
在使用 JNI 时,无需等待 Java 线程才能完成 G1 GC 操作,从而提高了开发人员的工作效率。
4. 工具
启动多文件源代码程序 - JEP 458:
允许用户运行作为多个 Java 源代码文件提供的程序,而无需先对其进行编译。
价值:
- 通过使从小程序到大程序的过渡更加缓慢,提高开发人员的工作效率,使开发人员能够选择是否以及何时去配置构建工具。
请注意,预览功能是完全指定和完全实现的 Java SE 平台的语言或 VM 功能,但不是永久性的。它们在 JDK 功能版本中提供,以便允许开发人员根据实际使用情况提供反馈,然后再在将来的版本中永久使用。这也为工具供应商提供了在最终确定为 Java SE 标准之前提供支持功能的机会。
孵化器模块中的 API 将非最终 API 和非最终工具交到开发人员和用户手中,以收集反馈,最终提高 Java 平台的质量。
除了 JEP 中描述的更改之外,发行说明中还列出了许多较小的更新 ,许多应用程序开发人员和系统管理员都会对此感兴趣。其中包括弃用过时的 API 和删除以前弃用的 API。
Java 22 发行说明中的一些关键更新:
- 向 keytool 和 jarsigner 添加其他算法。
- 垃圾回收器吞吐量改进,特别是当它与“年轻”垃圾有关时。
- 为系统模块描述符提供更好的版本报告。
- 改进了本机代码的“等待”处理选项。
- Unicode 通用区域设置数据存储库已更新到版本 44。
- 类型注释支持从字节码加载的类型。
- ForkJoinPool 和 ForJoinTasks 现在可以更好地处理不可中断的任务。
- 配置客户端与服务器 TLS 连接属性的额外灵活性。
- 改进了本机内存跟踪,包括报告峰值使用量的功能。
最后,与所有功能版本一样,JDK 22 包含数百个性能、稳定性和安全更新,包括适应底层操作系统和固件更新以及标准。用户和应用程序开发人员通常会从这些更改中受益,而不会注意到它们。
以及所有 JDK 版本中包含的不变功能:可预测性
JDK 22 是第 13个功能版本,按时交付了六个月的发布节奏。这种级别的可预测性使开发人员能够轻松管理他们对创新的采用,这要归功于源源不断的预期改进。
Java 提高性能、稳定性和安全性的能力继续使其成为世界上最受欢迎的编程语言。
Oracle 不会为 JDK 22 提供长期支持;我们将在 2023 年 9 月之前提供更新,届时它将被 Oracle JDK 23 取代。
Java 22,齐心协力
与以前的版本一样,Java 22 庆祝 OpenJDK 社区中许多个人和组织的贡献——我们一起构建 Java!
JDK 22 固定比率
多年来,JDK 版本随时间的变化率基本保持不变,但在六个月的节奏下,交付生产就绪功能和改进的速度急剧增加。
我们不再像过去的主要版本那样,每隔几年就进行数以万计的修复并交付近百个 JEP(JDK 增强提案),而是在更精简的功能版本中以更易于管理和可预测的六个月计划交付增强功能。这些更改的范围从重要的新功能到日常维护、错误修复和文档改进的小增强。每个更改都表示在 JDK Bug System 中单个问题的单个提交中。
在 Java 11 到 Java 22 正式发布时标记为已修复的 26,447 个 JIRA 问题中,有 18,842 个由 Oracle 员工完成,而 7,605 个由个人开发人员和为其他组织工作的开发人员贡献。通过处理这些问题并整理来自受托人的组织数据,可以得到以下组织赞助 Java 贡献开发的图表:
在 Java 22 中,在标记为已修复的 2,251 个 JIRA 问题中,有 1,554 个由 Oracle 完成,而 697 个由 Java 社区的其他成员贡献。
Oracle 感谢为亚马逊、ARM、谷歌、华为、IBM、英特尔、ISCAS、Microsoft、Red Hat、Rivos、SAP 和腾讯等组织工作的开发人员做出的杰出贡献。我们也很高兴看到 Bellsoft Data Dog 和 Loongson 等小型组织的贡献,以及独立开发人员的贡献,他们共同贡献了 Java 22 中 7% 的修复。
此外,通过 OpenJDK 质量推广计划,我们要感谢以下 FOSS 项目,它们在测试 Java 22 抢先体验版本方面提供了出色的反馈,以帮助提高发布的质量:
- 阿帕奇晕厥(Francesco Chicchiriccò)
- Apache Tomcat(马克·托马斯)
- ApprovalTests.Java (拉尔斯·埃卡特)
- AssertJ (斯特凡诺·科尔迪奥)
- 阿瓦杰(乔赛亚·诺埃尔)
- 码头 (Simone Bordet)
- MyBatis(岩尾大道)
- 并行收集器 (Grzegorz Piwowarek)
- RxJava (大卫·卡诺克)
3. 资源
Java 仍然是当今技术趋势的 #1 编程语言。正如 Java 22 的按时交付改进所表明的那样,通过持续的深思熟虑的规划和生态系统的参与,Java 平台已为云中的现代开发和增长做好了准备。
继续通过以下方式了解最新的新闻和更新:
- 访问 Dev.java(Oracle 的专用门户,用于提高您的 Java 知识和社区参与度)。
- 访问Inside.java(Oracle Java 团队的新闻和观点)。
- 收听 Inside.java 播客(一个面向 Java 开发人员的音频节目,直接来自 Oracle 的 Java 开发人员。对话将讨论语言、JVM、OpenJDK、平台安全、Loom 和 Panama 等创新项目,以及介于两者之间的一切。
- 观看Inside.java新闻广播(将Inside.java播客扩展为视频格式的视频节目)。
- 在 YouTube 上观看 Java (Oracle 收集的相关 Java 视频,可帮助您提高 Java 专业知识)。
- 观看 JEP Café(Oracle 对流行的 JDK 增强提案的技术探索)。
- 观看 Sip of Java(Oracle 的 1 分钟短视频,介绍了鲜为人知的 Java 增强功能,这些增强功能提供了性能、稳定性和安全性改进)。
- 加入 OpenJDK 邮件列表(了解您最喜欢的 OpenJDK 项目进度的地方)。
- 继 OpenJDK 和 Java on X(提供有关 Java 持续发展的更新和新闻的社交流)之后。
能,这些增强功能提供了性能、稳定性和安全性改进)。 - 加入 OpenJDK 邮件列表(了解您最喜欢的 OpenJDK 项目进度的地方)。
- 继 OpenJDK 和 Java on X(提供有关 Java 持续发展的更新和新闻的社交流)之后。
- 订阅 Inside Java Newsletter(一份月刊,总结了 Oracle 的许多关键 Java 技术和社区更新)。
相关文章:

Java22已发布,支持SpringBoot3.3.0正式版
Java22已发布,支持SpringBoot3.3.0正式版 文章目录 Java22已发布,支持SpringBoot3.3.0正式版1. JDK22现已推出!2. Java22的新功能1. 语言改进1. 语言预览 2. 库文件3. 性能4. 工具 3. 资源 Java 22现已发布 下一个Java版本提高了Java应用程序…...

第二证券策略:关注部分华为板块、年报绩优品种反弹机会
第二证券指出,短期商场或偏震动运行,跟着4月财报密布发表期临近,重视年报成绩确定性的三大线索:1)出口相关性高的外需拉动种类,如汽车、白电及上游氟化工、纺服及上游化纤;2)供应强约…...

IBM SPSS Statistics for Mac v27.0.1中文激活版
IBM SPSS Statistics for Mac是一款功能强大的统计分析软件,专为Mac用户设计,用于数据分析和决策支持。该软件拥有直观易用的界面和丰富多样的统计工具,使得用户可以轻松进行数据处理、分析和解释。 软件下载:IBM SPSS Statistics…...

C# WPF编程-布局
C# WPF编程-布局 布局WPF布局原则布局过程布局容器布局属性Border控件 常用布局StackPanel布局WrapPanel布局DockPanel布局Grid布局UniformGrid布局Canvas布局InkCanvas布局 布局 WPF布局原则 WPF窗口只能包含单个元素。为在WPF窗口中放置多个元素并创建更贴近实用的用户界面…...

上位机图像处理和嵌入式模块部署(qmacvisual点线测量)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 上面一篇文章,我们完成了直线的拟合操作。在实际场景中,拟合之后更多地是需要进行长度的测量。既然是测量,那么…...

yolov5训练并生成rknn模型部署在RK3588开发板上,实现NPU加速推理
简介 RK3588是瑞芯微(Rockchip)公司推出的一款高性能、低功耗的集成电路芯片。它采用了先进的28纳米工艺技术,并配备了八核心的ARM Cortex-A76和Cortex-A55处理器,以及ARM Mali-G76 GPU。该芯片支持多种接口和功能,适…...

SCI一区 | Matlab实现SSA-TCN-BiGRU-Attention麻雀算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测
SCI一区 | Matlab实现SSA-TCN-BiGRU-Attention麻雀算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现SSA-TCN-BiGRU-Attention麻雀算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…...

javaSwing宿舍管理系统(三个角色)
一、 简介 宿舍管理系统是一个针对学校宿舍管理的软件系统,旨在方便学生、宿管和管理员进行宿舍信息管理、学生信息管理以及宿舍评比等操作。该系统使用 Java Swing 进行界面设计,分为三个角色:管理员、宿管和学生。 二、 功能模块 2.1 管…...

蓝桥杯day12刷题日记
P8720 [蓝桥杯 2020 省 B2] 平面切分 思路:首先借用dalao的图解释一下,又多出一条与当前平面任意一条直线都不重合线时,多了的平面是交点数1,所以用双层循环每次往里面加一条直线,计算交点 #include <iostream>…...

深度学习pytorch——多分类问题(持续更新)
回归问题 vs 分类问题(regression vs classification) 回归问题(regression) 1、回归问题的目标是使预测值等于真实值,即predy。 2、求解回归问题的方法是使预测值和真实值的误差最小,即minimize dist(p…...
Flutter探索之旅:控制键盘可见性的神奇工具(flutter_keyboard_visibility)
随着移动应用的不断发展,用户体验的重要性愈发突显。而键盘的弹出和隐藏对于用户体验来说是至关重要的一环。在Flutter中,我们有幸拥有一个强大的工具——flutter_keyboard_visibility,它让我们能够轻松地监测键盘的可见性并做出相应的响应。…...

提升质量透明度,动力电池企业的数据驱动生产实践 | 数据要素 × 工业制造
系列导读 如《“数据要素”三年行动计划(2024—2026年)》指出,工业制造是“数据要素”的关键领域之一。如何发挥海量数据资源、丰富应用场景等多重优势,以数据流引领技术流、资金流、人才流、物资流,对于制造企业而言…...

华为数通 HCIP-Datacom H12-831 题库补充
2024年 HCIP-Datacom(H12-831)最新题库,完整题库请扫描上方二维码,持续更新。 缺省情况下,PIM报文的IP协议号是以下哪一项? A:18 B:59 C:103 D:9 答案&a…...
tensorflow中显存分配
tensorflow中显存分配 问题:使用tensorflow-gpu训练模型,GPU的显存都是占满的。 # GPU 1的显存将占满 os.environ["CUDA_VISIBLE_DEVICES"] "1" 原因:默认情况下,tensorflow会把可用的显存全部占光&#…...

STM32--RC522学习记录
一,datasheet阅读记录 1.关于通信格式 2.读寄存器 u8 RC522_ReadReg(u8 address) {u8 addr address;u8 data0x00;addr((addr<<1)&0x7e)|0x80;//将最高位置一表示read,最后一位按照手册建议变为0Spi_Start();//选中从机SPI2_ReadWriteByte(ad…...
函数封装冒泡排序
大家好: 衷心希望各位点赞。 您的问题请留在评论区,我会及时回答。 一、冒泡排序 冒泡排序是最常见的一种排序算法,按照指定顺序比较相邻元素,如果顺序不同,就交换元素位置,每一趟比较,都会导致…...

mysql基础学习
一、DML 介绍:DML(数据操作语言),用来对数据库中表的数据记录进行增删改操作。 1.添加数据 /*给指定字段添加数据*/ insert into user(id, name) values (1,小王); select *from user;/*查询该表的数据*/ /*给所有字段添数据*/ insert int…...
mybatisplus提示:Property ‘mapperLocations‘ was not specified.
1、问题概述? 在使用springboot整么mybatisPlus启动的使用提示信息: Property mapperLocations was not specified. 但是我确实写了相对应的配置: 【在pom文件中配置xml识别】 <resources><resource><directory>src/m…...

【STL源码剖析】【2、空间配置器——allocator】
文章目录 1、什么是空间配置器?1.1设计一个简单的空间配置器,JJ::allocator 2、具备次配置力( sub-allocation)的 SGI 空间配置器2.1 什么是次配置力2.2 SGI标准的空间配置器,std::allocator2.2 SGI特殊的空间配置器,std::alloc2.…...
机器人|逆运动学问题解决方法总结
如是我闻: 解决逆运动学(Inverse Kinematics, IK)问题的方法多样,各有特点。以下是一个综合概述: 1. 解析法(Analytical Solutions) 特点:直接使用数学公式计算关节角度࿰…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...