【JDK17】模块化现状

【JavaSE】JDK17的一些特性 从springboot3.0开始,已经不⽀持JDK8了选⽤Java17,概括起来主要有下⾯⼏个主要原因JDK17是LTS(⻓期⽀持版),可以免费商⽤到2029年。⽽且将前⾯⼏个过渡版(JDK9-JDK16) 去其糟粕,取其精华的版本JDK17性能提升不少,⽐如重写了底层NIO,⾄少提升10%起步;⼤多数第三⽅框架和库都已经⽀持,不会有什么⼤坑;逸狼如有错误,欢迎指出~目录前言yield关键字密封类接口中的私有方法instanceof。 阅读详情

当今人工智能火热,传统编程赛道倒春寒。现今 Java17 逐渐普及,新一代程序员起手就使用 17 或 21,故而编写一个科普文章,以了解被拆的 JDK 现状,为新一代 java 应用容器化进程铺平道路。
以下是 Java 17 中所有模块的完整列表,按功能分类整理。不同 JDK 发行版(如 Oracle JDK、OpenJDK)可能略有差异,但核心模块基本一致。


标准模块(Java SE 模块)

这些模块属于 Java 标准库,名称以 java. 开头:

模块名功能描述
java.base基础模块(必须包含),包含 java.lang、java.util、java.io 等核心类库
java.compilerJava 编译器 API(javax.tools、javax.annotation.processing)
java.datatransfer数据传输(如剪贴板操作)
java.desktopGUI 支持(AWT、Swing、系统托盘等)
java.instrumentJVM 代理和检测工具(如 java.lang.instrument)
java.logging日志系统(java.util.logging)
java.managementJMX 管理 API(监控 JVM)
java.management.rmiJMX 的 RMI 远程管理支持
java.namingJNDI(Java 命名和目录接口)
java.net.httpHTTP 客户端(Java 11+ 新增)
java.prefs用户偏好配置(java.util.prefs)
java.rmi远程方法调用(RMI)
java.scripting脚本引擎(如 Nashorn JavaScript 引擎)
java.se聚合模块,包含所有标准模块(除 java.enterprise)
java.security.jgssGSS-API 安全认证
java.security.saslSASL 认证框架
java.smartcardio智能卡接口(javax.smartcardio)
java.sqlJDBC 数据库连接
java.sql.rowsetJDBC RowSet API
java.transaction.xaJTA XA 事务管理
java.xmlXML 处理(DOM、SAX)
java.xml.cryptoXML 加密(javax.xml.crypto)

JDK 专用模块

这些模块属于 JDK 实现细节或工具支持,名称以 jdk. 或 jdk.internal. 开头:

模块名功能描述
jdk.accessibility辅助技术(如屏幕阅读器)支持
jdk.attachJVM 附加机制(如 com.sun.tools.attach)
jdk.charsets扩展字符集(如 IBM-037、GB18030)
jdk.compilerJava 编译器实现(javac)
jdk.crypto.cryptokiPKCS#11 加密提供者
jdk.crypto.ec椭圆曲线加密(ECC)支持
jdk.crypto.mscapiMicrosoft CryptoAPI 集成(Windows 平台)
jdk.dynalink动态语言支持库(如 Nashorn 使用)
jdk.editpad编辑面板支持(内部工具)
jdk.hotspot.agentJVM HotSpot 诊断代理
jdk.httpserver轻量级 HTTP 服务器(com.sun.net.httpserver)
jdk.incubator.foreign外部函数和内存 API(实验性功能)
jdk.jartoolJAR 工具(jarsigner、jar)
jdk.javadocJavadoc 工具
jdk.jconsoleJConsole 监控工具
jdk.jdepsjdeps 依赖分析工具
jdk.jdiJVM 调试接口(JDWP)
jdk.jdwp.agentJDWP 代理实现
jdk.jfrJava Flight Recorder(JFR,性能分析工具)
jdk.jlinkjlink 工具(生成自定义运行时镜像)
jdk.jpackagejpackage 工具(打包原生应用)
jdk.jshellJShell(REPL 交互式编程工具)
jdk.jsobjectJavaScript 对象支持(浏览器集成)
jdk.jstatdjstatd 守护进程(监控 JVM 统计信息)
jdk.localedata本地化数据(如日期格式)
jdk.managementJVM 管理扩展(如 com.sun.management)
jdk.management.agentJMX 管理代理
jdk.management.jfrJFR 管理 API
jdk.naming.dnsDNS 命名服务提供者
jdk.naming.rmiRMI 命名服务提供者
jdk.net网络扩展(如 jdk.net.ExtendedSocketOptions)
jdk.nio.mapmode内存映射文件模式支持(ExtendedMapMode)
jdk.random随机数生成器(L32X64MixRandom 等)
jdk.sctpSCTP 协议支持
jdk.security.auth安全认证扩展(如 JAAS)
jdk.security.jgssJGSS 安全服务扩展
jdk.unsupported非标准 API(如 sun.misc.Unsafe,不推荐使用)
jdk.xml.domJDK 扩展的 DOM API(如 org.w3c.dom.css)
jdk.zipfsZIP 文件系统提供者(java.nio.file)

