Java on VS Code 更新 – 2023年7月:反编译器支持的更新,代码补全优化的进展以及深入解析
作者:Nick Zhu
大家好,欢迎来到Visual Studio Code for Java的7月更新!在这篇博客中,我们将为您提供有关反编译器支持的重要更新。此外,我们将分享更多最近代码补全性能提升的进展,以及AI相关的更新。让我们开始吧!
反编译器支持升级
Java反编译器对于理解第三方库、调试和学习编写良好的代码至关重要。它可以帮助开发人员将编译后的 Java 字节码反编译回人类可读的 Java 源代码,从而提高生产力和代码理解力。
此前,用户反映说我们的插件内置的反编译器对反编译和调试代码还是不够方便。在我们的最新版本中,我们在 插件包 中嵌入了功能强大的 FernFlower Java反编译器(该反编译器目前为一个开源项目,并在IntellIJ IDEA中使用)。该反编译器允许您直接单击库,它会自动将Bytecode反编译为可读的源代码。在反编译的代码中,您可以像平常一样进行调试,阅读代码。我们希望这个功能能够极大地提高您的开发效率。以下一个简单的演示。
动态开启/关闭嵌入提示
嵌入提示(Inlay Hint) 是 Visual Studio Code 和许多其他开发工具中的一项流行功能。它在源代码中添加额外的显示信息,帮助您了解代码的作用,例如参数名称、参数类型、变量类型等。然而,我们从用户那里了解到,有时这些信息模糊了原始代码并让界面变得拥挤。实际上,Visual Studio Code 有一个设置,允许您动态切换嵌入提示,以便您可以在键入代码时方便地打开/关闭它,从而轻松调整您的体验。可以通过搜索“inlay hints”并从参考下图来找到该设置。
这里是一个简单的演示
代码补全性能的持续优化
我们一直强调代码完成性能的重要性及其在提高开发人员生产力方面的关键作用。在我们 之前的博客文章 中,我们展示了最近代码补全性能的改进。在本月,我们很高兴分享更多的进展和技术细节。
代码补全完成时间的减少(与 之前的版本相比 )
插件版本 | 平均值 | P99 (百分位) | P95 (百分位) | P90 (百分位) | P75 (百分位) | P50 (百分位) |
1.18 (对比1.17) | 13.85% | 56.15% | 49.36% | 50.22% | 13.69% | 34.38% |
1.19 (对比1.18) | 55.65% | 17.19% | 17.01% | 15.18% | 14.14% | 9.52% |
如表所示,在 1.19 版本之后,代码完成延迟在平均时间和所有百分位数排名中均有显着降低。
代码完成优化工作与 Eclipse Java Development (JDT) 语言服务器紧密相关,我们的工作主要集中在三个主要领域。
优化诊断作业 (Diagnostic Job)
相关Pull Request: "https://github.com/eclipse/eclipse.jdt.ls/pull/2587">PR #2587 、 PR #2574 、 PR #2664
Eclipse JDT Language Server 中的诊断作业负责分析 Java 源代码并提供有关潜在问题(例如编译器错误和警告)的反馈。这些 PR 引入了对诊断作业处理的优化,从而提高了性能并减少了提供代码诊断的延迟。通过微调诊断分析,开发人员可以更快地收到反馈并更迅速地深入了解其代码库。
优化Request Handler调度规则
相关Pull Request: "https://github.com/eclipse/eclipse.jdt.ls/pull/2637">PR #2637 、 "https://github.com/eclipse/eclipse.jdt.ls/pull/2641">PR #2641 、 "https://github.com/eclipse/eclipse.jdt.ls/pull/2643">PR #2643 、 "https://github.com/eclipse/eclipse.jdt.ls/pull/2659">PR #2659 、 PR #2660
请求处理程序的有效调度对于处理来自 IDE 的传入代码完成请求至关重要。提到的 PR 重点是优化 Eclipse JDT 语言服务器使用的调度规则,以有效地确定优先级并处理代码完成请求。这些改进使服务器能够更有效地分配资源,从而减少争用并加快响应时间。通过简化请求处理程序调度,开发者可以体验响应更快的代码完成工作流程。
优化完成请求处理程序
相关Pull Request: "https://github.com/eclipse/eclipse.jdt.ls/pull/2642">PR #2642 、 "https://github.com/eclipse/eclipse.jdt.ls/pull/2639">PR #2639 、 "https://github.com/eclipse/eclipse.jdt.ls/pull/2621">PR #2621 、 PR #2614 、 PR #2638
完成请求处理程序负责根据 IDE 中的上下文生成代码完成建议。这些 PR 对完成请求处理流程进行了优化,从而可以更快、更准确地生成建议。我们的工作主要集中在以下两个方面:
- 优先返回补全建议列表并延迟计算插入的文本
- 减少返回的补全响应负载大小并减少序列化/反序列化成本
通过增强完成请求处理程序,开发者可以体验到代码完成建议的速度和相关性的显着提高,从而使他们能够更有效地编写代码。
我们想感谢开源社区里面参与这些PR的每一位成员。在增强代码补全方面取得的进展是我们持续致力于提高 Visual Studio Code Java 性能的一个充满希望的里程碑。除了代码补全之外,我们还将继续完善和优化 Visual Studio Code 的可靠性和兼容性。请继续关注我们即将发布的博客文章。
Semantic Kernel Java SDK发布
最后,我们很高兴分享Semantic Kernel的Java SDK已经在7月19日正式发布了。该SDK的源代码可以在这个 GitHub Repo 上找到,而Java开发者可以在Maven的Central Repo上找到Java的0.2.6-alpha 版本包 。Semantic Kernel 可以将大语言模型(LLM)与现有的编程语言(如C#、Python和 Java)集成在一起,减少自然语言语义和内存管理等复杂任务。Java开发者更是可以利用Java SDK与GPT进行更复杂的集成。
目前Visual Studio Code也推出了Semantic Kernel的插件,可以点击 这个链接 下载该插件。
安装 Java 插件包
要使用上述所有功能,请在 Visual Studio Code 上下载并安装 Extension Pack for Java 。
如果您是一位Spring开发者,并且正在编写Spring Boot相关的程序,您也可以下载并安装 Spring Boot插件包 ,获得与Spring Boot有关的专属开发体验
反馈与建议
2023 年,Visual Studio Code 上的 Java 会有很多激动人心的更新,一如既往,您的反馈和建议对我们非常重要,将有助于我们未来的产品塑造。有几种方法可以给我们留下反馈
- 填写中文问卷
- 在这个帖子下留言
- 在我们的GitHub repo上 创建Issue
- 发送电子邮件到 vscjfeedback@microsoft.com
资源
以下链接和资源能帮助您更好地了解Java on Visual Studio Code的相关信息
- 了解 更多 Visual Studio Code上Java 的更多信息
- 逐步探索 有关Visual Studio Code的Java教程
反馈与建议
2023 年,Visual Studio Code 上的 Java 会有很多激动人心的更新,一如既往,您的反馈和建议对我们非常重要,将有助于我们未来的产品塑造。有几种方法可以给我们留下反馈
- 填写中文问卷
- 在这个帖子下留言
- 在我们的GitHub repo上 创建Issue
- 发送电子邮件到 vscjfeedback@microsoft.com
资源
以下链接和资源能帮助您更好地了解Java on Visual Studio Code的相关信息
- 了解 更多 Visual Studio Code上Java 的更多信息
- 逐步探索 有关Visual Studio Code的Java教程