欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java13 闪亮来袭,你是否还停留在 Java8

程序员文章站 2022-05-29 10:32:00
近期 Java 界好消息频传。先是 Java 13 发布,接着 Eclipse 也发布了新版本表示支持新版本的 Java 特性。 本文介绍了 Java 13 的新特性并展示了相关的示例。 2019 年 9 月 17 日,Java 13 正式发布。特性如下。 Java 13 新特性 此版本带来了以下几 ......

近期 java 界好消息频传。先是 java 13 发布,接着 eclipse 也发布了新版本表示支持新版本的 java 特性。
本文介绍了 java 13 的新特性并展示了相关的示例。

2019 年 9 月 17 日,java 13 正式发布。特性如下。

java 13 新特性

此版本带来了以下几大新特性:

  • jep 350,dynamic cds archives:扩展应用程序类 - 数据共享,以允许在 java 应用程序执行结束时动态归档类。归档类将包括默认的基础层 cds(class data-sharing)存档中不存在的所有已加载的应用程序类和库类。
  • jep 351,zgc: uncommit unused memory:增强 zgc 以将未使用的堆内存返回给操作系统。
  • jep 353,reimplement the legacy socket api:使用易于维护和调试的更简单、更现代的实现替换 java.net.socket 和 java.net.serversocket api 使用的底层实现。
  • jep 354,switch expressions (preview):可在生产环境中使用的 switch 表达式,jdk 13 中将带来一个 beta 版本实现。switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的 “case l ->” 模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(jep 305)做好准备。
  • jep 355,text blocks (preview):将文本块添加到 java 语言。文本块是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

安装 jdk 13

jdk 13 下载地址为 。

以 windows 环境为例,可通过 jdk-13_windows-x64_bin.exe 或 jdk-13_windows-x64_bin.zip 来进行安装。 .exe 文件的安装方式较为简单,按照界面提示点击 “下一步” 即可。

下面演示. zip 安装方式。

1. 解压. zip 文件到指定位置

将 jdk-13_windows-x64_bin.zip 文件解压到指定的目录下即可。比如,本例子放置在了d:\program files\jdk-13位置。

2. 设置环境变量

创建系统变量 “java_home”,其值指向了 jdk 的安装目录。

Java13 闪亮来袭,你是否还停留在 Java8

在用户变量 “path” 中,增加“%java_home%\bin”。

Java13 闪亮来袭,你是否还停留在 Java8

注:jdk13 已经无需再安装 jre,设置环境变量时也不用设置 classpath 了。

3. 验证安装

执行 “java -version” 命令进行安装的验证:

$ java -version
java version "13" 2019-09-17
java(tm) se runtime environment (build 13+33)
java hotspot(tm) 64-bit server vm (build 13+33, mixed mode, sharing)

如果显示上述信息,则说明 jdk 已经安装完成。

如果显示的内容还是安装前的老 jdk 版本,则可按照如下步骤解决。

首先,卸载老版本的 jdk

Java13 闪亮来袭,你是否还停留在 Java8

其次,在命令行输入如下指令来设置 java_hom 和 path:

>set java_home=d:\program files\jdk-13

>set path=%java_home%\bin

eclipse ide 2019-09

在 java 13 发布两天后的 2019 年 9 月 19 日,eclipse ide 2019-09 发布。eclipse ide 2019-09 声称支持 java 13。接下里将演示如何使用 eclipse ide 2019-09 编写 java 13 的示例。

eclipse ide 2019-09 下载地址为 。本例使用的是 eclipse 4.14 版本。

编写 java 13 示例

实战 1:switch 表达式的例子

下面是原有的 switch 表达式的写法:

switch (day) {
    case monday:
    case friday:
    case sunday:
        system.out.println(6);
        break;
    case tuesday:
        system.out.println(7);
        break;
    case thursday:
    case saturday:
        system.out.println(8);
        break;
    case wednesday:
        system.out.println(9);
        break;
}

在 java 12 中,switch 表达式可以改为如下写法:

switch (day) {
    case monday, friday, sunday -> system.out.println(6);
    case tuesday                -> system.out.println(7);
    case thursday, saturday     -> system.out.println(8);
    case wednesday              -> system.out.println(9);
}

还能支持在表达式中返回值:

int numletters = switch (day) {
    case monday, friday, sunday -> 6;
    case tuesday                -> 7;
    case thursday, saturday     -> 8;
    case wednesday              -> 9;
};

在 java 13 中,switch 表达式可以改为如下写法:

int date = switch (day) {
    case monday, friday, sunday : yield 6;
    case tuesday                : yield 7;
    case thursday, saturday     : yield 8;
    case wednesday              : yield 9;
    default                     : yield 1; // default条件是必须的
};

system.out.println(date);

需要注意的是,在使用 yield 时,必须要有 default 条件。

实战 2:文本块

自 java 13 开始,支持文本块(text blocks)。

以下是 java 13 之前的文本块的处理方式的示例:

string html = "<html>\n" +
                  "    <body>\n" +
                  "        <p>hello, world</p>\n" +
                  "    </body>\n" +
                  "</html>\n";

system.out.println(html);

在上述示例中,由于文本块需要换行,所以产生了很多本文的拼接和转义。

以下是 java 13 中的文本块示例:

string html2 = """
                  <html>
                      <body>
                          <p>hello, world</p>
                      </body>
                  </html>
                  """;
        
system.out.println(html2);

在上述示例中,对于文本块的处理变得简洁、自然。

以上两个示例在控制台输出内容都是一样的,效果如下:

<html>
    <body>
        <p>hello, world</p>
    </body>
</html>

“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!

关注公众号:「java 知己」,每天更新java知识哦,期待你的到来!

  • 发送「group」,与 10 万程序员一起进步。
  • 发送「面试」,领取batj面试资料、面试视频攻略。
  • 发送「玩转算法」,领取《玩转算法》系列视频教程。
  • 千万不要发送「1024」...

Java13 闪亮来袭,你是否还停留在 Java8