1. Java编译器:javac
javac 实用程序是你可以在 JDK 的 bin 目录中找到的最重要的命令行界面 (CLI) 工具。这是 Java 编译器,无论你使用 Maven、Gradle、SpringSource IDE 还是 Jenkins CI,在编译 Java 源代码时都会使用这个 JDK 工具。
但是,如果所有流行的构建框架都只是抽象了它的使用,为什么开发人员需要了解 javac 命令行程序呢?好吧,当项目的构建和部署管道中出现难以诊断的问题时,故障排除从工具链中最基本的组件开始,而这通常是编译代码的地方。当构建横向运行时,开发人员通常需要将所有花哨的打包和部署工具放在一边,并恢复到首要原则。这意味着使用 JDK 的 javac 实用程序编译代码。
2. Java 分析器:javap
你可以将 Java 命令行工具 javap 视为对 javac 实用程序的补充。 当 javac 编译代码时,javap 实用程序反转该编译并提供有关已编译类的信息,例如它声明的变量类型,以及它提供的各种方法和 API。 javap JDK 工具不会将已编译的类完全返回为其原始源代码格式,但它确实提供了有关原始源代码设计方式的见解。
javap命令行程序也可以用来查看用于创建类文件的编译器版本,这对故障排除很有帮助。 此外,javap 工具可以向你显示编译器为类创建的字节码,并提供有关组件如何执行其逻辑的见解。
3. Java 统计聚合器:jstat
你的应用程序是否遇到运行时问题?为什么不打开 jstat 实用程序?
两个最常调整的 Java 虚拟机 (JVM) 参数是堆大小和 Java 运行时环境 (JRE) 的垃圾收集算法。这个统计监控 Java CLI 工具提供了类加载器指标、即时编译器如何工作的见解,以及最重要的是,关于垃圾收集发生频率的数据。有了这些统计数据,你就可以就如何配置 JVM 以获得最佳性能做出明智的决定。
4.Java依赖管理器:jdeps
使用 Java 12,将不允许编译任何引用内部 API 的代码库。在不久的将来,即使链接到引用内部 API 的已编译组件也会触发构建失败。如果你想知道任何现有代码是否使用或引用了内部 Java API,jdeps Java CLI 应用程序会告诉你。此外,如果它确实在你的源代码中识别出对内部 API 的引用,它通常会提供有关更新的、更可取的 API 的建议,你可以使用它来替换坏的 API。
5. Java 归档实用程序:jar
创建压缩归档文件并没有什么特别神奇的地方,这是 Java jar 实用程序的主要用途。但是这个 Java 命令行工具还有其他一些有用的特性。除了能够创建压缩的 zip 文件外,jar 实用程序还可用于指定可执行或嵌入式 JAR 文件的入口点、配置在 JRE 上运行时使用的选项,甚至记录 JAR 文件的内部内容。当你想将一个版本的代码版本与另一个版本进行比较时,Jar 会很有用。当然,除了能够压缩文件之外,JDK 工具 jar 还可以用于提取归档文件的内容。
JDK 的 bin 目录中还打包了许多其他有趣的 Java 命令行界面工具,研究它们并探索它们的实用程序符合每个 Java 开发人员的较大利益。但是这些前面提到的 Java 命令行工具——即 javac、javap、jstat、jdeps 和 jar——是认真的软件开发人员需要知道的五个。