大家好,欢迎来到 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 年,还进行了许多用户体验改进,以优化开发人员的整体工作掉率。这当中包括:
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 改进,我们确实希望 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 的相关信息
1
QAO 2022-01-21 10:45:51 +08:00 2
欢迎来到 IntelliJ IDEA 2 🤗
|
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. |
3
seaswalker 2022-01-21 11:44:54 +08:00 via iPhone
之前用 vscode 打开 1500 个类的项目直接就不能用了。。
|
4
sodayo 2022-01-21 11:57:31 +08:00 via Android
我现在正在使用 vscode remote 配合 vscode 的 java 和 spring 扩展在开发 springboot 应用,非常感谢你们和微软做出的贡献。
|
5
yousabuk 2022-01-21 12:40:33 +08:00 via iPhone
1 、2 、3 天的工资换一年的 jetbrains 全家桶省时又省力
|
6
yousabuk 2022-01-21 12:41:26 +08:00 via iPhone
免费的时间和精力成本最大
|
7
xlsepiphone 2022-01-21 12:49:05 +08:00
何时能达到 idea 百分之 80 的体验,我都可以换成 vs code 了,不然现在开发还要在 vs code 和 idea 之间切换来去,属实麻烦。
|
8
RedBeanIce 2022-01-21 12:55:05 +08:00 via iPhone
早日干掉 idea
|
9
billly 2022-01-21 13:11:10 +08:00
每隔一段时间就会试试
|
10
kkocdko 2022-01-21 13:29:44 +08:00
挺不错的,我现在 python/rust/c++/javascript 都在 vscode 上写,很方便
|
11
Dragonphy 2022-01-21 13:52:38 +08:00
好好好,希望能早日使用 vscode 作为 java 远程开发工具
|
13
zhentoujun 2022-01-21 15:31:42 +08:00
您好 Fleet 了解一下。
https://www.jetbrains.com/fleet/ |
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 一次只能导入一个,希望可以一次性把没有歧义的包都导入。 |
15
byte10 2022-01-21 18:55:33 +08:00 2
@xlsepiphone 我觉得还可以啊,写个 java 感觉没啥不方便的呀。代码提示也还可以啊,有个简单的调试还不够吗😂。
@yousabuk vscode remote 这个是硬刚需,用过就知道这个到底多强 😏。写个 java ,vscode 是绝对够的,idea 也从来没用过什么高级功能 。 @zhentoujun fleet 说实话,真的挺期待,如果三年内能活跃起来,vscode 估计还是得吃灰 😂。 @hihanley 好像有一个 autoimport 的开关。 |
16
dcsuibian 2022-01-21 19:25:55 +08:00
想咨询下,vscode 的 java 扩展会生成.classpath 、.eclipse 什么的文件吗?之前项目里经常看到这些,但应该 idea 生成的
|
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 如果讲的地方有不明白,那么你也可以留言,我会给你解答哈。
|
19
AEDaydreamer 2022-01-21 22:23:17 +08:00
@dcsuibian vscode 会需要生成.vscode 文件夹,里面一般包含了项目启动和调试的文内容
|
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/
|
22
Meteorite 2022-01-23 16:37:23 +08:00
@zhentoujun fleet 现在只是在非常早期的阶段,具体体验如何也要再观望,收费模式也没有确定。vscode 免费开源~
|
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 内存扩大。
|
25
byte10 2022-01-24 13:36:37 +08:00
@jdneo 好的感谢。但是我的项目其实不大啊,一个 demo 项目,几个模块,能有多大😂,就是偶尔会出现。有时候频繁出现。哪个配置扩大这个内存?
|
26
jdneo 2022-01-25 13:43:24 +08:00
@byte10 它改的其实就是启动 java language server 的 jvm 参数。你也可以自己改:java.jdt.ls.vmargs
|
27
winffee OP @xlsepiphone 您具体是有什么需求呢?
|
28
winffee OP @dcsuibian .eclipse 不会有,classpath 的话,VS Code 支持用户自定义设置位置,具体可以参考 https://code.visualstudio.com/docs/java/java-project#_configure-classpath-for-unmanaged-folders
|