编程

微软公布VS Code Java 2022年路线图

924 2022-01-24 19:20:20

近日,微软在开发者博客中透露了 Visual Studio Code Java 在 2022 年的 开发路线图 ,下方是微软发布的一张概括图片,概括了他们在 2022 年将会做出的改进与变化。图片内容比较简洁,不妨跟着我们一起看看具体每项内容的变化。

根据微软统计,在 2021 年,有超过 150 万开发者在 VS Code 中进行 Java 开发。可能正是这个规模庞大的数量让微软决定继续大幅改进 Java 的功能和开发体验。

基本的开发体验改进

基本的内循环体验影响着开发人员的日常工作效率和生产力,这一领域将继续是微软的首要关注点。微软将提高代码补全建议的智能性,提供并生成更相关的代码片段,此外还会根据用户的偏好提供各种快捷键(如 "syso" 和 "sout")。

除了提升编写代码的体验,微软还将进一步改善开发者的调试体验。在 2022 年,VS Code 将允许开发者对反编译的类进行调试,在变量视图和 lambda 表达式评估中更快地进行评估。微软还将探索启用由新的 Project Loom 驱动的虚拟线程的可能性,以提高调试性能。

VS Code 在 2022 年还将改善 Java 的测试,其中显示测试覆盖率就是官方十分希望支持的一个功能,这个功能可以进一步提高 Java 测试体验。在基本的开发体验中,最后一个关注的重点就是在 2022 年的路线图中微软将对 Java 18 提供支持。

性能和可靠性

性能和可靠性是微软在 2022 年关注的另一个领域。在这个领域,他们将提高 Java 语言服务器(Java Language Server)的可靠性,减少 Java 语言服务器无相应的情况。

微软还从社区那里了解到,如果一个项目有很多依赖项需要下载,那么第一次导入时可能需要很长时间,所以他们计划解决这个问题。最后但同样重要的是,微软还将减少代码补全的响应时间。

构建工具

构建和依赖性管理一直是 Java 开发的一个关键部分,尤其是对于大型和多模块项目。微软将继续为 Gradle for Java 扩展添加新功能,并改进现有的 Maven 扩展。

Spring Boot 端到端支持

Spring Boot 框架是最受欢迎的 Java 框架之一,它允许开发者轻松构建微服务或 Web 应用。目前的 Spring Boot 扩展包( Spring Boot Extension Pack )包含许多优化 Visual Studio Code 上 Spring 开发体验的功能。根据 Spring 开发者社区的反馈,微软计划更进一步,他们将与 VMWare 合作,对核心 Java 扩展和 Spring 扩展进行改进,以下是改进的方向与内容:

更容易地创建 Spring 项目、控制器和 bean 的工作流程

对 Spring 核心概念(如 Bean 和 API 映射)进行更好的可视化处理

为 Spring 控制器和类生成模板代码

在 Spring Boot 仪表板中改进 Spring 应用生命周期管理

在管理依赖关系时,添加 Spring 库的体验更加直观

用户体验

微软表示,在 2021 年他们遇到了很多这样的情况:开发者要求使用已经存在的功能,但他们却找不到,因为这些功能很难被发现。因此,使功能更容易使用和更容易发现将是微软关注的另一个重点。由于不同的 Java 开发者可能从不同的 Java IDE 迁移至 VS Code,所以微软将使开发者从其他 IDE 迁移设置和配置都变得更容易。

如今有很多学生开发者也在 Visual Studio Code 中使用 Java,所以微软也计划为这个群体做出一些针对性的改进,比如为没有构建工具的项目提供更好的 JUnit 测试端到端体验,为 JavaFX / Swing 项目优化项目创建工作流程,以及为 Java AWT 包提供更流畅的包导入体验。最后,还将在 Java 扩展中支持 Live Share。

云原生开发

云原生是软件开发行业中最流行的话题之一。通过云原生开发方式,开发者需要处理微服务、云平台、Kubernetes 等问题。

为了解决开发者在这方面的需求,微软计划将 VS Code 与 Kubernetes 深度整合,以及与不同的云服务(如 Azure Spring Cloud)的交互。借助 Visual Studio Code 的远程开发扩展和 GitHub Codespaces,微软将致力于为 Java 开发者带来更好的云原生开发体验。

反馈和建议

在 2022 年,Visual Studio Code 将会针对 Java 开发作出非常多的更新,如果开发者还有其他建议的话,可以在微软 VS Code 的 GitHub issue 页面上创建新的 issue。