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提供的。后面我们会挑其中几个对我们的程序调试和定位问题非常有用的几个工具来讲解。

相关文章
|
4月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
91 2
|
26天前
|
存储 JavaScript Java
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
|
2月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
116 53
|
3月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
32 1
|
4月前
|
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问题的解决
|
4月前
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
84 11
|
4月前
|
监控 Java 大数据
【Java内存管理新突破】JDK 22:细粒度内存管理API,精准控制每一块内存!
【9月更文挑战第9天】虽然目前JDK 22的确切内容尚未公布,但我们可以根据Java语言的发展趋势和社区的需求,预测细粒度内存管理API可能成为未来Java内存管理领域的新突破。这套API将为开发者提供前所未有的内存控制能力,助力Java应用在更多领域发挥更大作用。我们期待JDK 22的发布,期待Java语言在内存管理领域的持续创新和发展。
|
4月前
|
Oracle Java 关系型数据库
【颠覆性升级】JDK 22:超级构造器与区域锁,重塑Java编程的两大基石!
【9月更文挑战第6天】JDK 22的发布标志着Java编程语言在性能和灵活性方面迈出了重要的一步。超级构造器和区域锁这两大基石的引入,不仅简化了代码设计,提高了开发效率,还优化了垃圾收集器的性能,降低了应用延迟。这些改进不仅展示了Oracle在Java生态系统中的持续改进和创新精神,也为广大Java开发者提供了更多的可能性和便利。我们有理由相信,在未来的Java编程中,这些新特性将发挥越来越重要的作用,推动Java技术不断向前发展。
|
5月前
|
Java API Apache
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
|
5月前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的