共计 2356 个字符,预计需要花费 6 分钟才能阅读完成。
大家好,欢送来到 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 中文目录 Hello
Error: 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>chcp
65001
C:\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>chcp
65001
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 订阅号,获取更多最新公布!