Java on VS Code 7 月更新|反编译器支持升级、代码补全性能提升、AI 相关更新及更多

作者:Nick Zhu
排版:Alan Wang

大家好,欢迎来到 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:PR #2587 、PR #2574、 PR #2664

Eclipse JDT Language Server 中的诊断作业负责分析 Java 源代码并提供有关潜在问题(例如编译器错误和警告)的反馈。这些 PR 引入了对诊断作业处理的优化,从而提高了性能并减少了提供代码诊断的延迟。通过微调诊断分析,开发人员可以更快地收到反馈并更迅速地深入了解其代码库。

优化 Request Handler 调度规则

相关 Pull Request:PR #2637、PR #2641、PR #2643、PR #2659、PR #2660

请求处理程序的有效调度对于处理来自 IDE 的传入代码完成请求至关重要。提到的 PR 重点是优化 Eclipse JDT 语言服务器使用的调度规则,以有效地确定优先级并处理代码完成请求。这些改进使服务器能够更有效地分配资源,从而减少争用并加快响应时间。通过简化请求处理程序调度,开发者可以体验响应更快的代码完成工作流程。

优化完成请求处理程序

相关 Pull Request:PR #2642、PR #2639、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 教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署

最近买了ChatGPT PLUS服务,想通过web服务将它共享给其他人使用,搜了一下目前GitHub上比较热门的服务有 ChatGPT-Next-Webchatgpt-web-share 其中chatgpt-web-share支持API和PLUS账号分享两种方式,且架构为PythonJSDocker,相对比…

【LeetCode】27. 移除元素

