掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
VS Code上的 Java 語言支持,可以說是多家大企業(yè)通力合作了。最早成熟的 Java 插件,是由 Red Hat 公司實(shí)現(xiàn)的,叫做 Language Support for Java by Red Hat。 它背后使用的技術(shù)則是 Java Language Server,也就是 Language Server Protocol 的 Java 實(shí)現(xiàn)。除了VS Code的這個 Java 插件在使用以外,Eclipse Che 現(xiàn)在也在使用 Java Language Server。而說到 Java Language Server ,又不得不提它的底層一個非常重要的庫 Eclipse JDT (Eclipse Java development tools ),VS Code的項(xiàng)目領(lǐng)導(dǎo) Erich Gamma,在加入微軟之前,就是在 IBM 負(fù)責(zé) Eclipse JDT 這個項(xiàng)目的。

創(chuàng)新互聯(lián)公司專注于龍井網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供龍井營銷型網(wǎng)站建設(shè),龍井網(wǎng)站制作、龍井網(wǎng)頁設(shè)計(jì)、龍井網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造龍井網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供龍井網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
繼續(xù)回到 Java 插件上。Language Support for Java by Red Hat 這個插件,能夠提供代碼跳轉(zhuǎn)、自動補(bǔ)全、重構(gòu)等智能語言功能。不過,它并不支持 Java 代碼的調(diào)試。如果要對 Java 代碼進(jìn)行調(diào)試,則需要安裝另一個插件 Debugger for Java ,這個插件則是由微軟 Visual Studio 中國團(tuán)隊(duì)開發(fā)和維護(hù)的。而現(xiàn)在 Red Hat 和 Visual Studio 中國團(tuán)隊(duì)正在一起合作,共同為 Java 用戶在VS Code上提供更好的編程體驗(yàn)。
為了保證你能有比較完整的 Java 開發(fā)體驗(yàn),你可以下載插件包 Java Extension Pack。
這個插件包,包含了四個插件:
不過,要注意的是,要想這些插件能夠正常工作,你需要安裝好 JDK 。如果你的環(huán)境變量里設(shè)置好了 JDK_HOME 或者 JAVA_HOME,那么插件就可以正常啟動了。而如果插件無法找到 JDK,你也可以通過在個人或者項(xiàng)目設(shè)置中添加 java.home 指定 JDK 的位置。
在安裝完上面的插件后,你可以在VS Code中使用 Maven、Eclipse 和 Gradle 項(xiàng)目。上面我提到了 Java 語言服務(wù)的最底層是 Eclipse JDT,無論是代碼提示,還是重構(gòu)、代碼跳轉(zhuǎn)等,Eclipse 里能夠完成的,VS Code中都能有接近的體驗(yàn)。
當(dāng)你打開一個 Java 項(xiàng)目后,你可以點(diǎn)擊調(diào)試視圖里的齒輪按鈕,創(chuàng)建 launch.json 。選擇了 Java 這個環(huán)境后,Java 插件會為我們創(chuàng)建兩個調(diào)試的模板。
第一個模板,就是調(diào)試本地的項(xiàng)目,要注意的是,你需要填寫設(shè)置 mainClass,這個設(shè)置的值則是你想要調(diào)試的 Java Main Class,而且這個地址必須是這個類的完整地址,類似于 com.example.Main 。而第二個模板,則是將調(diào)試器 attach 到已經(jīng)在調(diào)試中的 Java 代碼,你則需要提供正在運(yùn)行的調(diào)試器的地址(hostName)和端口(port)。
Java 調(diào)試配置支持的屬性,可以參考官方文檔。不過,這里有三個功能值得特別提一下。
第一個功能是跟用戶輸入有關(guān)。VS Code內(nèi)置的調(diào)試面板,并不支持用戶輸入。也就是說,如果你寫的 Java 程序,依賴于用戶從命令行中輸入代碼,Java 程序會打開一個系統(tǒng)終端,然后你需要在這個系統(tǒng)終端中輸入內(nèi)容。而如果你希望使用VS Code的集成終端來進(jìn)行輸入的話,就可以使用調(diào)試配置屬性 “console: integratedTerminal” 。
第二個功能是Step filtering。它是什么意思呢? 當(dāng)你在使用跳轉(zhuǎn)入函數(shù)(Step in),或者繼續(xù)執(zhí)行函數(shù)(Step through)等方法時,有的時候,你會跳入到 Java 語言本身的代碼中,或者進(jìn)入到某些第三方庫的代碼中。但是你可能只是要調(diào)試自己的代碼,那么你就可以通過 stepFilters 這個屬性,對類的名字進(jìn)行過濾,所有匹配了這個列表的類,在調(diào)試時都可以被直接跳過。你甚至還可以指定你是否要跳過構(gòu)造函數(shù)、靜態(tài)函數(shù)等等。
下面就是一段 stepFilters 屬性的例子。
"stepFilters": {
"classNameFilters": [
"java.*",
"javax.*",
"com.sun.*",
"sun.*",
"sunw.*",
"org.omg.*"
],
"skipSynthetics": false,
"skipStaticInitializers": false,
"skipConstructors": false
}JSON
第三個功能是Hot Code replacement,即“熱代碼替換”。相信對前端有經(jīng)驗(yàn)的朋友已經(jīng)比較熟悉這個功能了。這個功能的作用是,當(dāng)你在調(diào)試代碼的時候,如果發(fā)現(xiàn)代碼哪里寫錯了,可以立即修改。然后調(diào)試器就會默默地在底層將整個代碼執(zhí)行切換到一個新的 JVM instance 上,而你無需重啟整個調(diào)試進(jìn)程,就能夠繼續(xù)調(diào)試最新的代碼了。
接下來,我們看看 Java 的插件對 JUnit 測試的支持情況如何。當(dāng)你打開一個 JUnit 測試時,Java Test Runner 這個插件就會被激活了。此時,在界面最左側(cè)活動欄的最下面,多了一個按鈕,點(diǎn)擊這個按鈕,你就能看到一個測試視圖,這個視圖里展示的就是當(dāng)前項(xiàng)目中的所有測試。
在這個視圖中,你可以在測試項(xiàng)目上進(jìn)行右擊,調(diào)出上下文菜單,然后執(zhí)行單個,或者多個測試。
與此同時,在編輯器中,你可以看到每個測試的上方,都有 “Run Test” 和 “Debug Test” 等字樣。通過點(diǎn)擊它們,同樣可以執(zhí)行和調(diào)試測試。
另外,在上圖中,你還能夠看到一個問號,它說明測試沒有被正確執(zhí)行。你可以點(diǎn)擊它,這之后,VS Code則會打開一個新的編輯器,詳細(xì)介紹這個測試相關(guān)的情況。
當(dāng)然,如果你覺得左側(cè)的測試視圖已經(jīng)足夠好用了,不希望在編輯器中再看到 “Run Test” 等字樣,那你也可以通過 “editor.codelens” 將其關(guān)閉。
雖然VS Code上的 Java 支持,無論是代碼積淀還是團(tuán)隊(duì)陣容,都是非常強(qiáng)大的,但是還是有一些不盡如人意的地方:

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流