終極指南:如何使用 Visual Studio Code 進行 Java 開發?

2021-02-13 InfoQ

VS Code(Visual Studio Code)已成為多語言開發人員的首選文本編輯器。 大量 Javascript、TypeScript、Go、Python 和其它語言的開發人員都在使用 VS Code 進行編碼,這部分歸功於 VS Code 擴展形成的龐大生態系統。這些擴展增強和豐富了 VS Code 的體驗,使其成為類 IDE 的超級智能文本編輯器,同時它又極其快速和輕量級。

VS Code 支持 了 Java 開發,許多 Java 擁護者和演講者都使用它上臺演講做現場演示。

以下是 2019 年 Java 開發人員使用 VS Code 開發、運行、調試和部署其應用程式的終極指南。

如果您尚未下載 VS Code,那現在就下載並安裝它吧。接下來本指南將假定您至少安裝了 Java 8,儘管 VS Code 也支持 Java 11。您也可以完全跳過本指南,直接參考文檔《 用 VS Code 開發 Java 應用》。但是,建議對照下面的指南走查一遍重點部分,這將有助於您更好地利用 VS Code 進行 Java 開發。

為了使 VS Code 支持核心 Java,作為最低要求,您必須安裝一組擴展。 讓我們逐一深入研究這些擴展。

微軟的 Java 擴展包(Java Extension Pack)

這個擴展包包含了下文將要詳細介紹的五個擴展。藉助它,你無需過多了解就可以開始使用 VS Code。

紅帽的 Java 語言支持擴展(Language Support for Java)

要使 VS Code 支持 Java,這是唯一一個必須安裝的擴展。其它擴展都是補充性的,您需要根據要開發的項目決定是否要安裝它們。

安裝完這個擴展後,您就可以閱讀和編輯 Java 原始碼了。首先創建一個 Helloworld.java 文件,然後用 VS Code 打開 (或者在 VS Code 中創建該文件,然後把它保存在某個文件夾中)。

