Java Development Kit(JDK)是一款Java开发工具包。包含Java运行环境(java运行库),Java开发套件和Java基础类库源代码。Java Runtime Environment(JRE)是运行Java程序的运行环境,不管是做Java开发还是从事安卓开发,都必须在系统安装JRE运行环境。
2025年9月,Oracle正式发布了长期支持版本Java SE Development Kit 25(JDK 25)。作为Java平台的最新版本,JDK 25在语言特性、API、性能和安全等多个方面都带来了显著的改进和创新。
目录
版本更新
Java SE Development Kit 25
1. 语言
➜ 模式、instanceof 和 switch 中的原始类型(第三次预览)
通过允许在所有模式上下文中使用原始类型来增强模式匹配,并扩展instanceof和switch以支持所有原始类型。这是一个 语言预览特性。
➜ 模块导入声明
增强Java编程语言,使其能够简洁地导入模块导出的所有包。这简化了模块化库的重用,但不要求导入的代码本身在一个模块中。
改进Java编程语言,使初学者能够在不需要理解为大型程序设计的语言特性的情况下编写他们的第一个程序。与使用单独语言变体不同,初学者可以为单类程序编写简洁的声明,然后随着技能的增长无缝扩展其程序以使用更高级的功能。经验丰富的开发人员也可以享受编写小型程序的简洁性,而无需使用旨在进行大型程序编程的构造。
➜ 灵活的构造体
在构造函数的主体中,允许语句出现在显式调用构造函数之前,即super(...)或this(...)。这些语句不能引用正在构建的对象,但可以初始化其字段并执行其他安全计算。这个变化使得许多构造函数可以更自然地表达。它还允许字段在变得对类中的其他代码(如从 superclass 构造函数调用的方法)可见之前进行初始化,从而提高安全性。
2. 库
➜ 结构化并发(第五次预览)
通过引入一个用于结构化并发的API来简化并发编程。结构化并发将不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消,提高可靠性并增强可观测性。
➜ 作用域值
介绍作用域值,这使得一个方法能够在同一线程内与调用者以及子线程共享不可变数据。作用域值比线程局部变量更容易推理。它们的空间和时间成本也更低,特别是在与虚拟线程和结构化并发一起使用时。
➜ 稳定值(预览)
2.1 安全库
➜ 加密对象的PEM编码(预览)
引入一个API,用于将表示加密密钥、证书和证书吊销列表的对象编码成广泛使用的隐私增强邮件 (PEM)传输格式,并从该格式解码回对象。
➜ 密钥派生函数 API
3. 性能
通过简化常见用例所需的命令,使创建提前缓存更加容易,从而加速Java应用程序的启动。
➜ 提前方法分析
通过使方法执行配置文件在HotSpot Java虚拟机启动时立即可用,从而提高预热时间。这将使JIT编译器在应用程序启动时立即生成本地代码,而不是必须等待配置文件被收集。
4. 监控
➜ JFR 合作抽样
提高JDK飞行记录器(JFR)在异步采样Java线程堆栈时的稳定性。通过仅在安全点遍历调用堆栈来实现这一点,同时尽量减少安全点偏见。
➜ JFR 方法计时和跟踪
扩展 JDK 航空记录器 (JFR),通过 字节码仪器 提供方法计时和跟踪功能。
5. 已删除的功能和选项
➜ 实验性功能移除 – Graal JIT
可选的实验性 Graal JIT 编译器已被移除。
Java SE Development Kit 24
1. 语言预览
➜ 在模式、instanceof 和 switch 中的原始类型(第二次预览)
通过允许在所有模式上下文中使用基本类型来增强模式匹配,并扩展 instanceof 和 switch 以处理所有基本类型。这是 语言的预览功能。
➜ 灵活构造体(第三次预览)
在Java编程语言的构造函数中,允许在显式构造函数调用之前出现语句,即super(..)或this(..)。这些语句不能引用正在构建的实例,但可以初始化其字段。在调用另一个构造函数之前初始化字段,当方法被覆盖时,使类更加可靠。这是一个预览语言特性。
➜ 模块导入声明(第二次预览)
增强Java编程语言,使其能够简洁地导入模块导出的所有包。这简化了模块化库的重用,但不要求导入的代码本身在一个模块中。这是一个预览语言特性。
➜ 简单的源文件和实例主方法(第四次预览)
改进Java编程语言,使初学者能够在不需要理解为大型程序设计的语言特性的情况下编写他们的第一个程序。初学者可以为单类程序编写简洁的声明,然后随着技能的增长无缝扩展他们的程序以使用更高级的功能。经验丰富的开发人员也可以享受编写小型程序的简洁性,而无需使用旨在进行大型程序编程的构造。这是一个预览语言特性。
2. 性能和运行时间
➜ 紧凑对象头(实验性)
将HotSpot JVM中对象头部的大小从64位架构上的96到128位减少到64位。这将减少堆的大小,提高部署密度,并增加数据局部性。
➜ G1的后期屏障扩展
通过将G1垃圾收集器的屏障扩展从C2 JIT的编译管道早期移至后期,简化其实施,屏障用于记录应用程序内存访问的信息。
➜ 提前类加载和链接
通过使应用程序的类在HotSpot Java虚拟机启动时立即可用,处于加载和链接状态,来提高启动时间。通过在一次运行期间监控应用程序,并将所有类的加载和链接形式存储在缓存中以供后续运行使用,来实现这一点。为未来提高启动时间和预热时间奠定基础。
➜ 无需绑定的虚拟线程同步
通过安排在这些构造中阻塞的虚拟线程释放其底层synchronized平台线程,以供其他虚拟线程使用,从而提高使用方法和语句的Java代码的可扩展性。这将消除几乎所有虚拟线程被固定到平台线程的情况,这严重限制了可用于处理应用程序工作负载的虚拟线程的数量。
3. 库
➜ 流收集器
增强流API以支持自定义中间操作。这将允许流管道以现有内置中间操作无法轻松实现的方式转换数据。
➜ 类文件 API
提供一个标准的API用于解析、生成和转换Java类文件。
➜ 作用域值(第四次预览)
引入作用域值,这使得方法能够在同一线程内与调用者以及子线程共享不可变数据。作用域值比线程局部变量更容易推理。它们的空间和时间成本也更低,特别是在与虚拟线程(JEP 444)和结构化并发(JEP 480)一起使用时。
➜ 向量API(第九期孵化器)
引入一个API,用于表达向量计算,这些计算在支持的CPU架构上能够可靠地在运行时编译为最佳的向量指令,从而实现优于等效标量计算的性能。
➜ 结构化并发(第四次预览)
通过引入一个用于结构化并发的API来简化并发编程。结构化并发将不同线程中运行的相关任务组视为一个工作单元,从而简化错误处理和取消,提高可靠性并增强可观测性。
Java SE Development Kit 22
- 性能优化。没错,你没听错:JDK 22.0.1在性能上进行了全面优化,让你的程序跑得更快、更稳定。
- 功能升级:
除了性能优化,JDK 22.0.1还带来了许多实用的新功能。比如,它支持更多的并发编程模型,让你的程序在多线程处理上更加得心应手。还有,它还提供了更丰富的API接口,让你的编程之路更加畅通无阻。
JDK 22 还有很多其他的优点,比如兼容性更强、安全性更高等等。总之,它绝对是你编程路上不可或缺的好帮手!
Java SE Development Kit 21
1. 语言特点
➜ 记录模式
使用记录模式增强 Java 编程语言以解构记录值。记录模式和类型模式可以嵌套,以实现强大的、声明性的、可组合形式的数据导航和处理。
➜ 开关模式匹配
switch通过表达式和语句的模式匹配增强 Java 编程语言。扩展模式匹配switch允许针对多个模式测试表达式,每个模式都有一个特定的操作,以便可以简洁、安全地表达复杂的面向数据的查询。
2. 库的改进
➜ 虚拟线程
将虚拟线程引入Java 平台。虚拟线程是轻量级线程,可以显着减少编写、维护和观察高吞吐量并发应用程序的工作量。
➜ 有序集合
引入新接口来表示具有定义的遭遇顺序的集合。每个这样的集合都有一个明确定义的第一个元素、第二个元素,依此类推,直到最后一个元素。它还提供统一的 API,用于访问其第一个和最后一个元素,以及以相反的顺序处理其元素。
3. 性能改进
➜ 世代ZGC
通过扩展 Z 垃圾收集器 ( ZGC ) 来维护年轻对象和老对象的不同代,从而提高应用程序性能。这将使 ZGC 能够更频繁地收集年轻对象(这些对象往往会在年轻时死亡)。
4. 管理职责
➜ 准备禁止动态加载代理
当代理动态加载到正在运行的 JVM 中时发出警告。这些警告旨在帮助用户为将来的版本做好准备,该版本默认情况下不允许动态加载代理,以提高默认情况下的完整性。在启动时加载代理的可服务性工具不会导致在任何版本中发出警告。
Java SE Development Kit 17
JDK17是Java开发套件长期支持版,Java SE订阅者可以在2026年9月前接受JDK17更新!就像Java11一样,Java11开始了一个新的发布节奏,Java11支持到2023年9月,扩展支持到2026年9月,在Java11中OracleJDK不再免费用于生产和商业用途,每6个月发布一个新的Java版本,即所谓的非LTS发布,从Java12直至并包括Java16,这些都是生产就绪版本,与LTS版本的唯一区别是支持在下一个版本发布时结束。
Java SE Development Kit 11
JDK11是Java开发套件长期支持版,Java SE订阅者可以在 2026年9月前接受JDK11更新!Java11支持到2023年9月,扩展支持到2026年9月,在Java11中OracleJDK不再免费用于生产和商业用途,每6个月发布一个新的Java版本,即所谓的非LTS发布,从Java12直至并包括Java16,这些都是生产就绪版本,与LTS版本的唯一区别是支持在下一个版本发布时结束。
Java SE Development Kit 8
Java 8是款革命性开发平台,其全面升级现有Java编程模式,带来一项协同开发的JVM、Java语言以及库。Java8平台集合生产力、易用性、多语种编程、更高安全性和稳定性等特色。Java 8 最大的改进就是Lambda表达式,其目的是使Java更易于为多核处理器编写代码;其次,新加入的Nashorn引擎也使得Java程序可以和JavaScript代码互操作;再者,新的日期时间API、GC改进、并发改进也相当令人期待。
其他LTS版本
- Java 21(JDK21):最新的LTS版本(2023年发布),维护期将持续至 2031年9月 或者2032年1月。
- Java 17(JDK17):上一代LTS版本(2021年发布),支持至2029年,目前仍有38%的开发者采用。
- Java 11(JDK11):首个付费LTS版本(2018年发布),免费支持已结束,企业需要订阅付费更新。
- Java 8(JDK21):2014年发布于2023年停止公开更新,42%企业仍在使用但面临安全与性能风险
JRE和JDK的区别
- 如果在学习或从事Java开发、编译java程序,那么安装JDK
- 如果仅需运行java程序,只需要Java运行库,那么安装JRE
- Java Development Kit(简称JDK)= Java开发套件,Java开发工具包,面向Java语言开发者。
- Java Runtime Environment(简称JRE)= Java运行库,Java运行环境,面向Java程序用户们。
- JDK:Java核心,含Java运行环境(JRE)、编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和Java工具类库(如tools.jar)源代码等java语言编译所需的工具包。
- JRE:Java语言开发的程序运行所需要的运行环境,包括JVM标准实现(java.exe等)及 Java核心类库(rt.jar等),它不包含开发工具(编译器、调试器等)
JAVA环境变量配置:
此电脑->右键->属性->高级系统设置->环境变量
1、「用户变量」和「系统变量」分别新建2条变量
变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_311(安装目录版本号路径)
2、「系统变量」双击->Path->编辑环境变量 -> 分别新建3条
%JAVA_HOME%\bin C:\Program Files\Java\jdk1.8.0_391\bin C:\Program Files\Java\jre1.8.0_391
# 检查JDK环境配置命令:
CMD 输入
java -version












微信扫一扫打赏
支付宝扫一扫打赏