服务提供者模块

这些模块包含特定服务的实现:

模块名功能描述
jdk.dynalink动态语言支持服务
jdk.naming.dnsDNS 命名服务提供者
jdk.naming.rmiRMI 命名服务提供者
jdk.security.auth安全认证服务提供者

查看所有模块的方法

在命令行中运行以下命令,可列出当前 JDK 的所有模块:

java --list-modules

关键注意事项

  1. 依赖传递性:

    • java.base 是所有模块的隐式依赖。
    • 使用 jlink 创建自定义运行时镜像时,需显式声明所有直接和间接依赖模块。
  2. 非标准模块:

    • jdk.unsupported 包含高风险 API(如 sun.misc.Unsafe),需谨慎使用。
    • jdk.internal.* 模块是 JDK 内部实现,禁止直接依赖。
  3. 平台差异:

    • 部分模块(如 jdk.crypto.mscapi)仅在特定操作系统(如 Windows)中可用。

通过合理选择模块,可大幅减少应用分发体积(例如,仅包含 java.base 的运行时镜像约 40MB)。

macOS 安装JDK17 近期找开源软件,发现很多都已经使用JDK17+springboot3 了,之前的JDK8已经被替换下场,所以今天就在本机安装了JDK17,拥抱变化。JDK 17 是 Java 平台标准版(Java SE)的一个功能发布版本,于2021年9月14日正式发布。 阅读详情

相关推荐

在JDK17尝鲜Flink1.17

在JDK17尝鲜Flink1.17 前言 还没玩明白老版本,Flink1.17就来了!!!总还是要向前看的。。。 根据官网文档:https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/try-flink/local_installation/ Flink runs on all UNIX-like environments, i.e. Linux, Mac OS X, and Cygwin (for Windows). You nee

虎鲸不是鱼 6672

JDK之模块化

Java模块化是JVM核心项目之一,从JDK9开始商业化运作,简称是JPMS(Java 9 Platform Module System),这项技术当时被认为是Java技术最重要的软件工程新技术。模块化项目的发展源自于Project Jigsaw,该项目能帮助开发者从更多层次上、更具创造性地、更具可维护性地构建与演进软件工程,特别适用于大型软件项目工程...

wys的专栏 2145

JDK17特性

JDK 16 刚发布半年(2021/03/16),JDK 17 又如期而至(2021/09/14)

小兔子的博客 1558

JDK模块化之简单示例

JDK模块化简单示例

有问题的请私信或关注v【技术印记】留言 1681

JDK8升级JDK17过程中遇到的那些坑

JDK8虽然非常好,但是JDK版本已经发布到JDK20了,且JDK8后的版本升级了很多新的特性,如模块化、ZGC以及虚拟线程、结构性并发等,也是非常有吸引力的,所以决定将基于JDK8的项目升级到最近的LTS版本JDK17。

BASK2312的博客 6686

Xilinx PCIe IP核示例工程仿真流程与关键任务解析

本文详细解析了Xilinx PCIe IP核示例工程的仿真流程与关键任务。通过搭建仿真环境、解读初始化日志,并深入剖析TSK_TX_MEMORY_WRITE_32等核心任务的TLP报文生成与交互过程,帮助开发者掌握PCIe IP核的仿真调试方法,为实际硬件设计提供可靠的验证基础。

weixin_28314575的博客 508

Win11 系统Java17的安装教程:最新版JDK 17.07下载、安装、卸载详解(最新版安装包点击文末名片免费获取)

