介绍
今天,9月17日,Java JDK 13正式发布。现在Java的更新速度非常快,每6个月发布一个新的Java版本。当然现在统计数据来看,绝大部分企业还是Java 8,不会冒险升级,作为企业应用开发,Java8也足够了。
另外企业不用担心Oracle 版本的JDK收费问题。之前的文章也做过介绍。只要我们使用Open JDK代替Oracle JDK就可以
Java 13 新特性
JDK 13 此版本将是Java SE平台版本13的参考实现,由Java Community Process中的JSR 388指定。
(1)350:Dynamic CDS Archives 动态CDS存档。扩展应用程序类 - 数据共享( application class-data sharing),以允许在Java应用程序执行结束时动态归档类。 归档类将包括默认的基础层CDS存档中不存在的所有已加载的应用程序类和库类。
(2)351:ZGC: 增强ZGC以将未使用的堆内存返回给操作系统。
(3)353:重新实现旧版套接字API:维护和调试的更简单,新代码替换java.net.Socket和java.net.ServerSocket API的底层实现。 新的实现很容易适应用户模式线程threads。
(4)354:Switch 表达式(预览):JDK12继续迭代。
(5)355:Text Blocks文本块 (预览):将文本块添加到Java语言。 文本块是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。
新特性代码
Switch Expressions
在JDK 12中引入了Switch表达式作为预览特性。JEP 354修改了这个特性,它引入了yield语句,用于返回值。这意味着,switch表达式(返回值)应该使用yield, switch语句(不返回值)应该使用break。
在以前,我们想要在switch中返回内容,还是比较麻烦的,一般语法如下:
在JDK13中使用以下语法:
或者
在这之后,switch中就多了一个关键字用于跳出switch块了,那就是yield,他用于返回一个值。和return的区别在于:return会直接跳出当前循环或者方法,而yield只会跳出当前switch块。
Text Blocks
这个是JDK 13中新增的功能。随着文本块Text Block的引入,即多行字符串文字,字符串可以跨越几行代码,同时避免常见情况下的转义序列。 它还增强了Java程序中的字符串可读性。这个还是比较方便的,语法很简单。
// 文本块Text Block
String textBlock = """
这是Java13新特性 文本块测试;
这是Java13新特性 文本块测试;
这是Java13新特性 文本块测试;
这是Java13新特性 文本块测试;
这是Java13新特性 文本块测试;
""";
Dynamic CDS(Class-Data Sharing) Archiving
CDS的功能在进化一步,就是动态CDS功能。说白了,可以在运行期间动态保存类数据,也就是所谓的归档。
应用程序class-data Sharing(AppCDS)再JDK13新版本里已经简化。 在应用程序退出时,可以动态存档类数据。 动态生成的归档文件将在与正在运行的JDK映像一起打包的默认系统归档文件上创建生成,并保存数据。
我们可以使用选项参数-XX:ArchiveClassesAtExit = 控制程序再退出时生成存档。 也可以:SharedArchiveFile = ,来使用动态存档功能。
# 创建存档文件
% bin/java -XX:ArchiveClassesAtExit=helloworld.jsa -cp helloworld.jar Hello
# 使用存档文件
% bin/java -XX:SharedArchiveFile=hello.jsa -cp helloworld.jar Hello
# 使用动态存档,在老文档基础上
% bin/java -XX:SharedArchiveFile=:helloworld.jsa -cp helloworld.jar Hello
原文:https://yq.aliyun.com/articles/718128
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/113078.html