Java | 一分钟掌握JDK命令行工具 | 2- 分类
作者:Mars酱
声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。
转载:欢迎转载,转载前先请联系我!
JDK命令行工具分类
命令行工具按照功能可以分为以下几个重要的大类:
主要工具
主要工具是用来完成主要工作的(废话),比如:编译、反编译、打包等等,以下是常见的:
javac
:您可以使用javac工具及其选项来读取Java类和接口定义,并将它们编译为字节码和类文件。javap
:使用 javap 命令反汇编一个或多个类文件。javadoc
:您可以使用 javadoc 工具及其选项从 Java 源文件生成 API 文档的 HTML 页面。java
:您可以使用 java 命令启动 Java 应用程序。jar
:您可以使用 jar 命令为类和资源创建归档,以及从归档中操作或恢复单个类或资源。jlink
:可以使用 jlink 工具将一组模块及其依赖项组装和优化为自定义运行时映像。jmod
:您可以使用 jmod 工具创建 JMOD 文件并列出现有 JMOD 文件的内容。jdeps
:使用 jdeps 命令启动 Java 类依赖关系分析器。jdeprscan
:您可以使用 jdeprscan 工具作为静态分析工具,扫描 jar 文件(或类文件的其他一些聚合)以查找已弃用的 API 元素的使用。
JShell(勾壳)
勾壳
是我我自己翻译的,毕竟我bia级专业英语。jshell是JDK 9中引入的交互式命令行工具,我们可以:
- 快速验证想法:可以在不需要编写完整Java程序的情况下,快速验证代码想法和代码块 ;
- 调试和测试:可以用于调试和测试Java代码,在控制台中即时查看输出结果或者异常信息,尤其对于简单的代码块或者函数可以很方便的测试
- 提高开发效率:可以帮助Java开发者快速地编写和测试代码,尤其可以节省编写测试代码的时间,并且减少编写单元测试的负担
安全工具
安全工具我就用来生成过密钥对,但是实际上还有其他的功能。安全工具在系统上设置安全策略,并创建可在远程站点设置的安全策略范围内工作的应用程序:
keytool
:使用 keytool 命令和选项来管理加密密钥、X.509 证书链和受信任证书的密钥库(数据库)。jarsigner
:使用 jarsigner 工具对 Java 归档 (JAR) 文件进行签名和验证。
以下在 Windows 上可以管理 Kerberos 票证:
kinit
:使用 kinit 工具及其选项获取和缓存 Kerberos 票证授予票证。klist
:使用 klist 工具显示本地凭证缓存和密钥表中的条目。ktab
:使用 ktab 工具来管理存储在本地密钥表中的主体名称和服务密钥。
远程方法调用 (RMI) 工具
支持创建通过 Web 或其他网络进行交互的应用程序:
rmic
:使用 rmic 编译器通过 Java 远程方法协议 (JRMP) 生成存根和框架类文件。rmiregistry
:在基于 UNIX 的系统上使用 rmiregistry 命令在当前主机上的指定端口上创建和启动远程对象注册表。rmid
:使用 rmid 命令启动激活系统守护程序,该守护程序允许在 Java 虚拟机 (JVM) 中注册和激活对象。serialver
:使用 serialver 命令以适合复制到不断发展类的形式返回一个或多个类的serialVersionUID。
监控工具
这个是比较常用的工具,一般我们用来查看java进程信息:
jconsole
:这个是图形化的控制台,可以用来监视、管理、分析运行中的Java进程、应用程序。jps
:使用 jps 命令列出目标系统上已检测的 JVM。
jstat
:使用 jstat 命令来监视 JVM 统计信息。jstatd
:使用 jstatd 命令监视已检测的 Java HotSpot VM 的创建和终止。
故障排除工具
同样比较常见,我们用来分析和做故障排除任务:
jcmd
:使用 jcmd 实用程序将诊断命令请求发送到正在运行的 Java 虚拟机 (JVM)。jdb
:使用 jdb 命令及其选项来查找和修复 Java 平台程序中的错误。jhsdb
:使用 jhsdb 工具从崩溃的 Java 虚拟机 (JVM) 附加到 Java 进程或核心转储。
jinfo
:使用 jinfo 命令为指定的 Java 进程生成 Java 配置信息。请使用 jhsdb jinfo。jmap
:使用 jmap 命令打印指定进程的详细信息。但是官方推荐使用jhsdb jmap
。jstack
:使用 jstack 命令打印指定 Java 进程的 Java 线程的 Java 堆栈跟踪。但是官方推荐使用jhsdb jstack
。
最后
最后就是使用上面的命令排列组合,来应对各种各样的场景了。不过感觉基本上很少人使用主要工具命令行去做编译工作,毕竟现代编码需要集成性编译环境,但是我们掌握如何使用这些命令行工具,可以帮助我们分析系统的性能还是很有用的。
转载自:https://juejin.cn/post/7221461552342515772