本文将介绍最新版 JDK 17.07 的下载、安装和卸载操作,并配有详细的图文演示。主要针对 Win11 系统下 Java17 的安装教程。文章包含了安装步骤、注意事项、卸载教程等内容,适合对Java感兴趣的读者学习参考。作为一个Java开发者,最新版的JDK总是不容错过的。本文将为大家详细介绍如何下载、安装和卸载JDK 17.07,并附上详细的操作演示,为读者提供方便快捷的学习资源。今天我学习了最新版 JDK 17.07 的下载、安装和卸载操作,并根据自己的实际操作经验撰写了相关文章。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1万+

Open5GS实战:从零搭建树莓派5G核心网并与商用终端联调

本文详细介绍了如何在树莓派5上从零开始搭建基于Open5GS的5G核心网,涵盖系统准备、依赖安装、源码编译、关键配置修改及服务启动全流程。通过整合SDR基站与商用终端进行端到端联调,为开发者和研究者提供了一个低成本、可实践的5G网络实验平台,助力物联网与边缘计算应用的本地化测试与验证。

weixin_29194255的博客 161

Windows配置java1.8环境变量

参考链接:https://www.runoob.com/java/java-environment-setup.html 配置环境变量 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置"; 2.选择"高级"选项卡,点击"环境变量"; 在 "系统变量" 中设置 3 项属性,JAVA_HOME、PATH、CLASSPATH(大小写无所谓),若已存在则点击...

aizi3866的博客 451

LIGGGHTS开源离散元仿真:从基础安装到高级应用实战

本文详细介绍了LIGGGHTS开源离散元仿真软件的基础安装、脚本编写及高级应用实战。从颗粒自由落体模拟到工业级复杂系统建模,涵盖CFD-DEM耦合、高性能计算优化等关键技术,帮助用户快速掌握这一强大的颗粒仿真工具。特别适合需要处理颗粒系统仿真的科研人员和工程师。

l1k9j8h7g6的博客 620

峰值电流模式CCM BUCK的传递函数推导

