大家好,欢送来到 11 月版的 Visual Studio Code Java 更新!咱们将分享一些与Java根底开发相干的最新性能以及与应答编码问题的一些解决策略。

根底开发相干的性能会间接影响开发者的日常工作效率,晋升这方面的用户体验将始终是咱们的重点。在11 月的更新中,咱们在这方面进行了多项改良:

测试 – 在测试与测试对象之间跳转

在 11 月的版本中,咱们增加了一项新性能,容许用户在测试和相应的测试对象之间跳转,这个性能将帮忙用户更不便地编写单元测试。

代码操作 – 更不便地生成构造函数和笼罩/实现办法

咱们已经在之前的博客中提到过,咱们会始终致力让常见代码的操作更加易于应用。在最新版本中,用户当初能够应用 Java 类旁边的“灯泡图标”来不便地生成构造函数或笼罩/实现办法!以下是一个疾速演示:

与乱码问题“打交道”

用户在解决各种语言时遇到某种编码问题是很常见的。咱们在听到此类反馈后做了一些剖析,因而在这篇博客中咱们想分享一下咱们的发现以及倡议。

背景

计算机只能了解 0 和 1 等二进制数据,它应用字符集将数据编码/解码为事实世界的字符。两个过程在进行I/O交互时,必须应用兼容的字符集进行编码和解码,否则可能会呈现乱码。MacOS 和 Linux 到处都应用 UTF-8,因而编码对它们来说不是问题。然而,对于 Windows,默认字符集不是 UTF-8 并且是平台相干的,这会导致不同工具之间的编码不统一。

常见问题

以下是在 Windows 终端上运行 Java 程序时的典型编码问题。

  • 文件或目录名蕴含Unicode字符,Java启动器找不到对应的类门路或主类。
中文目录├── Hello.class└── Hello.java
C:\Test>java -cp 中文目录 HelloError: Could not find or load main class Hello
  • 带有 Unicode 字符的字符串文字在打印到终端时会呈现乱码。
Exercises├── 练习.class└── 练习.java
C:\Test>java -cp ./Exercises 练习Error: Could not find or load main class ??Caused by: java.lang.ClassNotFoundException: ??
  • Java程序与终端交互I/O时呈现乱码
public class Hello {    public static void main(String[] args) {        System.out.println("你好!");    }}
C:\Test>chcp65001C:\Test>java -cp ./Exercises Hello??!C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello你好!
  • 程序须要从 stdin 读取 Unicode 字符,并将 Unicode 字符打印到 stdout。
import java.util.Scanner;public class Hello {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        System.out.println(scanner.nextLine());    }}
C:\Test>chcp65001
C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello 你好 ��

咱们的发现与应答此类问题的倡议

之前,为了缓解编码问题,咱们在 Java Debugger 端增加了一些解决办法去强制在咱们的工具链中应用 UTF-8。例如,增加一个launcher.bat 强制终端的代码页为65001 ,并将默认的“file.encoding”属性设置为“UTF-8”。但事实证明,它们并没有系统地解决编码问题,并且还引入了一些额定的副作用(参见#756, microsoft/vscode-java-debug#622, microsoft/vscode-java-debug#646)。

在对该问题进行更多考察后,咱们发现咱们增加的解决办法仿佛没有必要。用户只须要将 windows 零碎区域设置为他们想要的语言,而后 JVM 和终端将主动更改为与您的零碎区域设置兼容的编码。官网 Java 文档 ( https://www.java.com/en/downl... )也倡议这样做。

以下屏幕截图显示了如何在 Windows 中更改零碎区域设置。例如,如果您想应用终端在Java程序中输出汉字,您能够将Windows零碎区域设置为中文。默认的 Java 字符集将是”GBK”并且 cmd 代码页将是”936″ ,它将很好地反对中文字符。

这是无关如何解决编码问题的具体文档

项目管理 – 跟”.project”等元数据文件说再见

如果您正在应用 Java扩大包进行 Java 开发,咱们有个好消息要告诉您 – 当您导入新的 Java 我的项目时,Visual Studio Code 不再在我的项目门路中生成那些暗藏的“.project”元数据文件!这是一个曾经存在三年多的问题,而咱们在11月的版本中修复了它。如果您有趣味理解咱们是如何解决的,请能够拜访这篇博客

年末结语

咱们快到 2021 年底了,在过来的 12 个月里,咱们始终在致力在 Visual Studio Code 上提供更好的 Java 开发体验。到 2022 年,Visual Studio Code 上的 Java 反对将会有更多令人兴奋的事件,所以请持续关注将来的更新。判若两人,咱们感激用户以及社区的反对。

反馈与倡议

请踊跃应用咱们的产品!您的反馈和倡议对咱们十分重要,并将帮忙咱们做得更好。 有几种办法能够给咱们留下反馈:

  • 填写中文问卷
  • 在这篇文章下留言
  • 在咱们的GitHub repo上创立Issue

欢送关注微软中国MSDN订阅号,获取更多最新公布!