在尚未IDE的時代,高手們仍是經過記事原本編程。那時候可以寫程序的都是牛人。能把程序寫得好的更是牛人中的牛人。java
禿頭大叔的程序員形象就是在那個時候創建起來的。程序員
還記得十幾年前的那一個春天,微風不動,太陽都羞紅了臉。由於那時候的我還在一個javac,一個java的編譯,運行着java程序。shell
雖然效率低下,可是看着我跑起來的一個又一個hello world,內心充滿了歡喜。編程
驚喜事後即是失落,java實在太難用了太複雜了,我仍是回去寫C語言吧。eclipse
直到有一天,有人向我推薦了eclipse,它就像是一道閃電照亮了我前進的方向。今後什麼javac,java都見鬼去吧,我只要eclipse。模塊化
不少年以後,我從eclipse轉向了IDEA,開發工具愈來愈趁手,而後我已經差很少快忘記了java原來還提供了一系列的java tools供咱們使用。工具
都說要勿忘初心,因而藉着JDK14的發佈,我又一次回顧了java tools提供的工具,竟然有了驚喜的發現。學習
JDK14中提供了多達31中工具,慚愧的是,第一次看到它們我只認識其中的部分。士知恥然後勇,因而我奮發圖強,終於在今天將它們全都認識了。開發工具
31一個工具,這裏我先簡單介紹一下,後續再針對複雜的,特別有用的工具作一個專門的說明。命令行
如下排名僅按字母順序,不表明任何我的觀點
一個java的靜態編譯器,爲編譯好的java方法生成native代碼。
jar包你們都很熟悉了,使用jar命令能夠用來打包和解壓jar文件。
jar包打完了,使用jarsigner來對jar包作簽名和認證。
使用java能夠運行java程序。
javac用來編譯java文件,將文本文件編譯成二進制的class文件。
javadoc能夠將代碼中寫的註釋文檔生成HTML頁面供你們參考。若是你有看過JDK的源代碼的話,能夠看到源代碼裏面寫了不少註釋。你們能夠學習一下。由於註釋很重要。
java自帶的反編譯工具,能夠將二進制的class文件反編譯成爲人類可讀的代碼。
這個反編譯工具可能不夠IDE自帶的反編譯工具強大。
這裏的d表明的是diagnostic,經過這個命令能夠對正在運行的JVM進行調試。
這是一個很是有用的調試工具,咱們在後面的文章中會詳細講解。
jconsole是一個GUI客戶端,能夠對現有的java程序進行管理。
他們的鏈接協議是JMX。不知道爲何國內的公司好像不多用到JMX。um...這個問題等我有時間了研究一下。
Java Debugger (JDB)是一個命令行的debug工具,提供了一系列的debug程序的功能。
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能夠用來打包自運行的java程序。
列出機子上面的java進程。
啓動一個命令行shell,這個shell支持交互和批處理模式。
一個可互動的java shell環境。
打印java stack信息,主要用在debug中。後面咱們會詳細講解。
用於監控JVM的統計信息。
jstatd是一個RMI服務程序,用來遠程監控JVM。
生成和管理密鑰,證書的工具。
用來生成遠程方法調用的stub和skeleton類。
啓動一個守護進程,容許在JVM中註冊和實例化對象。
建立一個RMI對象的註冊器。
爲一個或多個class生成serialVersionUID。
以上的31個工具就是JDK14提供的。後面咱們會挑其中幾個對咱們的程序調試和定位問題很是有用的幾個工具來說解。
本文做者:flydean程序那些事本文連接:http://www.flydean.com/jdk14-java-tools/
本文來源:flydean的博客
歡迎關注個人公衆號:程序那些事,更多精彩等着您!