VS Code,是一款支持Linux、Windows和macOS的代码编辑器。它可以像集成开发环境(IDE)一样管理整个代码库,同时还可以通过插件进行扩展,被新生代的程序员戏称为“宇宙第一IDE”,可以轻松打败其他编辑器。
近两年,为了提高在VS Code上的Java生产力,微软拼了。日前,微软发布了对基于Spring应用程序支持的VS Code更新,同时建立了一个新的Microsoft网站,专门用于帮助Java开发者能够高效地编写、部署和扩展他们的应用程序。
微软的Java基因
微软对于Java一直都未真正放弃过,J++、C#、.NET与Java的“爱恨情仇”也一度成为开发者茶余饭后的谈资。直至2019年,OpenJDK邮件列表中一封来自微软的邮件宣布“期待参与Java的未来”,彻底表明了微软对于Java的态度!回到今天,微软将这种不放弃的热度折射到VS Code上。这款不断“蚕食”JetBrain系市场的开源的编辑器,面朝Java,全力奔赴。
2016年,在微软苏黎世办公室的编程马拉松中,来自Red Hat、IBM、Codenvy和微软的工程师们开发了第一个版本的Java Language Server。后来,它便成为了Visual Studio Code中最受欢迎的插件之一,拥有超过280万的安装量。2019 年 6 月 ,微软发布了VS Code Java安装程序,这样开发者能一键安装所有Java开发环境。2021年,VS Code在Java方向上动作频频。微软发布了面向Java开发者的Visual Studio Code更新路线图,展示了一些重要的新功能和改进,路线图涵盖2021年7月至12月,重点关注开发体验、远程开发、测试、安全等方面。
尤其是远程办公方面,确实博得了一波因为疫情不得不居家办公的开发者们的好感。2022年,对Java开发的执迷程度更甚从前,更新范围进一步包括了Spring boot及云原生开发方面。
- VS Code Java 2月更新:推出教育特别版,包括单元测试、GUI开发支持、Gradle项目创建、以及更多;
- VS Code Java 3月更新:代码补全、Maven以及Java插件预览版本新升级;
- Visual Studio Code Java 4月更新:推出许多基础开发体验更新,包括Java 18支持、参数名称的嵌入提示、新的Java语言服务器状态交互、更好的lambda表达式支持等;
- Visual Studio Code Java 6月更新:包括针对Spring开发者的一些重大更新、基础体验的增强以及用户体验的提升;
- VS Code Java 7月更新:Lombok支持重大提升, Spring Bean依赖关系视图。
2022年的路线规划主要有6个方面,包括基础开发体验的提升、性能与可靠性、构建工具、Spring Boot端到端的支持、用户体验、云原生开发。
VS Code的劲敌
作为轻量级编辑器“一哥”,当然也有不少竞品觊觎。Atom、Code-OSS、Geany、Brackets、GNOME Builder等都是开源的编辑器,但这些编辑器明显不具备太大优势,尤其Atom作为老牌编辑器已经被微软宣布即将于12月停用。IDE领域,要说能与VS Code相争的,不得不提以严谨著称的JetBrains系,而在Java方向上,就要说到IntelliJ IDEA这个把无数开发者都宠坏了的Coding神器。
IntelliJ IDEA以出色的用户体验和广泛的功能而闻名,有着精致的用户界面、可配置的代码完成和模板、完善的支持文档等优点。它有两个版本,免费的IntelliJ IDEA Community版本和付费的IntelliJ IDEA Ultimate版本。
但有时候优点即是缺点,完美的体验背后需要耗用太多的内存资源,一直是被人诟病之处。
当然JetBrains也意识到了这个问题,去年年底,轻量级编辑器Fleet一经推出,众多参与内测的工程师大呼:真香!期待正式版!但问题又回到费用上:是免费的可能性不大!
相比之下,采用开源策略的VS Code,跨平台、轻量级、多语言,同时集成了版本管理、开箱即用的特点,使得它即便作为一个Java上的后发者,也能一步步“蚕食”掉IDEA的Java开发者市场份额。
要知道,VS Code跟进一项开发语言的速度是非常快的。据Python软件基金会和JetBrains在2019年11月进行的一次采访调查,来自150多个国家/地区的2.4万名开发者曾参与其中。调查结果显示,受访者最喜欢的Python开发工具是PyCharm和VS Code,接着是Vim。其中VS Code所占份额经历了快速增长,从2017年的7%到 2019 年的24%。
正如外媒所言,VS Code号称能重新定义代码编辑器,不仅免费而且开源,能在多个平台上运行使用。VS Code对比IDEA不仅更轻量级,而且构建与响应速度也更快!
云原生时代,微软无需小而美
VS Code从来都不希望自己是个“小而美”的产品,一旦确定方向,就会不遗余力。Spring对于微服务开发的Java从业者而言,重要性不言而喻。值得注意的是,2022年路线图中提到了大量关于Spring Boot开发相关的提升目标:
- 简化Spring项目、Controller、Bean的创建流程
- 更好的Spring核心概念可视化(例如:Bean、API映射等)
- Spring Controller和类的模版代码生成
- 改进Spring Boot仪表盘中Spring应用的生命周期管理
- 为Spring依赖库的管理提供更加直观的体验
其中,举一个近期的VS Code Java更新的例子,就能得到证明:新增了连接实时进程时的Spring bean属性(列出在Spring应用程序本身加载时加载的所有bean),而如果在没有IDE支持的情况下要获得相同的结果,开发者就需要获取 ApplicationContext并调用.getBeanDefinitionNames(),
例如:
System.out.println(Arrays.asList(applicationContext.
getBeanDefinitionNames()));
左右滑动查看完整代码
有了这个新增功能,VS Code更进一步揭示了bean的属性信息,即它们是否是单例、原型等,同时还用“已定义”标记自己的 bean 以保持彼此之间的逻辑井井有条。
作为一名Spring开发人员,bean依赖关系是我们经常处理的事情,将其可视化极大地方便了对这一问题的处理。但是微软并没有将Java和Spring的支持限制在VS Code中。它还增加了对Intellij和Azure的支持,这证明了在微服务和云狂热的情况下,目标是将Azure作为开发Java应用程序时的首选平台。
开发者的看法那么对于开发Java/Spring应用程序的VS Code与IntelliJ的判断是什么?虽然VS Code有了很大的改进,但它还没有达到IntelliJ所赋予Java开发的水准,尤其是在代码重构业务方面。不过,如果使用Java以外的其他语言进行编程,那么VS Code可能是最合适的选择。
VS Code Java的使用者,最多被吐槽的还是插件太多的问题。热心的网友对于这一问题,也是无可奈何:“插件安装完成后还是需要逐一去配置调试的,这个没法自动化,毕竟各人喜好不同,不过大多数插件都是开箱即用的。”甚至被IDEA宠坏了的开发者会调侃:“这玩意儿归根到底就是支持各种各样插件的编辑器!”
不做单选题
作为开源的轻量级通用代码编辑器,VS Code的Java开发体验确实不如JetBrains,但胜在开源免费、支持多语言、具有高度可配置性和可扩展性,而且许多创新体验,比如在远程开发功能体验上,VS Code更胜一筹。比如一名开发者就如是说:
“想在IDEA中使用VS Code的远程开发功能,并在YouTrack中跟踪其远程开发功能。我想要的只是我的代码可以在任何地方运行,而我的本地计算机是IDE。”
快速的创新迭代,会赶超一切。对于编辑器而言,不进则退,也是同样的道理。Atom的停用就是眼前的一个例子。没有大的功能更新,是一件很危险的事情。
从GitHub官方针对代码编辑器的优化与迭代已经全方面转移到了VS Code 上来看,也就注定了同根生的Atom淡出视野的结局。而Atom,作为第一个被广泛应用于市场的Electron应用,12月的退役更多地意味着它本身的历史使命已经达成。所以,难怪会有人为IDEA感到担忧。
在微软全力加仓Java支持的情况下,如果固步自封,产品的迭代与创新跟不上的话,VS Code可能就不仅仅是一个开源免费的高级编辑器了,而极有可能做实“新生代程序员中宇宙第一编辑器”的头衔,甚至成为IDE领域的“安卓”,也或未可知。JetBrains正式版的Fleet会扳回一局吗?答案只有开发者知道。毕竟,哪个编辑器好用取决于市场。但对于开发者来说,却是一件利好的事情,“单选题”只适合“小孩子”去做,真正的coding人,从来都是兼容并蓄,各尽其才!