题目大概意思是剔除nums数组中出现的所有val值。可以用快慢双指针法来做。 快的指针在前面遍历找值不为val的元素的下标,慢的负责接收值不为val的元素,并及时更新数组。 class Solution {public int removeElement(int[] nums, int val) {//快慢指针法in…

【Liux下6818开发板(ARM)】实现简易相册

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

介绍如何快速传输100G大文件传输方法

如何快速地将100GB的大文件从一个地方传送到另一个地方,这是许多人都遇到过的一个难题,无论是个人用户还是企业用户,都有这样的需求。在很多场合,我们需要将大文件迅速地发送到远程位置。比如,当我们需要对重要数据进行…

心法利器[93] | 谈校招:技术面

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

DeepVO 论文阅读

论文信息 题目:DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks 作者:Sen Wang, Ronald Clark, Hongkai Wen and Niki Trigoni 代码地址:http://senwang.gitlab.io/DeepVO/ (原作者并没有开源…

插入排序算法

插入排序 算法说明与代码实现&#xff1a; 以下是使用Go语言实现的插入排序算法示例代码&#xff1a; package mainimport "fmt"func insertionSort(arr []int) {n : len(arr)for i : 1; i < n; i {key : arr[i]j : i - 1for j > 0 && arr[j] > …

Python web实战 | 使用 Flask 实现 Web Socket 聊天室

概要 今天我们学习如何使用 Python 实现 Web Socket&#xff0c;并实现一个实时聊天室的功能。本文的技术栈包括 Python、Flask、Socket.IO 和 HTML/CSS/JavaScript。 什么是 Web Socket&#xff1f; Web Socket 是一种在单个 TCP 连接上进行全双工通信的协议。它是 HTML5 中的…

【编程语言 · C语言 · 学生管理系统】

【编程语言 C语言 学生管理系统】https://mp.weixin.qq.com/s?__bizMzg4NTE5MDAzOA&mid2247491542&idx1&snf9b72a5af62a93bc902c5467056a9343&chksmcfade32ff8da6a3956be7d6a5dceb97de27e25157804abf8a3193272fa8ad68e78640ca33a5c&token1462056111&…

【大数据之Flume】四、Flume进阶之复制和多路复用、负载均衡和故障转移、聚合案例

1 复制和多路复用 &#xff08;1&#xff09;需求&#xff1a;使用 Flume-1 监控文件变动&#xff08;可以用Exec Source或Taildir Source&#xff09;&#xff0c;Flume-1 将变动内容传递给 Flume-2&#xff08;用Avro Sink传&#xff09;&#xff0c;&#xff08;用Avro Sou…

BugKu CTF(杂项篇MISC)—想要种子吗

BugKu CTF(杂项篇MISC)—想要种子吗 提 示: 描 述:flag{} 题目下载后是一张图片&#xff0c;打开如下。 一、工具 十六进制编辑器010 editor kali系统文件分离工具binwalk或者foremost 维吉尼亚密码 STEGHIDE图片隐写工具 文章所需的软件下载地址 ARCHPR压缩包密码破解…

美团2024校招6000人;伯克利博士讲Llama 2技术细节;互联网转行AIGC最全指北;技术进步周期与创客崛起 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 美团 2024 届校园招聘将录用 6000 人&#xff0c;技术类岗位扩招超 50% 美团招聘公众号宣布启动 2024 届校园招聘&#xff01;此次招聘…

PCB制版技术

1、在头脑里形成一个原理图----现在就下载AD9盖版&#xff0c;诞生了一个问题&#xff0c;电路板去哪里买&#xff0c;买了怎么焊接电路和芯片&#xff0c;怎样流程化批量制作电子产品 1.1 形成一个PCB板&#xff0c;形成一个结构 1.2 焊接&#xff0c;嫁接&#xff0c;组装等 …

Scaling Instruction-Finetuned Language Models

Paper name Scaling Instruction-Finetuned Language Models Paper Reading Note Paper URL: https://arxiv.org/pdf/2210.11416.pdf TL;DR 2022 年谷歌出的文章&#xff0c;对指令微调的影响因素进行分析&#xff0c;提出了一些提升指令微调效果的方案。与该文章一起出品…

vue sku商品规格多选

vue sku商品规格多选 1.创建一个数据对象&#xff0c;用于存储SKU的选中状态。例如&#xff0c;可以使用一个数组来表示选中的SKU&#xff0c;每个元素代表一个SKU选项的id。 data() {return {selectedOptions: []} }2.在SKU选项列表中&#xff0c;使用v-bind:class绑定一个计…

基于双层优化的微电网系统规划设计方法(Matlab代码实现)

目录 &#x1f4a5;1 概述 1.1 微电网系统结构 1.2 微电网系统双层规划设计结构 1.3 双层优化模型 1.4 上层容量优化模型 1.5 下层调度优化模型 &#x1f4da;2 运行结果 &#x1f389;3 文献来源 &#x1f308;4 Matlab代码、数据、文章讲解 &#x1f4a5;1 概述 文献来源&…

Meta “地平线世界”移动端应用即将上线,手机快乐元宇宙?

根据海外记者 Janko Roettgers 的报道&#xff0c;Meta 预计很快推出移动版的 VR 元宇宙服务 "地平线世界"&#xff0c;这是Meta 长期开发的产品。 根据最新报道&#xff0c;Meta宣布正在研发“地平线世界”的移动版&#xff0c;并表示这一服务已经可以在Quest VR设…

LInux的安装(VMware,网卡设置,SSH连接工具)

Linux的安装 1、安装方式介绍 1.安装方式: 物理机安装:直接将操作系统安装到服务器硬件上 虚拟机安装:通过虚拟机软件安装 **虚拟机( Virtual Machine&#xff09;**指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。 2、安装Linux 在官网将…

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

在前不久&#xff0c;PoseiSwap 曾以1000万美元的估值&#xff0c;获得了来自于ZebecLabs基金会的150万美元的融资。此后 PoseiSwap 又以2500万美元的估值&#xff0c;从GateLabs、EmurgoVentures、Republic以及CipholioVentures等行业顶级投资机构中&#xff0c;获得了新一轮未…

Vue2面试题

1. Vue 的基本原理 当 一 个 Vue 实 例 创 建 时 &#xff0c; Vue 会 遍 历 data 中 的 属 性 &#xff0c; 用 Object.defineProperty &#xff08; vue3.0 使 用 proxy&#xff09; 将 它 们 转 为 getter/setter&#xff0c;并且在内部追踪相关依赖&#xff0c;在属性被访…