解析JDK14中的java tools简介
作者:flydean 发布时间:2023-04-18 10:28:37
1.1 JDK 14详细概述
JDK 8 已经在 2014年 3月 18日正式可用,JDK 8作为长期支持(Long-Term-Support)版本,距离现在已经 5年多时间过去了。5年时间里很多企业也都换上了 JDK 8,2018年09月25日作为下一个LTS的JDK版本:JDK 11也应运而生,Oracle表示会对JDK 11提供大力支持、长期支持。之后陆续发布了JDK 12 和JDK 13,JDK 14在 2020年 3月17日正式发布。
1.2 JDK 14总体概览
Oracle在2020年3月17日宣布Java 14(Oracle JDK 14)的全面上市。Java 14通过每六个月发布一次新功能,为企业和开发人员社区提供新的增强功能,继续了Oracle加快创新的承诺。最新的Java开发工具包(JDK)提供了新功能,其中包括两项备受期待的新预览功能–实例匹配的模式匹配(JEP 305)和记录(JEP 359),以及文本块的第二个预览(JEP 368)。此外,最新的Java版本增加了对switch表达式的Java语言支持,公开了用于持续监控JDK Flight Recorder数据的新API,将低延迟Z垃圾收集器的可用性扩展到了macOS和Windows,并在孵化器模块中添加了包装完备的Java应用程序和新的外部内存访问API,以安全,高效地访问Java堆外部的内存。
1.3 JDK 14官方计划
我们可以在openjdk官网中观察到JDK 14发布的详细官方计划和具体的新特性详情,地址如下:
https://openjdk.java.net/projects/jdk/14/
下面看下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一个工具,这里我先简单介绍一下,后续再针对复杂的,特别有用的工具做一个专门的说明。
以下排名仅按字母顺序,不代表任何个人观点
一个java的静态编译器,为编译好的java方法生成native代码。
jar包大家都很熟悉了,使用jar命令可以用来打包和解压jar文件。
jarsigner
jar包打完了,使用jarsigner来对jar包做签名和认证。
使用java可以运行java程序。
javac用来编译java文件,将文本文件编译成二进制的class文件。
javadoc
javadoc可以将代码中写的注释文档生成HTML页面供大家参考。如果你有看过JDK的源代码的话,可以看到源代码里面写了很多注释。大家可以学习一下。因为注释很重要。
java自带的反编译工具,可以将二进制的class文件反编译成为人类可读的代码。
这个反编译工具可能不够IDE自带的反编译工具强大。
这里的d代表的是diagnostic,通过这个命令可以对正在运行的JVM进行调试。
这是一个非常有用的调试工具,我们在后面的文章中会详细讲解。
jconsole
jconsole是一个GUI客户端,可以对现有的java程序进行管理。
他们的连接协议是JMX。不知道为什么国内的公司好像很少用到JMX。um…这个问题等我有时间了研究一下。
Java Debugger (JDB)是一个命令行的debug工具,提供了一系列的debug程序的功能。
jdeprscan
jdeprscan是一个分析工具,用来扫描jar或者class文件中的deprecated API。
jdeps是一个java class依赖的分析工具。
jfr是Java Flight Recorder的缩写,jfr是java应用程序的分析工具。它可以收集JVM在运行期间所产生的一系列事件,并生成文件和分析。
后面我们会用一篇文章详细讲解JFR。
jhsdb是一个分析工具,可以分析正在运行的java程序中,也可以分析coredump。
jinfo为特定的java进程生成运行时的java配置信息。
jjs用来运行Nashorn engine。
从JDK9之后,java已经模块化了。jlink可以将模块和他们的依赖组织起来,生成一个自定义的运行时环境。
jmap可以打印出某个java进程的堆信息。我们会在后面的文章中详细讲解。
jmod用来创建和解析JMOD文件。
jpackage
jpackage可以用来打包自运行的java程序。
列出机子上面的java进程。
jrunscript
启动一个命令行shell,这个shell支持交互和批处理模式。
一个可互动的java shell环境。
打印java stack信息,主要用在debug中。后面我们会详细讲解。
用于监控JVM的统计信息。
jstatd是一个RMI服务程序,用来远程监控JVM。
keytool
生成和管理密钥,证书的工具。
用来生成远程方法调用的stub和skeleton类。
启动一个守护进程,允许在JVM中注册和实例化对象。
rmiregistry
创建一个RMI对象的注册器。
serialver
为一个或多个class生成serialVersionUID。
以上的31个工具就是JDK14提供的。后面我们会挑其中几个对我们的程序调试和定位问题非常有用的几个工具来讲解。
来源:http://www.flydean.com/jdk14-java-tools/
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 本文实例为大家分享了Android实现ViewPager无限循环的具体代码,供大家参考,具体内容如下方式一:实现原理:假设有3张图片,分别是
- springboot 配置服务代理有时候,我们可能有下边这样的需求:即,针对于分布式服务,我们会有多种业务接口服务,但是服务器上可能只要求开
- char 字符char代表一个Unicode字符,它是System.Char的别名char someChar = 'a';/
- 此方案适用于解决springboot项目运行时动态添加数据源,非静态切换多数据源!!!一、多数据源应用场景:1.配置文件配置多数据源,如默认
- 在前面都写到用AsyncTask来获取网络中的图片。其实利用消息机制也能获取网络中的图片,而且本人感觉用消息机制还是挺简单的。消息机制的图解
- hello, everyone. Long time no see. 本期文章,我们主要讲解一下二叉树的相关概念,顺便也把搜索二叉树(也叫二
- 从SpringMVC源码解析所用的例子,一个http://localhost:9090/web/hi?name=yang请求调用到下面的地方
- 本文主要介绍了java(包括springboot)读取resources下文件方式实现,分享给大家,具体如下:1、使用项目内路径读取,该路径
- 本文实例为大家分享了C#支付宝新版支付请求接口调用的具体代码,供大家参考,具体内容如下因为支付宝已经集成了完整的SDK,所以可以使用SDK直
- QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件QTableView类实现表格视图,QTableView的数据由继承Q
- Android 应用签名的两种方法一、使用pem签名 (一) apk签名命令java –jar sign
- javaWeb 四大域对象1)和属性相关的方法Object getAttribute(String name) 获取指定的属性En
- 本文实例为大家分享了OpenGL绘制贝塞尔曲线的具体代码,供大家参考,具体内容如下最终效果图:通过3个点形成一条贝塞尔曲线1. 鼠标问题在使
- 一、同步调用1、同步调用会按照代码顺序来执行2、同步调用会阻塞线程,如果是要调用一项繁重的工作(如大量IO操作),可能会让程序停顿很长时间,
- Shiro 是Shiro 是一个 Apache 下的一开源项目项目,旨在简化身份验证和授权。 1:shiro的配置,通过maven
- 本文实例为大家分享了Java单例模式利用HashMap实现缓存数据的具体代码,供大家参考,具体内容如下一、单例模式是什么?单例模式是一种对象
- package cn.liangjintang.httpproxy;import java.io.BufferedReader;import
- Random random = new Random((int)(DateTime.Now.Ticks)); &nbs
- 本文主要讲解如何通过RabbitMQ实现定时任务(延时队列)环境准备需要在MQ中进行安装插件 地址链接插件介绍地址:https://www.
- 1. 面试第一步,自我介绍。这个自我介绍,在整个面试当中可以说是第一步,如果你能把你想说的重点说出来,把面试官带到你准备好的技术点中,可以说