VS Code,是一款支持Linux、Windows和macOS的代碼編輯器。它可以像集成開(kāi)發(fā)環(huán)境(IDE)一樣管理整個(gè)代碼庫(kù),同時(shí)還可以通過(guò)插件進(jìn)行擴(kuò)展,被新生代的程序員戲稱(chēng)為“宇宙第一IDE”,可以輕松打敗其他編輯器。
近兩年,為了提高在VS Code上的Java生產(chǎn)力,微軟拼了。日前,微軟發(fā)布了對(duì)基于Spring應(yīng)用程序支持的VS Code更新,同時(shí)建立了一個(gè)新的Microsoft網(wǎng)站,專(zhuān)門(mén)用于幫助Java開(kāi)發(fā)者能夠高效地編寫(xiě)、部署和擴(kuò)展他們的應(yīng)用程序。
微軟的Java基因
微軟對(duì)于Java一直都未真正放棄過(guò),J++、C#、.NET與Java的“愛(ài)恨情仇”也一度成為開(kāi)發(fā)者茶余飯后的談資。直至2019年,OpenJDK郵件列表中一封來(lái)自微軟的郵件宣布“期待參與Java的未來(lái)”,徹底表明了微軟對(duì)于Java的態(tài)度!回到今天,微軟將這種不放棄的熱度折射到VS Code上。這款不斷“蠶食”JetBrain系市場(chǎng)的開(kāi)源的編輯器,面朝Java,全力奔赴。
2016年,在微軟蘇黎世辦公室的編程馬拉松中,來(lái)自Red Hat、IBM、Codenvy和微軟的工程師們開(kāi)發(fā)了第一個(gè)版本的Java Language Server。后來(lái),它便成為了Visual Studio Code中最受歡迎的插件之一,擁有超過(guò)280萬(wàn)的安裝量。2019 年 6 月 ,微軟發(fā)布了VS Code Java安裝程序,這樣開(kāi)發(fā)者能一鍵安裝所有Java開(kāi)發(fā)環(huán)境。2021年,VS Code在Java方向上動(dòng)作頻頻。微軟發(fā)布了面向Java開(kāi)發(fā)者的Visual Studio Code更新路線(xiàn)圖,展示了一些重要的新功能和改進(jìn),路線(xiàn)圖涵蓋2021年7月至12月,重點(diǎn)關(guān)注開(kāi)發(fā)體驗(yàn)、遠(yuǎn)程開(kāi)發(fā)、測(cè)試、安全等方面。
尤其是遠(yuǎn)程辦公方面,確實(shí)博得了一波因?yàn)橐咔椴坏貌痪蛹肄k公的開(kāi)發(fā)者們的好感。2022年,對(duì)Java開(kāi)發(fā)的執(zhí)迷程度更甚從前,更新范圍進(jìn)一步包括了Spring boot及云原生開(kāi)發(fā)方面。
- VS Code Java 2月更新:推出教育特別版,包括單元測(cè)試、GUI開(kāi)發(fā)支持、Gradle項(xiàng)目創(chuàng)建、以及更多;
- VS Code Java 3月更新:代碼補(bǔ)全、Maven以及Java插件預(yù)覽版本新升級(jí);
- Visual Studio Code Java 4月更新:推出許多基礎(chǔ)開(kāi)發(fā)體驗(yàn)更新,包括Java 18支持、參數(shù)名稱(chēng)的嵌入提示、新的Java語(yǔ)言服務(wù)器狀態(tài)交互、更好的lambda表達(dá)式支持等;
- Visual Studio Code Java 6月更新:包括針對(duì)Spring開(kāi)發(fā)者的一些重大更新、基礎(chǔ)體驗(yàn)的增強(qiáng)以及用戶(hù)體驗(yàn)的提升;
- VS Code Java 7月更新:Lombok支持重大提升, Spring Bean依賴(lài)關(guān)系視圖。
2022年的路線(xiàn)規(guī)劃主要有6個(gè)方面,包括基礎(chǔ)開(kāi)發(fā)體驗(yàn)的提升、性能與可靠性、構(gòu)建工具、Spring Boot端到端的支持、用戶(hù)體驗(yàn)、云原生開(kāi)發(fā)。
VS Code的勁敵
作為輕量級(jí)編輯器“一哥”,當(dāng)然也有不少競(jìng)品覬覦。Atom、Code-OSS、Geany、Brackets、GNOME Builder等都是開(kāi)源的編輯器,但這些編輯器明顯不具備太大優(yōu)勢(shì),尤其Atom作為老牌編輯器已經(jīng)被微軟宣布即將于12月停用。IDE領(lǐng)域,要說(shuō)能與VS Code相爭(zhēng)的,不得不提以嚴(yán)謹(jǐn)著稱(chēng)的JetBrains系,而在Java方向上,就要說(shuō)到IntelliJ IDEA這個(gè)把無(wú)數(shù)開(kāi)發(fā)者都寵壞了的Coding神器。
IntelliJ IDEA以出色的用戶(hù)體驗(yàn)和廣泛的功能而聞名,有著精致的用戶(hù)界面、可配置的代碼完成和模板、完善的支持文檔等優(yōu)點(diǎn)。它有兩個(gè)版本,免費(fèi)的IntelliJ IDEA Community版本和付費(fèi)的IntelliJ IDEA Ultimate版本。
但有時(shí)候優(yōu)點(diǎn)即是缺點(diǎn),完美的體驗(yàn)背后需要耗用太多的內(nèi)存資源,一直是被人詬病之處。
當(dāng)然JetBrains也意識(shí)到了這個(gè)問(wèn)題,去年年底,輕量級(jí)編輯器Fleet一經(jīng)推出,眾多參與內(nèi)測(cè)的工程師大呼:真香!期待正式版!但問(wèn)題又回到費(fèi)用上:是免費(fèi)的可能性不大!
相比之下,采用開(kāi)源策略的VS Code,跨平臺(tái)、輕量級(jí)、多語(yǔ)言,同時(shí)集成了版本管理、開(kāi)箱即用的特點(diǎn),使得它即便作為一個(gè)Java上的后發(fā)者,也能一步步“蠶食”掉IDEA的Java開(kāi)發(fā)者市場(chǎng)份額。
要知道,VS Code跟進(jìn)一項(xiàng)開(kāi)發(fā)語(yǔ)言的速度是非常快的。據(jù)Python軟件基金會(huì)和JetBrains在2019年11月進(jìn)行的一次采訪(fǎng)調(diào)查,來(lái)自150多個(gè)國(guó)家/地區(qū)的2.4萬(wàn)名開(kāi)發(fā)者曾參與其中。調(diào)查結(jié)果顯示,受訪(fǎng)者最喜歡的Python開(kāi)發(fā)工具是PyCharm和VS Code,接著是Vim。其中VS Code所占份額經(jīng)歷了快速增長(zhǎng),從2017年的7%到 2019 年的24%。
正如外媒所言,VS Code號(hào)稱(chēng)能重新定義代碼編輯器,不僅免費(fèi)而且開(kāi)源,能在多個(gè)平臺(tái)上運(yùn)行使用。VS Code對(duì)比IDEA不僅更輕量級(jí),而且構(gòu)建與響應(yīng)速度也更快!
云原生時(shí)代,微軟無(wú)需小而美
VS Code從來(lái)都不希望自己是個(gè)“小而美”的產(chǎn)品,一旦確定方向,就會(huì)不遺余力。Spring對(duì)于微服務(wù)開(kāi)發(fā)的Java從業(yè)者而言,重要性不言而喻。值得注意的是,2022年路線(xiàn)圖中提到了大量關(guān)于Spring Boot開(kāi)發(fā)相關(guān)的提升目標(biāo):
- 簡(jiǎn)化Spring項(xiàng)目、Controller、Bean的創(chuàng)建流程
- 更好的Spring核心概念可視化(例如:Bean、API映射等)
- Spring Controller和類(lèi)的模版代碼生成
- 改進(jìn)Spring Boot儀表盤(pán)中Spring應(yīng)用的生命周期管理
- 為Spring依賴(lài)庫(kù)的管理提供更加直觀的體驗(yàn)
其中,舉一個(gè)近期的VS Code Java更新的例子,就能得到證明:新增了連接實(shí)時(shí)進(jìn)程時(shí)的Spring bean屬性(列出在Spring應(yīng)用程序本身加載時(shí)加載的所有bean),而如果在沒(méi)有IDE支持的情況下要獲得相同的結(jié)果,開(kāi)發(fā)者就需要獲取 ApplicationContext并調(diào)用.getBeanDefinitionNames(),
例如:
System.out.println(Arrays.asList(applicationContext.
getBeanDefinitionNames()));
左右滑動(dòng)查看完整代碼?
有了這個(gè)新增功能,VS Code更進(jìn)一步揭示了bean的屬性信息,即它們是否是單例、原型等,同時(shí)還用“已定義”標(biāo)記自己的 bean 以保持彼此之間的邏輯井井有條。
作為一名Spring開(kāi)發(fā)人員,bean依賴(lài)關(guān)系是我們經(jīng)常處理的事情,將其可視化極大地方便了對(duì)這一問(wèn)題的處理。但是微軟并沒(méi)有將Java和Spring的支持限制在VS Code中。它還增加了對(duì)Intellij和Azure的支持,這證明了在微服務(wù)和云狂熱的情況下,目標(biāo)是將Azure作為開(kāi)發(fā)Java應(yīng)用程序時(shí)的首選平臺(tái)。
?開(kāi)發(fā)者的看法那么對(duì)于開(kāi)發(fā)Java/Spring應(yīng)用程序的VS Code與IntelliJ的判斷是什么?雖然VS Code有了很大的改進(jìn),但它還沒(méi)有達(dá)到IntelliJ所賦予Java開(kāi)發(fā)的水準(zhǔn),尤其是在代碼重構(gòu)業(yè)務(wù)方面。不過(guò),如果使用Java以外的其他語(yǔ)言進(jìn)行編程,那么VS Code可能是最合適的選擇。
VS Code Java的使用者,最多被吐槽的還是插件太多的問(wèn)題。熱心的網(wǎng)友對(duì)于這一問(wèn)題,也是無(wú)可奈何:“插件安裝完成后還是需要逐一去配置調(diào)試的,這個(gè)沒(méi)法自動(dòng)化,畢竟各人喜好不同,不過(guò)大多數(shù)插件都是開(kāi)箱即用的。”甚至被IDEA寵壞了的開(kāi)發(fā)者會(huì)調(diào)侃:“這玩意兒歸根到底就是支持各種各樣插件的編輯器!”
?不做單選題
作為開(kāi)源的輕量級(jí)通用代碼編輯器,VS Code的Java開(kāi)發(fā)體驗(yàn)確實(shí)不如JetBrains,但勝在開(kāi)源免費(fèi)、支持多語(yǔ)言、具有高度可配置性和可擴(kuò)展性,而且許多創(chuàng)新體驗(yàn),比如在遠(yuǎn)程開(kāi)發(fā)功能體驗(yàn)上,VS Code更勝一籌。比如一名開(kāi)發(fā)者就如是說(shuō):
“想在IDEA中使用VS Code的遠(yuǎn)程開(kāi)發(fā)功能,并在YouTrack中跟蹤其遠(yuǎn)程開(kāi)發(fā)功能。我想要的只是我的代碼可以在任何地方運(yùn)行,而我的本地計(jì)算機(jī)是IDE。”
快速的創(chuàng)新迭代,會(huì)趕超一切。對(duì)于編輯器而言,不進(jìn)則退,也是同樣的道理。Atom的停用就是眼前的一個(gè)例子。沒(méi)有大的功能更新,是一件很危險(xiǎn)的事情。
從GitHub官方針對(duì)代碼編輯器的優(yōu)化與迭代已經(jīng)全方面轉(zhuǎn)移到了VS Code 上來(lái)看,也就注定了同根生的Atom淡出視野的結(jié)局。而Atom,作為第一個(gè)被廣泛應(yīng)用于市場(chǎng)的Electron應(yīng)用,12月的退役更多地意味著它本身的歷史使命已經(jīng)達(dá)成。所以,難怪會(huì)有人為IDEA感到擔(dān)憂(yōu)。
在微軟全力加倉(cāng)Java支持的情況下,如果固步自封,產(chǎn)品的迭代與創(chuàng)新跟不上的話(huà),VS Code可能就不僅僅是一個(gè)開(kāi)源免費(fèi)的高級(jí)編輯器了,而極有可能做實(shí)“新生代程序員中宇宙第一編輯器”的頭銜,甚至成為IDE領(lǐng)域的“安卓”,也或未可知。JetBrains正式版的Fleet會(huì)扳回一局嗎?答案只有開(kāi)發(fā)者知道。畢竟,哪個(gè)編輯器好用取決于市場(chǎng)。但對(duì)于開(kāi)發(fā)者來(lái)說(shuō),卻是一件利好的事情,“單選題”只適合“小孩子”去做,真正的coding人,從來(lái)都是兼容并蓄,各盡其才!