V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
winffee
V2EX  ›  Visual Studio Code

Java on Visual Studio Code 的更新 – 2022 年 1 月

  •  
  •   winffee · 2022-01-21 10:01:34 +08:00 · 4818 次点击
    这是一个创建于 1022 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,欢迎来到 Visual Studio Code Java 更新 1 月版!这是我们新年的第一篇博客,我们将回顾 2021 年的亮点,并分享我们 2022 年的产品路线图!除此之外我们还有一些令人激动的产品更新,让我们开始吧!

    2021 年回顾

    2021 年对于 Visual Studio Code 上的 Java 支持是非常丰富以及忙碌的一年。我们对 Java 插件包中的各个板块都进行了重大改进。在这些更新中,我们想突出一些亮点:

    Java™语言支持 1.0 版

    2021 年,我们发布了Language Support for Java ™的官方 1.0 版本,这标志着微软与红帽多年合作的重要里程碑和成果。此版本包含许多重要功能,例如 Java 17 支持、更简单的类型层次结构查找、源代码查找、Gradle Kotlin (.kts) 支持等。此外,我们还从 0.78 版本开始对代码补全性能进行了一系列优化。通过这写优化,我们看到平均代码完成响应时间减少了 60%。

    Gradle for Java 插件发布

    Gradle 支持一直是社区中的热门话题。2021 年 10 月,我们正式发布了" Gradle for Java "插件,来应对开发者的 Gradle 需求。该插件现在有超过 23 万的下载量,我们希望继续对插件进行迭代。

    新的上手体验

    更好的上手体验始终是重中之重。2021 年,我们在该领域进行了多项改进,包括在 Visual Studio Code 中为 Java 开发人员提供新的产品内欢迎向导。我们还重新设计了欢迎视图和帮助中心页面,以便新开发者可以找到他们需要的指引。

    各种用户体验改进

    在整个 2021 年,还进行了许多用户体验改进,以优化开发人员的整体工作掉率。这当中包括:

    • 测试体验 – Test Runner for Java (测试插件)采用了来自 Visual Studio Code 的新测试用户界面 ,在特性、功能和易用性方面有了更好的体验。
    • 项目管理 – 从 11 月的更新后,我们不再在项目根文件夹中生成.project 元数据文件!这是社区中呼声最高的问题之一,我们终于提供了一个期待已久的解决方案。点击此处查看我们是如何解决该问题的。
    • 代码操作 – 我们在代码优化建议中添加了一些功能,以便用户更容易生成 Getter/Setter 和构造函数等,我们将继续致力使代码相关操作更易于访问。

    GitHub Codespaces 中的 Spring 支持

    除了核心 Java 插件更新之外,远程开发领域也有令人兴奋的更新。2021 年 9 月,我们宣布通过与 VMWare 合作,目前在GitHub Codespaces上已完全支持 Spring 框架。开发者可以直接在浏览器环境中无缝开发 Spring 应用。

    如果您想了解 2021 年我们所做的所有改进,请访问我们过去的博客

    用户增长

    除了产品更新,在 2021 年我们还见证了年用户的增长。我们现在有超过 150 万用户在 VS Code 中开发 Java 。这是用户不断给我们反馈的结果,也感谢来自社区中广大开发者的支持。

    2022 年产品路线图

    现在让我们来展望 2022 年!新的一年,我们将关注以下领域:

    基础开发体验提升

    基础开发体验直接影响我们开发者的日常工作,这一领域将继续成为我们的重中之重。这包括努力提高我们的代码完成建议的智能性,提供更相关的代码片段生成,并根据用户的偏好提供各种快捷方式(例如"syso"和"sout")。此外,我们将进一步提升我们的调试体验。我们会做一系列的改进,例如:允许对反编译的类进行调试、在变量视图中更快地求值以及支持 lambda 表达式求值。我们还将探索 Project Loom项目提供的虚拟线程,以提高调试的性能。此外,显示测试覆盖率是我们希望支持的另一个功能,这样可以进一步增强我们的 Java 测试体验。最后,我们一直致力于支持最新的 Java 技术,Java 18 的支持也在我们的计划之中。

    性能和可靠性

    性能和可靠性是我们 2022 年关注的另一个领域。在这方面,我们希望提高 Java Language Server 的可靠性,减少 Java Language Server 无响应的情况。我们还从用户反馈了解到,如果有很多依赖项要下载,那么第一次导入项目可能会花费很多时间,因此我们也计划对此进行研究。最后但同样重要的是,我们将继续优化代码补全性能。

    构建工具

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

    更好的 Spring Boot 框架支持

    Spring Boot 框架是最流行的 Java 框架之一,它允许开发者轻松构建微服务或 Web 应用程序。当前的Spring Boot 扩展包包含许多优化 Visual Studio Code 上的 Spring 开发体验的功能,但我们听到了来自 Spring 开发者社区的反馈,并计划做更多的优化。我们将与 VMWare 合作对核心 Java 插件包和 Spring 插件包进行改进,以下是改进的一般方向:

    • 更方便的 Spring 组件创建(例如 Spring 项目和 Spring beans)
    • 常用 Spring 类以及组件的自动代码生成
    • 更好的 Spring 组件可视化视图(例如 Spring bean 关系图以及 REST API 映射列表)
    • 在 Spring Dashboard 中提供更好的 Spring 项目生命周期管理
    • 管理依赖关系时优化对 Spring 相关库的支持

    通过这些 Spring 改进,我们确实希望 Visual Studio Code 上的 Spring 开发体验将比以往更加便捷。

    用户体验

    我们关注的下一个领域是用户体验(UX)。在 2021 年,我们遇到了很多这样的情况:用户想要一个功能,但其实它是已经存在的,只不过因为很难发现而找不到。因此,使功能更易于使用和更容易被发现将是我们在该领域的重点。我们还认识到 Java 开发者可能来自不同的 Java IDE 背景,因此我们将更容易从其他 IDE 迁移设置和配置。最后,我们知道有很多学生开发者在 Visual Studio Code 中使用 Java ,因此我们计划进行一些教育场景的改进,例如为没有构建工具的项目提供更好的 JUnit 测试端到端体验,优化 JavaFX / Swing 的项目创建工作流,以及更流畅的 Java AWT 包导入体验。最后,我们还将研究在我们的 Java 扩展中支持 Live Share 。

    云原生开发

    近年来云原生一直是软件开发行业最热门的话题之一。在采用云原生开发方式时,开发人员需要处理微服务、云平台、Kubernetes 等等不同的技术。为了满足开发者在这方面的需求,我们计划探索与 Kubernetes 的更深层次集成,以及提供与不同云服务(如Azure Spring Cloud)的整合。借助 Visual Studio Code 的远程开发插件GitHub Codespaces ,我们的目标是让云原生开发成为 Java 开发人员的绝佳体验。

    功能更新

    除了路线图,我们还有一些令人兴奋的新产品要分享:

    Java 插件包中自带 JRE

    我们有好消息要告诉大家——借助 Visual Studio Code 中对于不同平台插件的支持,我们现在已将 JRE 嵌入到我们的 Java 插件中,这意味着用户不再需要担心配置 JDK 来运行插件, 只需要为项目配置** JDK 即可 。我们还更新了入门体验和配置 Java Runtime 页面( Ctrl+Shift+P : **** **"Configure Java Runtime") 以反映此更改。对于新用户,只需安装Java 插件包,下载项目所需的 JDK (支持 Java 1.5 或更高版本),创建 Java 文件,然后愉快地编码!

    Java 代码格式化文件配置

    我们经常听到开发者说他们需要为 Java 代码进行格式化文件的配置,但他们找不到好的地方来预览效果。为了解决格式化的问题,我们之前引入了一个视图,开发者可以在其中更改格式化设置并预览效果。您可以通过两种方式访问此功能:

    第一个选项 – 只需调出命令面板( **Ctrl+Shift+P ** ),然后运行"Java: Open Formatter Settings with Preview"命令

    第二个选项 – 使用"Java:Help Center"( **Ctrl+Shift+P ** ,然后运行"Java: Help Center"命令)。这将打开 Java 帮助中心页面,其中包含非常有用的功能和快捷方式的列表。在此页面上,只需单击"Configure Formatter Settings"。

    使用上述任一选项将引导您进入格式化程序设置视图,您可以在其中轻松更改和预览 Visual Studio Code 中的代码格式化设置。

    反馈与建议

    2022 年,Visual Studio Code 上的 Java 会有很多激动人心的更新,一如既往,您的反馈和建议对我们非常重要,将有助于我们未来的产品塑造。有几种方法可以给我们留下反馈

    资源

    以下链接和资源能帮助您更好地了解 Java on Visual Studio Code 的相关信息

    28 条回复    2022-02-23 18:03:23 +08:00
    QAO
        1
    QAO  
       2022-01-21 10:45:51 +08:00   ❤️ 2
    欢迎来到 IntelliJ IDEA 2 🤗
    byte10
        2
    byte10  
       2022-01-21 11:32:29 +08:00
    通过这写优化,我们看到平均代码完成响应时间减少了 60%。这个一点我是认同的,终于正常了。

    最近频繁出现这个内存溢出啥的, 什么原因呢
    The Java Language Server encountered an OutOfMemory error. Some language features may not work due to limited memory.
    seaswalker
        3
    seaswalker  
       2022-01-21 11:44:54 +08:00 via iPhone
    之前用 vscode 打开 1500 个类的项目直接就不能用了。。
    sodayo
        4
    sodayo  
       2022-01-21 11:57:31 +08:00 via Android
    我现在正在使用 vscode remote 配合 vscode 的 java 和 spring 扩展在开发 springboot 应用,非常感谢你们和微软做出的贡献。
    yousabuk
        5
    yousabuk  
       2022-01-21 12:40:33 +08:00 via iPhone
    1 、2 、3 天的工资换一年的 jetbrains 全家桶省时又省力
    yousabuk
        6
    yousabuk  
       2022-01-21 12:41:26 +08:00 via iPhone
    免费的时间和精力成本最大
    xlsepiphone
        7
    xlsepiphone  
       2022-01-21 12:49:05 +08:00
    何时能达到 idea 百分之 80 的体验,我都可以换成 vs code 了,不然现在开发还要在 vs code 和 idea 之间切换来去,属实麻烦。
    RedBeanIce
        8
    RedBeanIce  
       2022-01-21 12:55:05 +08:00 via iPhone
    早日干掉 idea
    billly
        9
    billly  
       2022-01-21 13:11:10 +08:00
    每隔一段时间就会试试
    kkocdko
        10
    kkocdko  
       2022-01-21 13:29:44 +08:00
    挺不错的,我现在 python/rust/c++/javascript 都在 vscode 上写,很方便
    Dragonphy
        11
    Dragonphy  
       2022-01-21 13:52:38 +08:00
    好好好,希望能早日使用 vscode 作为 java 远程开发工具
    efaun
        12
    efaun  
       2022-01-21 14:01:16 +08:00
    @QAO #1 远远达不到 IDEA 2 的水平
    zhentoujun
        13
    zhentoujun  
       2022-01-21 15:31:42 +08:00
    您好 Fleet 了解一下。
    https://www.jetbrains.com/fleet/
    hihanley
        14
    hihanley  
       2022-01-21 18:48:24 +08:00
    感谢,vscode 开发 java 的体验越来越好了。有两个小建议:
    1. java 扩展包可以把 lombok 也加进去吗,如果 vscode 没装 Lombok 插件,打开用了 Lombok 的项目,lsp 会 crash 然后提醒,看日志才能发现是 Lombok 没装;或者打开使用了 Lombok 的项目,提醒安装 Lombok 插件 也可以。
    2. 代码中有多个未导入的包时,Quick Fix 一次只能导入一个,希望可以一次性把没有歧义的包都导入。
    byte10
        15
    byte10  
       2022-01-21 18:55:33 +08:00   ❤️ 2
    @xlsepiphone 我觉得还可以啊,写个 java 感觉没啥不方便的呀。代码提示也还可以啊,有个简单的调试还不够吗😂。
    @yousabuk vscode remote 这个是硬刚需,用过就知道这个到底多强 😏。写个 java ,vscode 是绝对够的,idea 也从来没用过什么高级功能 。
    @zhentoujun fleet 说实话,真的挺期待,如果三年内能活跃起来,vscode 估计还是得吃灰 😂。
    @hihanley 好像有一个 autoimport 的开关。
    dcsuibian
        16
    dcsuibian  
       2022-01-21 19:25:55 +08:00
    想咨询下,vscode 的 java 扩展会生成.classpath 、.eclipse 什么的文件吗?之前项目里经常看到这些,但应该 idea 生成的
    hihanley
        17
    hihanley  
       2022-01-21 19:40:42 +08:00
    @byte10 感谢,找到了 `java.saveActions.organizeImports`
    byte10
        18
    byte10  
       2022-01-21 20:03:02 +08:00   ❤️ 6
    @hihanley 嗯 你给我 “感谢回复” 吧,因为我回复你 需要金币的,我已经只整下 十几个了,再不帮帮我,我就没有啦。也可以看看我的贴,我发布了一个 NIO 服务讲解很强。如果你的开发经验不足五年,那么你一定要去看我的 NIO 视频讲解啊, https://www.bilibili.com/video/BV1FS4y1o7QB?spm_id_from=333.999.0.0 如果讲的地方有不明白,那么你也可以留言,我会给你解答哈。
    AEDaydreamer
        19
    AEDaydreamer  
       2022-01-21 22:23:17 +08:00
    @dcsuibian vscode 会需要生成.vscode 文件夹,里面一般包含了项目启动和调试的文内容
    hihanley
        20
    hihanley  
       2022-01-22 00:37:04 +08:00
    @byte10 哈哈哈,感谢已发送
    Meteorite
        21
    Meteorite  
       2022-01-23 16:36:40 +08:00   ❤️ 1
    @dcsuibian 原来是会生成的,但最近已经修复了这个问题,参考这个帖子: https://devblogs.microsoft.com/java-ch/1-1-0-no-more-project-metadata/
    Meteorite
        22
    Meteorite  
       2022-01-23 16:37:23 +08:00
    @zhentoujun fleet 现在只是在非常早期的阶段,具体体验如何也要再观望,收费模式也没有确定。vscode 免费开源~
    dcsuibian
        23
    dcsuibian  
       2022-01-23 18:51:09 +08:00
    @Meteorite 哦哦哦,感谢。
    是时候把卸掉的 java 扩展装回来了。
    jdneo
        24
    jdneo  
       2022-01-24 12:34:38 +08:00
    @byte10 OutOfMemory 这个是最近引入的一个变动: https://github.com/redhat-developer/vscode-java/pull/2085 。Java Language Server 默认的 JVM 最大内存是 1G ,如果加载的项目比较大的话,1G 会不够用,这个时候就会弹出这个提示并把 JVM 内存扩大。
    byte10
        25
    byte10  
       2022-01-24 13:36:37 +08:00
    @jdneo 好的感谢。但是我的项目其实不大啊,一个 demo 项目,几个模块,能有多大😂,就是偶尔会出现。有时候频繁出现。哪个配置扩大这个内存?
    jdneo
        26
    jdneo  
       2022-01-25 13:43:24 +08:00
    @byte10 它改的其实就是启动 java language server 的 jvm 参数。你也可以自己改:java.jdt.ls.vmargs
    winffee
        27
    winffee  
    OP
       2022-02-23 17:55:37 +08:00
    @xlsepiphone 您具体是有什么需求呢?
    winffee
        28
    winffee  
    OP
       2022-02-23 18:03:23 +08:00
    @dcsuibian .eclipse 不会有,classpath 的话,VS Code 支持用户自定义设置位置,具体可以参考 https://code.visualstudio.com/docs/java/java-project#_configure-classpath-for-unmanaged-folders
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2316 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 16:02 · PVG 00:02 · LAX 08:02 · JFK 11:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.