电流内环闭环传递函数: Gci(s)=i^L(s)v^comp(s)=FmGid(s)1+KRiHe(s)FmGid(s)=1Ri11+s[mcL+(0.5VIN−Vo)RiVINRifSW]+s21(πfSW)2 G_{ci}(s)=\frac{\hat i_{L}(s)}{\hat v_{comp}(s)}=\frac {F_mG_{id}(s)}{1+KR_iH_e(s)F_mG_{id}(s)}=\frac{1}{R_i}\frac{1}{1+s[\frac{m_cL+(0.5V_{IN}-V_o)

c007106333的博客 2360

JDK 17 模块化系统:构建可维护大型项目的基石

JDK 17 的模块化系统已然重塑 Java 大型项目开发格局,从代码组织的底层逻辑出发,用清晰边界、精准依赖、灵活扩展,为项目披上坚固 “铠甲”,抵御复杂性 “侵袭”。展望未来,随着云计算、微服务蓬勃发展,模块化理念将扎根更深。更多适配分布式架构的模块化工具、框架必将涌现,持续简化复杂系统开发流程,让开发者能更专注于业务创新,在代码世界 “开疆拓土”,铸就更多软件传奇。愿你也能紧握模块化 “利剑”,在项目实战中披荆斩棘,一往无前。

心猿意码 1252

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2320

模块化的优势:JDK 17与JDK 21中模块化如何提升项目维护性与性能?

模块化的优势:JDK 17与JDK 21中模块化如何提升项目维护性与性能? 引言:模块化的重要性与发展背景 模块化是现代Java开发的重要趋势,从JDK 9引入的模块化系统(JPMS),到JDK 17与JDK 21的增强,开发者逐步认识到模块化对代码结构优化与性能提升的巨大作用。 在这篇文章中,猫头虎将深入解析: 什么是Java模块化? 🚀 模块化如何提升项目维护性与性能? 在JDK 17与JDK 21中的具体增强点与应用场景。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 2322

【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试

本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、

2501_92897788的博客 2288

MIC:最大信息系数

目录 1. 概念 1.1 MIC 1.2 互信息 2.MIC的优点 3. 算法原理 3.1 MIC公式原理 3.2MIC计算步骤 (1)计算最大互信息值 (2)对最大的互信息值进行归一化 (3)选择不同尺度下互信息的最大值作为MIC值 4. 代码实现 6. 其他方法 1. 概念 1.1 MIC MIC,即(Maximal Information...

满腹的小不甘 5万+

JDK17 - 开发者视角,从 JDK8 ~ JDK17 都增加了哪些新特性

本文只是站在开发者视角,来看看升级哪些咱们程序员常用的功能~经过统计,空指针异常是导致 Java 应用程序失败的最常见原因,因此 Google 公司 引入了Optional 类以检查空值的方式来避免空指针异常,使程序员写出更干净的代码.Optional 类(Java.util.Optional)是一个容器类,可以保存类型T值,表示这个值存在。或者,也可以只保存 null,表示这个值不存在。也就是说,以前用 null 表示一个值不存在,现在 Optional 就可以更好的表达这个概念,避免空指针异常.

CYK_byte的博客 1万+

常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法

介绍: 74LVC1T45是一个单位双向可控电平转换芯片。   芯片特性: 1、宽供给电压范围:1.65V到5.5V; 2、3.3V时,可输出24mA电流; 3、最大16uA电能损耗; 4、高噪音抑制;   型号:   引脚: VCC(A) 1 A端和DIR电源 GND 2 地 A 3 数据输入/输出 B 4 ...

snmplink的博客 1万+

从jdk8升级到jdk17

从java8升级到java17,一篇文章讲完所有新特性

这里的分享,都是干货 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JDK 8、JDK 11和JDK 17的区别与选择

JDK 8因其成熟的生态和稳定的性能被广泛使用;JDK 11在性能和安全性上进行了提升,并引入了便于开发的新特性;而JDK 17作为最新的长期支持版本,代表了Java的最新技术,适用于追求最新技术和需要更好性能的场景。

2401_83070016的博客 3761

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JDK17模块化、反射类加载限制绕过

对于作者来说JDK17带来的最大便利就是文本块和记录类了,前者是我这个Python老玩家很喜欢的一点,后者在很大程度上简化了DTO,这回不用讨论引Lambok的问题啦。创建位置: 模块根目录命名: module名称的要求和准则跟包一样。

m0_63570394的博客 1843

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

比较 JDK 8 与 JDK 17 的区别

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

m0_68705273的博客 1万+

十一、 JDK17 新特性梳理

​ “你发任你发,我用 Java8”。虽然业界现在对于 JDK8 后每半年更新一次的 JDK 新版本都保持着比较谨慎的态度,但是 JDK17是一个 Java 程序员不得不去关注的新版本。最直观的原因是,作为现代 Java 应用基石的 Spring 和 SpringBoot ,都在新版本中走出了抛弃 JDK8,支持 JDK17 的这一步。​ 你或许不一定需要像技术极客一样去紧追 JDK 各种令人眼花缭乱的最新特性,但是 JDK17 却是每个 Java 程序员必须走出的下一个里程碑。

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 7460

JDK17的下载安装(与JDK1.8相互切换)

JDK版本自JDK8之后,每隔半年发布一个新版本,但是流行着一个名言:你发任他发,我用Java8。今天我们记录的是下载安装JDK17。博客主要记录了JDK17的下载安装,有啥错误或不足地方请指正,如果对你有所帮助,请一键三连。

YangCunle的博客 3万+

JDK8和JDK17安装切换,IDEA配置多个版本JDK

JDK 是 Java Development ToolKit 的简称,也就是 Java 开发工具包。JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime Envirnment,简称 JRE),Java 工具(比如 javac、java、javap 等等),以及 Java 基础类库(比如 rt.jar)

Lifelong learning 1万+

JDK17新特性(JDK8到JDK17的新特性)

比如对java的gui不满意,可以自己实现一个gui,对java的语法不满意,可以把javac替换成其他语言和其他语言的编译器,比如kotlin和kotlinc等,没有模块化,几乎很难实现,每次修改某个模块,总不能把整个jdk给重新编译一遍,再发布一个整个sdk吧,模块化可以帮助更有效的定制化和部署。

sv 1337
上一篇: 【容器镜像】:rootfs与容器关联要点
下一篇: 【JDK17】Jlink一秒生成精简的JRE
旷野说
博客等级 码龄9年 361粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值