1.概述
Oracle在2018年9月发布了java 11,仅在其前身版本10后6个月。
java 11是继java 8 之后第一个长期支持的版本。Oracle在2019年一月份已经停止了对java 8 的支持。因此,大部分人会升级到java 11。
在本教程中,我们将看看选择java 11的原因。然后我们将会探索几个新特性,已移除的特性以及java11中引入的性能增强。
2.Oracle vs. Open JDK
Java10是最后一个免费的Oracle JDK版本,我们可以在没有许可证的情况下进行商业使用。从Java 11开始,Oracle不提供免费的长期支持。
值得感谢的是,Oracle继续提供Open JDK发布,我们可以下载免费使用。
除了Oracle,还有一些其他的Open JDK提供者可供我们选择。
Differences Between Oracle JDK and OpenJDK
3.开发者特性
让我们看看常见API的更改,以及其他一些对开发人员有用的特性。
3.1 新 String 方法
Java 11 String 类增加了一个新方法:isBlank, lines, strip, stripLeading, stripTrailing, and repeat.
String multilineString = "Baeldung helps \n \n developers \n explore Java.";
List<String> lines = multilineString.lines()
.filter(line -> !line.isBlank())
.map(String::strip)
.collect(Collectors.toList());
assertThat(lines).containsExactly("Baeldung helps", "developers", "explore Java.");
这些方法可以减少操作String对象涉及的样板代码数量,从不得不导入外部包中解脱出来。
在上面的例子中的strip方法,提供了与trim方法非常相似的功能,但有更好的控制以及Unicode支持。
3.2 新 File 方法
另外,Java11从文件中读取/写入文本更加容易。
我们可以使用File类新的的静态方法:readString 和 writeString
Path filePath = Files.writeString(Files.createTempFile(tempDir, "demo", ".txt"), "Sample text");
String fileContent = Files.readString(filePath);
assertThat(fileContent).isEqualTo("Sample text");
3.3 集合到数组
java.util.Collection 接口有一个新的默认方法:toArray 。