中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java有哪些好用的工具

發布時間:2021-11-19 15:55:19 來源:億速云 閱讀:182 作者:iii 欄目:編程語言

這篇文章主要介紹“Java有哪些好用的工具”,在日常操作中,相信很多人在Java有哪些好用的工具問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java有哪些好用的工具”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1、JavaPoet

有時候,我們要做一些代碼生成工具,需要生成一些Java類源文件。如果使用字符串去拼接的話,很容易拼的亂七八糟。為了解放雙手,就可以使用工具JavaPoet進行方法或者代碼塊的構建。它還提供了占位符等一系列方便的操作,使得你生成的代碼優美可讀,清脆爽口。

特別在寫一些框架的時候,可以將一些非常臟、非常累的活兒交給它。

代碼示例。

MethodSpec main = MethodSpec.methodBuilder("main") .addStatement("int total =  0") .beginControlFlow("for(int i=0;i<10;i++)") .addStatement("total +=i;")  .endControlFlow() .build();

2、JavaCC

JavaCC是一個語法生成器和語法分析器,可以通過讀取一個.jj(它是雞雞我是姐姐)描述文件來生成一個Java文件。聽起來和JavaPoet一樣,但它是語法層面的,過程是翻譯而不是“構造”,和我們學習的編譯原理是一個層面的東西。而且JavaCC生成的文件一般是不可讀的,誰讓它和yacc以及lex比較像呢。

Java有哪些好用的工具

如果你想要自定義一些表達式,或者做一個特殊格式的解析器,你可能會用到它。

與此類似的還有ANTLR。應用方面,Velocity和FreeMarker都使用JavaCC作為語法解釋器;Hibernate則使用ANTLR作為HQL的語法解釋器。

不過我還是更喜歡Ragel(不是Java的)多一些。對于這些場景來說,文件生成以后就不再依賴這些工具了,還是高效和好用更重要。

2、Javaparser

上面是通過語法樹生成Java文件(或者其他文件),Javaparser是通過Java文件生成語法樹(AST),然后基于這棵語法樹進行Java代碼的分析和修改。注意,它可以直接再根據語法樹,反向生成Java文件哦。

根據這棵語法樹,你可以直接分析一個獨立的Java文件,即使這個Java文件亂七八糟,不能通過編譯,不用在運行時使用反射等功能。配合JavaPoet可以去做一些非常有意思的功能。比如,Javaparser提取Java文件的注釋或者注解,然后通過JavaPoet生成一些自動文檔(Swagger),或者進行測試用例的自動填充。

除了這些,Javaparser可以規定十分嚴格的語法格式,所以使用它做一個代碼審查工具,甚至是做一些代碼依賴分析,也是可以的。

4、Lombok

其實這只是個輔助開發工具,應該有很多研發用起來了,它可以顯著的減少代碼量。讓我們擺脫惱人的get、set、hashCode、equals,甚至log等。

Lombok其實部分上和上面說到的Javaparser類似,不過它是JDK層面的。

在javac將Java文件解析成抽象語法樹之后(AST),Lombok則根據自己的注解處理器,動態的修改AST,增加新的節點代碼。然后,生成我們最終的字節碼。

這個技術,是由javac的注解API來實現的(JSR-269),可以讓javac在編譯期去干一些事情。

Java有哪些好用的工具

JDK做的工作,遠比我們表面上用到的那些多的多。

5、ByteBuddy

上面幾個工具都是把一些其他方式的代碼轉化為Java源文件,這些Java源文件還需要經過編譯這道工序,才能夠被真正使用。

Java有哪些好用的工具

ByteBuddy可以更進一步,直接動態生成Java類。對,就是直接加載在元空間的那種,在程序運行期間就可以動態的對class進行更改。不需要曲徑通幽,直達目的。

它的底層是ASM,所以ByteBuddy是可以直接修改字節碼的,是一種字節碼增強工具。

于此類似的工具還有JAVASIST、CGLiB等。

如果你在做一些代理類的工作,或者做一些APM等,想要實現類似Aspectj之類的功能,再或者類似Arthas那樣的故障排查工具,那這些工具正適合。

到此,關于“Java有哪些好用的工具”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

垫江县| 平凉市| 南靖县| 卓尼县| 乳山市| 临武县| 瑞昌市| 英德市| 深水埗区| 平定县| 乐都县| 东城区| 永定县| 当雄县| 若尔盖县| 澄城县| 湾仔区| 和静县| 岳普湖县| 长沙市| 仁寿县| 防城港市| 芜湖市| 灵武市| 澄迈县| 儋州市| 武胜县| 新竹市| 德保县| 格尔木市| 翁源县| 高邑县| 盖州市| 娄烦县| 元阳县| 松阳县| 富裕县| 囊谦县| 西华县| 吉木萨尔县| 张家界市|