JDK14中的java tools简介

简介: JDK14中的java tools简介

目录



故事发生了


在还没有IDE的时代,高手们还是通过记事本来编程。那时候能够写程序的都是牛人。


能把程序写得好的更是牛人中的牛人。


秃头大叔的程序员形象就是在那个时候建立起来的。


还记得十几年前的那一个春天,微风不动,太阳都羞红了脸。因为那时候的我还在一个javac,一个java的编译,运行着java程序。


虽然效率低下,但是看着我跑起来的一个又一个hello world,心里充满了欢喜。


惊喜过后便是失落,java实在太难用了太复杂了,我还是回去写C语言吧。


直到有一天,有人向我推荐了eclipse,它就像是一道闪电照亮了我前进的方向。从此什么javac,java都见鬼去吧,我只要eclipse。


很多年之后,我从eclipse转向了IDEA,开发工具越来越趁手,然后我已经差不多快忘记了java原来还提供了一系列的java tools供我们使用。


都说要勿忘初心,于是借着JDK14的发布,我又一次回顾了java tools提供的工具,居然有了惊喜的发现。


java tools简介


JDK14中提供了多达31中工具,惭愧的是,第一次看到它们我只认识其中的部分。士知耻而后勇,于是我奋发图强,终于在今天将它们全都认识了。


31一个工具,这里我先简单介绍一下,后续再针对复杂的,特别有用的工具做一个专门的说明。


以下排名仅按字母顺序,不代表任何个人观点


jaotc


一个java的静态编译器,为编译好的java方法生成native代码。


jar


jar包大家都很熟悉了,使用jar命令可以用来打包和解压jar文件。


jarsigner


jar包打完了,使用jarsigner来对jar包做签名和认证。


java


使用java可以运行java程序。


javac


javac用来编译java文件,将文本文件编译成二进制的class文件。


javadoc


javadoc可以将代码中写的注释文档生成HTML页面供大家参考。如果你有看过JDK的源代码的话,可以看到源代码里面写了很多注释。大家可以学习一下。因为注释很重要。


javap


java自带的反编译工具,可以将二进制的class文件反编译成为人类可读的代码。


这个反编译工具可能不够IDE自带的反编译工具强大。


jcmd


这里的d代表的是diagnostic,通过这个命令可以对正在运行的JVM进行调试。


这是一个非常有用的调试工具,我们在后面的文章中会详细讲解。

jconsole

jconsole是一个GUI客户端,可以对现有的java程序进行管理。


他们的连接协议是JMX。不知道为什么国内的公司好像很少用到JMX。um...这个问题等我有时间了研究一下。


jdb


Java Debugger (JDB)是一个命令行的debug工具,提供了一系列的debug程序的功能。


jdeprscan


jdeprscan是一个分析工具,用来扫描jar或者class文件中的deprecated API。


jdeps


jdeps是一个java class依赖的分析工具。


jfr


jfr是Java Flight Recorder的缩写,jfr是java应用程序的分析工具。它可以收集JVM在运行期间所产生的一系列事件,并生成文件和分析。


后面我们会用一篇文章详细讲解JFR。


jhsdb


jhsdb是一个分析工具,可以分析正在运行的java程序中,也可以分析coredump。


jinfo


jinfo为特定的java进程生成运行时的java配置信息。


jjs


jjs用来运行Nashorn engine。



从JDK9之后,java已经模块化了。jlink可以将模块和他们的依赖组织起来,生成一个自定义的运行时环境。


jmap


jmap可以打印出某个java进程的堆信息。我们会在后面的文章中详细讲解。


jmod


jmod用来创建和解析JMOD文件。


jpackage


jpackage可以用来打包自运行的java程序。


jps


列出机子上面的java进程。


jrunscript


启动一个命令行shell,这个shell支持交互和批处理模式。


jshell


一个可互动的java shell环境。


jstack


打印java stack信息,主要用在debug中。后面我们会详细讲解。


jstat


用于监控JVM的统计信息。


jstatd


jstatd是一个RMI服务程序,用来远程监控JVM。


keytool


生成和管理密钥,证书的工具。


rmic


用来生成远程方法调用的stub和skeleton类。


rmid


启动一个守护进程,允许在JVM中注册和实例化对象。


rmiregistry


创建一个RMI对象的注册器。


serialver


为一个或多个class生成serialVersionUID。


总结


以上的31个工具就是JDK14提供的。后面我们会挑其中几个对我们的程序调试和定位问题非常有用的几个工具来讲解。

相关文章
|
16天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
36 1
|
3月前
|
Oracle 安全 Java
Java语言简介及发展
Java语言简介及发展
|
13天前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
1月前
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
53 11
|
1月前
|
监控 Java 大数据
【Java内存管理新突破】JDK 22:细粒度内存管理API,精准控制每一块内存!
【9月更文挑战第9天】虽然目前JDK 22的确切内容尚未公布,但我们可以根据Java语言的发展趋势和社区的需求,预测细粒度内存管理API可能成为未来Java内存管理领域的新突破。这套API将为开发者提供前所未有的内存控制能力,助力Java应用在更多领域发挥更大作用。我们期待JDK 22的发布,期待Java语言在内存管理领域的持续创新和发展。
|
1月前
|
Oracle Java 关系型数据库
【颠覆性升级】JDK 22:超级构造器与区域锁,重塑Java编程的两大基石!
【9月更文挑战第6天】JDK 22的发布标志着Java编程语言在性能和灵活性方面迈出了重要的一步。超级构造器和区域锁这两大基石的引入,不仅简化了代码设计,提高了开发效率,还优化了垃圾收集器的性能,降低了应用延迟。这些改进不仅展示了Oracle在Java生态系统中的持续改进和创新精神,也为广大Java开发者提供了更多的可能性和便利。我们有理由相信,在未来的Java编程中,这些新特性将发挥越来越重要的作用,推动Java技术不断向前发展。
|
2月前
|
Java API Apache
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
|
2月前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
2月前
|
Java API 开发者
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
|
2月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
114 0