JDK 自带的命令行工具随着版本演进变化很大:CORBA、JAX-WS/JAXB、Java Web Start 等整套技术栈在 JDK 11 前后被移除,一批老工具也随之消失;同时 jshell、jlink、jpackage、jhsdb 等是后来才加入的。本文按「现在还在用」「名存实亡」「已从 JDK 移除」三类整理,方便判断一个工具在 JDK 26 上还值不值得用。

仍在用的核心工具

分类 工具 用途
编译与运行 java 运行 class/jar,也可直接运行单文件源码
编译与运行 javac 编译 Java 源码
编译与运行 jshell REPL,交互式执行 Java 代码(JDK 9 引入)
打包与模块 jar 打包/解包 jar 文件
打包与模块 jlink 生成裁剪后的自定义运行时镜像(JDK 9 引入)
打包与模块 jmod 创建和查看 jmod 模块文件(JDK 9 引入)
打包与模块 jpackage 生成平台原生安装包(JDK 14 引入,见下文 javapackager 的替代)
签名与安全 jarsigner jar 签名与验证
签名与安全 keytool 密钥、证书管理
文档与静态分析 javadoc 生成 API 文档
文档与静态分析 javap 反汇编 class 文件
文档与静态分析 jdeps 分析类/模块依赖关系(JDK 8 引入)
文档与静态分析 jdeprscan 扫描代码中用到的已废弃 API(JDK 9 引入)
文档与静态分析 jnativescan 扫描 FFM API(java.lang.foreign)受限方法调用(JDK 22 引入)
诊断与监控 jcmd 向运行中的 JVM 发送诊断命令,官方现在推荐的统一入口,详见 jcmd
诊断与监控 jconsole 图形化 JMX 监控
诊断与监控 jfr Flight Recorder 命令行工具,详见 Java Flight Recorder
诊断与监控 jhsdb HotSpot Serviceability Agent 统一入口,整合了旧版 jsadebugd/SA 调试功能(JDK 9 引入)
诊断与监控 jps 列出本机 JVM 进程
诊断与监控 jstat / jstatd JVM 统计信息采集 / 远程统计信息服务
诊断与监控 jwebserver 内置的简单静态文件 HTTP 服务器(JDK 18 引入)
调试 jdb 命令行调试器
RMI rmiregistry RMI 远程对象注册表
脚本 jrunscript 命令行脚本外壳工具,见下文「名存实亡」
其它签名工具 serialver 生成 serialVersionUID
Windows 专属 javaw 不弹控制台窗口运行 Java 程序
Windows 专属 jabswitch / jaccessinspector / jaccesswalker Java Access Bridge 开关与辅助功能检查工具
Kerberos kinit / klist / ktab Kerberos 票据与密钥表管理

名存实亡:还在但不建议依赖

这几个工具没有被移除,仍出现在最新 JDK 的工具列表里,但官方已经不建议把它们当作首选:

工具 现状
jstack / jmap / jinfo Oracle 文档标注为 experimental、no compatibility guarantee,功能已被 jcmd 覆盖(如 jcmd <pid> Thread.print、jcmd <pid> GC.heap_dump),详见 jstack
jrunscript 历史上默认靠 Nashorn 引擎执行 JavaScript;Nashorn 在 JDK 15 被移除后,jrunscript 本身没删,但默认没有可用的 JS 引擎,需要自行在 classpath 放一个 JSR 223 脚本引擎才能用
jmc(JDK Mission Control) JDK 11 起不再随 JDK 一起分发,需要单独下载;作为 JFR 数据的离线分析界面依然是官方推荐工具
jvisualvm(VisualVM) JDK 9 起移出 JDK 发行包,独立成开源项目;本地临时排查可用,生产环境更推荐 JFR + JMC + async-profiler,详见 VisualVM

已从 JDK 移除的过时工具

以下工具在对应版本之后已经从 JDK 里彻底删除,不要再基于它们写新脚本或文档:

工具 原用途 移除版本 现在怎么做
apt 注解处理工具 JDK 8(JEP 117) 用 javac 内置的 Annotation Processing(-processor)
jhat 堆快照分析 JDK 9(JEP 241) 用 jmap/jcmd 生成 heap dump,再用 Eclipse MAT 或 VisualVM 分析
extcheck 检测扩展 jar 版本冲突 JDK 9 扩展机制(ext 目录)本身已随模块化废弃
native2ascii 文本编码与 ASCII/Unicode 转义互转 JDK 9 资源文件直接用 UTF-8,无需转换
java-rmi.exe / java-rmi.cgi 浏览器触发 RMI 类加载的辅助程序 JDK 9/10 该机制已废弃,不再使用
jsadebugd 独立的远程调试代理守护进程 JDK 9 起被 jhsdb debugd 取代 用 jhsdb debugd
javah 生成 JNI C/C++ 头文件 JDK 10(JEP 313) 用 javac -h
policytool 图形化编辑权限策略文件 JDK 10 直接手写 .policy 文本文件
appletviewer 运行浏览器 Applet JDK 11 Applet 技术已彻底废弃
javaws / Java Web Start / Java Plugin 从网页下载运行 Java 应用 JDK 11 改用普通桌面安装包,见 jpackage
javapackager 打包可执行程序(随 JavaFX) JDK 11 用 jpackage(JDK 14 引入,JEP 343)
idlj / orbd / servertool / tnameserv CORBA 相关工具 JDK 11(JEP 320) CORBA 已从 JDK 移除,需要用第三方 ORB 实现
schemagen / xjc JAXB(XML 数据绑定) JDK 11(JEP 320) 改用独立发布的 JAXB/Jakarta XML Binding 参考实现
wsgen / wsimport JAX-WS(Web Service 客户端/服务端生成) JDK 11(JEP 320) 改用独立发布的 JAX-WS/Jakarta XML Web Services 实现
pack200 / unpack200 JAR 高效压缩传输 JDK 14(JEP 367,JDK 11 弃用) 现代带宽下已无必要,直接传输普通 jar
jjs 运行 JavaScript(Nashorn 引擎) JDK 15(随 Nashorn 一起移除) 需要嵌入式 JS 可用 GraalVM 或独立 Nashorn 库
rmic 生成 RMI stub/skeleton JDK 15 动态代理早已替代静态 stub 生成,无需 rmic

参考

维护记录

时间 修改内容 原因
2026-07-16 标题、分类改为 language;标签由 reprint 改为 remix + AI-assisted;全文按「仍在用」「名存实亡」「已移除」三类重新整理,逐条核实每个工具的移除版本(JEP 编号);删除与 JDK 无关的「packager(微软对象包装程序)」条目;补充 jshell/jlink/jpackage/jhsdb/jfr 等后来加入的工具 原文是 2017 年按官方文档逐条翻译的工具清单,未反映 JDK 9~15 期间大量工具被移除的现状,用户想知道哪些工具已过时不建议使用