完成後,您可以打開終端(在 Mac OS 中,使用組合鍵 ⌘+`),然後輸入命令 javac HelloWorld.java 進行編譯。

VS Code 裡內嵌的終端

編譯後會產生一個 Helloworld.class 文件。最後,用 Java 命令運行這個類:java helloworld。

Java 語言支持擴展通過使用 Eclipse 語言伺服器協議(Eclipse Language Server Protocol)支持 Java。了解有關 Eclipse LSP 的更多信息。

Java 語言支持擴展添加了許多其它功能,可以幫助您快速瀏覽、編寫、重構和閱讀 Java 原始碼,您不妨使用 VS Code 這個輕量級文本編輯器來替代其它 IDE。

麵包屑導航 (頂部) — 大綱視圖 (左下角)

查看概述頁面可以獲取這個擴展的特性以及重構快捷鍵的完整列表。

微軟的 Java 調試器(Debugger for Java)

掌握了在 VS Code 中編寫和閱讀 Java 代碼的基礎知識後,下一步自然就是運行和調試代碼了。 這正是該擴展提供的功能。 這個擴展使用您計算機上的默認 JAVA_HOME,當然您也可以自定義它。

運行 | 調試 Java 應用

它具備常見的 Java IDE 調試特性的所有能力,並且支持更多的自定義,可以讓您控制代碼如何被執行以及調試器如何連接到 JVM。 它還支持遠程 JVM。

安裝這個擴展後,您會在主方法上方看到兩個超連結,如上圖所示。若您單擊運行,代碼將被編譯並執行。您還可以設置斷點並點擊調試。

對於遠程調試,您需要添加新的配置。 切換到調試視圖(在 Mac 上按 Shift +⌘+ D)並點擊配置按鈕⚙。 這樣會打開 launch.json 文件。 單擊屏幕上的添加配置藍色按鈕。 這會打開一個如上圖所示的彈出菜單。

現在,您可以自定義一個能插入遠程 JVM 的 啟動項了。您只需提供主機名、埠號等詳細信息。

和其它調試 IDE 一樣,您可以在運行期間查看變量、堆棧追蹤,甚至對變量內容進行更改。

VS Code 裡在調試過程中更改 Java 變量

至此,我們完成了用於閱讀、編寫、運行和調試 Java 代碼的 VS Code 基本設置。

掌握了 Java 編碼的基礎知識後,您很快就需要使用庫、依賴項、類路徑等。在 VS Code 上進一步改進 Java 支持的最佳方法是添加以下三個擴展:

Java 依賴查看器(Java Dependency Viewer)

針對 Java 的 Maven 擴展 (Maven for Java)

微軟的 Java 測試運行器(Java Test Runner)

讓我們分別看一下這幾個擴展。

這個擴展為您提供兩個核心功能。 其中主要的一個功能是提供了「項目」的概念,您可以手動向項目中添加庫(JAR)。 第二個功能使項目當前設置的 classpath 可視化,即使是 Maven 項目(參見下文針對 Java 的 Maven 擴展)。

打開命令託盤(Shift +⌘+ P)並輸入 create java:

創建一個 Java 工程

您需要選擇創建項目的位置。項目由與項目名稱同名的文件夾組成(您選擇了創建項目的位置後,接下來命令託盤會繼續詢問項目名稱,例如你可以輸入 myworkspace)。

創建項目後,VS Code 將在新窗口中打開這個新文件夾。

新的 Java 工程

就像您看到的那樣,這個項目具有一個基本結構,其中包含了 bin 和 src 文件夾。 在 src 中,開始會有一個基本的 Java 類。 如果您是一位經驗豐富的 Java 開發人員,一眼就會發現這個擴展使用的是 Eclipse 項目的格式,這是因為它與 Eclipse 語言伺服器協議和其它擴展能很好的協同工作。

您可以編輯 .classpath 文件,指定全部自定義 JAR 包所在的目錄,這個目錄可以放在任何位置,例如某個 lib 文件夾。這些擴展會自動加載 classpath 中包含的類庫,使你能夠運行自己的代碼。

編輯.classpath 文件增加類庫

Maven 是 Java 生態系統中使用最廣泛的項目構建和依賴關係管理工具。因此,通過該擴展,您幾乎可以用 VS Code 處理任何類型的 Java 項目。

您將能夠通過 Maven 原型(archetype)生成和引導 Maven 項目、管理依賴關係並觸發 Maven 目標(goal),並藉助一些智能代碼補全功能編輯 pom. xml 文件。

Maven 命令

讓我們來看一下:

這個擴展會要求您選擇目標文件夾,以便在其下面生成項目文件夾。 輸入焦點會跳轉到終端,您必須在那裡輸入 Maven 命令行的參數,不過不用擔心,它會一步一步地引導您。

創建項目後,直接從終端調用 code 即可打開它。

在 VS Code 中打開新創建的目錄

好了,您現在應該已經在 VS Code 中打開您的 Maven 項目了。您可以做的最基本的事情就是運行您的代碼。 您有兩個選擇:

如前所述,使用 App 類中 main 方法旁邊的 Run 超連結運行您的代碼。

使用 Maven。

如果您使用 Java 調試擴展(運行 | 調試)觸發器,擴展將使用 Maven 生成的 classpath,以確保所有依賴項都正確地添加到類路徑中。

如果使用 Maven 運行 Java 代碼,您可以像往常一樣使用終端,或者打開命令託盤並輸入 Maven Execute Commands。

顯示 Maven 動作的命令託盤

它會要求您選擇一個項目。 由於您只有一個項目,直接在其上按回車即可。 接下來,您將看到一個列表,它包含了所有默認的核心 Maven 目標。 選擇 package 生成 JAR 文件。

如果要運行自定義目標,例如從 Maven 插件繼承的目標,您可以使用 Maven 視圖:

執行來自 Maven 插件的目標

編輯 pom.xml 文件並添加依賴項後,VS Code 將自動重新加載 classpath,然後您就可以從新的依賴項中導入類和包。 這個過程非常乾淨、順暢。

最後一步是增強單元測試的運行、調試和測試結果的可視化。此擴展程序將超連結添加到可以單獨執行的單元測試 (支持 JUnit 和 TestNG),您可以立即在 VS Code 中看到報告,如下面的示例所示。

在 VS Code 中運行單元測試

此擴展還將啟用測試資源管理器視圖,因此您可以專注於代碼的單元測試,並以更加符合測試驅動開發(TDD)的方式編寫軟體。

測試瀏覽器

此擴展目前僅適用於 Maven 項目,因此請確保您安裝了針對 Java 的 Maven 擴展。

如果您現在對使用 VS Code 進行 Java 開發感到滿意,那麼是時候進一步改善您的使用體驗了。 以下是一些擴展列表,可以改善您的日常工作體驗。

這只是接下來要添加哪些擴展的建議,而不是事實標準的列表,但它可以讓您先行一步。

希望您已經在使用 Git 了,無論是通過 GitHub 還是其它任何服務或環境。此擴展為您提供有關原始碼著作信息的洞察,例如 「誰添加了此方法以及何時添加」。

上圖就是安裝了 GitLens 後 Java 類的樣子。看看那些沒有數字的行,它們是對提交歷史的注釋。 您也可以簡單地將滑鼠懸停在特定的行上,它將顯示這一行是何時、由誰、在哪個提交哈希上添加的。

如果您是構建 REST API 的開發人員,那麼這是您必須安裝的 VS Code 的擴展。 有了它,您將能夠編輯包含 HTTP 調用的 .http 文件。 編輯器將快速提供代碼片段和模板,它會為您提供一個即點生效的神奇的超連結,它會觸發 HTTP 調用並在旁邊打開結果。

就這樣了! 您現在擁有一份完整的 VS Code 設置,可以實際進行任何類型的 Java 開發了。

4 福利:Pivotal 的 Spring 設置和 Gradle

如果你是一個狂熱的 Spring 開發人員,一定想知道 Pivotal 和微軟提供的那些能增強 Spring Boot 應用開發體驗的重要擴展。

最後,有一個可以幫助您編寫 build.gradle 文件的 Gradle 擴展。

以下是一些額外的 Spring 工具供進一步學習:

https://dzone.com/articles/visual-studio-code-for-java-the-ultimate-guide-201

點個好看少個 bug 👇

相關焦點

  • Java on Visual Studio Code的更新 – 2022年1月
    Language Support for Java ™https://devblogs.microsoft.com/java/language-server-1-0/一系列優化https://devblogs.microsoft.com/java/java-on-visual-studio-code-update-october-2021/
  • VS Code Java 開發指南!
    本文是一份提供給 Java 開發人員在 2019 年使用 Visual Studio Code 的終極指南,幫助開發者使用 VS
  • 如何使用Visual Studio Code進行FreeRTOS開發
    Visual Studio Code(簡稱 VS Code)是目前一個非常流行的原始碼編輯器,也可以用於嵌入式開發。在嵌入式應用中,如何配置VS Code來構建和調試項目?本文將展示如何設置VS Code作為FreeRTOS項目的開發環境,介紹需要安裝的擴展功能,及環境配置的相關選項。
  • 剖析並利用Visual Studio Code在Mac上編譯、調試c#程序
    不過visual studio code這種編輯器顯然會提供很方便的用戶自定義的Json配置。那麼匹夫為了找到控制快捷鍵配置的Json文件,匹夫首先使用cmd+p這個快捷鍵組合,將visual studio code的command顯示出來。
  • 如何在 Linux 中安裝 Visual Studio Code
    Visual Studio Code 是微軟開發的支持包括 Linux 在內的全平臺代碼編輯器和文本編輯器。它是免費軟體但不開源,在專有軟體許可條款下發布。它是可以用於我們日常使用的超級強大和快速的代碼編輯器。
  • 使用 Visual Studio Code 開發 LINUX 上 C++ 應用
    配配置連接到 LINUX 伺服器上,點擊「遠程資源管理器」,然後選 SSH TARGERTS 的「+」號,輸入一行 ssh 命令,就會打開一個登錄配置文件,你可以自己編輯多個需要登錄的主機安裝代碼自動格式化器 clang-format。
  • 如何進行code review?
    一個主持人,負責預定會議室,操作visual studio查看最近兩周提交的changeset,一個記錄員,負責記錄發現的問題,相關功能的開發人員負責講解和解答疑問。最後記錄員將review結果記錄到wiki中並發送到整個開發部門。
  • Visual Studio 支持 Java?謠言止於智者
    公司裡做 Java 的開發童鞋們就坐在韓老師附近(嗯,不超過五米的距離),大家都很熟。VS 支持 Java 了,我咋會不知道?那麼真相到底是什麼呢?首先,先說結論。這是謠言,是標題黨。我們在微軟 VS Code 的官網(2019 年 7 月 13 日)可以看到關於 VS Code 是否會支持 Java 的說明。
  • Visual Studio Code搭建C語言"集成"開發環境
    使用其內嵌的Windows power shell當作命令行終端來執行MinGW的便宜命令,這種方式雖然比較麻煩,但是其開發的過程和方法最大地逼近了Linux下C語言的開發,因此,我們在之前的C語言講述過程中,選擇使用了這種開發方式。但是,這種方式隨著你代碼的複雜度提升,如果使用gdb工具去做代碼的調試,其實是很不方便的,因為命令行為主的操作方式永遠都比不過圖形化界面來的方便。
  • Python程式設計師的VS Code|Visual Studio Code for Python Programmers
    熟練和高效地使用Visual Studio Code,並學習如何集成所有外部工具!針對Python程式設計師的Visual Studio Code幫助Python開發人員不僅熟悉軟體,而且提高了使用效率。首先,您將看到在Windows、Mac和Linux平臺上安裝Visual Studio Code的步驟,以及對工作區編輯功能的介紹。
  • 為什麼Visual Studio Code如此受歡迎?
    來自:Linux迷   連結:https://www.linuxmi.com/visual-studio-code-huanying.html
  • Visual Studio Code 最新版本發布
    我們還在研究如何在GitHub的vscode-theme-generator項目中輕鬆創建主題。使用vscode-theme-generator,您可以通過僅6種顏色來創建一個看起來像這樣的主題:原文來自:  https://www.oschina.net/news/84485/visual-studio-code-1-12本文地址:  http://www.linuxprobe.com/visual-studio-code.html編輯員:張雄,審核員:逄增寶
  • 微軟visual studio誕生20年回顧
    這個版本的visual basic也是原汁原味basic的最後一個版本, 是拖拉控制項和事件編程的先驅,許多windows應用程式都是用它開發的。visual studio .net (2002)從這個版本開始vs開始提供免費的社區版本, 官方提供下載 。在這之前的18年, 想要使用vs要不花錢向微軟買 , 要不就使用盜版。
  • 微軟 VS Code 或將取代 Visual Studio!
    作者 | 琥珀對於前端來講,使用微軟的Visual Studio Code 以提高開發效率簡直就是一款無比性感的神器。「免費」、「開源」、「顏值高」、「比atom更快」、「比webstorm更輕」……這均是開發者給出的最高評價。
  • 把VS Code打造成Java開發IDE,也挺爽!
    設為「星標」,重磅乾貨,第一時間送達近期,公司推行正版化,本人使用的是JetBrains教育版,是不允許進行商業開發的,因此開啟了艱難的備用IDE選型之路。YesError codeCommand failed: code --list-extensions/bin/sh: code: command not found這是因為我的VS Code並不是通過命令行安裝的,如果要使用code
  • 給宇宙最強Visual Studio Code配置編譯和運行C/C++
    來自:Linux迷  https://www.linuxmi.com/ubuntu-visual-studio-code-c.html
  • Linux上配置 Visual Studio Code 編譯和運行C/C++
    來自:Linux迷連結:https://www.linuxmi.com/ubuntu-visual-studio-code-c.html
  • Visual Studio Code 1.23發布,如何在Ubuntu 18.04安裝
    新部署網站教程 - 了解如何將靜態網站部署到Azure存儲。編輯突出的縮進指南當您在各種原始碼塊之間移動光標時,VS Code現在可以突出顯示活動縮進指南。例如,對於JavaScript,TypeScript和其他提供組織導入代碼操作的擴展,您可以通過設置來啟用保存時的組織導入:"editor.codeActionsOnSave": {    "source.organizeImports": true}您還可以啟用或禁用使用語言特定設置保存每種語言的哪些代碼操作。
  • Java on Visual Studio Code的更新 – 2021年11月
    在11 月的更新中,我們在這方面進行了多項改進:項目管理 – 跟」.project」等元數據文件說再見如果您正在使用 Java擴展包進行 Java 開發,我們有個好消息要告訴您 – 當您導入新的 Java 項目時,Visual Studio Code 不再在項目路徑中生成那些隱藏的「.project」元數據文件!
  • Java on Visual Studio Code的更新 – 2021年6月
    此外,我們也不斷聽到我們的產品需要更好地處理大型複雜結構的項目,因此我們也會進一步完善這方面的體驗,這也將有助於企業級代碼庫的開發人員因為通常企業的項目結構會更複雜。與此同時,我們也將進一步提高性能和可靠性。構建工具和依賴管理是 Java 開發人員體驗的關鍵部分。我們正在尋求提高該領域的廣度和深度。就廣度而言,我們計劃增加對 Gradle 的支持,這也是我們一直從用戶社區聽到的反饋。G