就在昨天(2019年09月17日),JDK 13 已经处于 General Availability 状态,已经正式可用了。General Availability(简称 GA)是一种正式版本的命名,也就是官方开始推荐广泛使用了,我们熟悉的 MySQL 就用 GA 来命令其正式版本。

从上图我们可以看到 JDK 13 带来了五个大的 Features:

  • 350: Dynamic CDS Archives
  • 351: ZGC: Uncommit Unused Memory
  • 353: Reimplement the Legacy Socket API
  • 354: Switch Expressions (Preview)
  • 355: Text Blocks (Preview)

本文将带领大家来看看这五大特性。350: Dynamic CDS Archives

这个特性是扩展 JEP310:Application Class-Data Sharing(简称AppCDS,参见 http://openjdk.java.net/jeps/310)的,以允许在 Java 应用程序执行结束时动态归档类,归档类扩展了默认的基础层 CDS (Class-Data Sharing)存档,此特性允许应用的类也可以被放置在共享的归档类(archived classes)文件中。

JEP 350 的主要目标有两个:

  • 提高 AppCDS 的可用性,不需要用户进行试运行来为每个应用程序创建类列表。
  • 由 -Xshare:dump 选项启用的静态归档(Static archiving)应该继续工作,这包括用于内置类加载器和用户定义类加载器的类。

用户可以指定动态存档名称的文件名作为 -XX:ArchiveClassesAtExit 选项的参数。例如,下面的命令创建hello.jsa:% bin/java -XX:ArchiveClassesAtExit=hello.jsa -cp hello.jar Hello要使用此动态存档运行相同的应用程序:% bin/java -XX:SharedArchiveFile=hello.jsa -cp hello.jar Hello351: ZGC: Uncommit Unused MemoryZGC是在 JDK 11 中引入的一个全新的垃圾收集器,它由 Oracle 开发,承诺在数 TB 的堆上具有非常低的暂停时间。但到目前为止,它还没有像 G1 垃圾收集器那样将未使用的堆内存返回到操作系统。这个JEP解决了这个问题,默认情况下启用了这个功能。由于网上有一大堆 ZGC 的文章,所以本文不准备详细介绍 ZGC了。

353: Reimplement the Legacy Socket API

目前 JDK 的 java.net.Socket 和 java.net.ServerSocket 的实现非常古老,这个 JEP为它们引入了一个全新的实现。Java 13 中的默认使用这个实现,但是旧的实现还没有删除,如果还需要,可以通过设置系统属性 jdk.net.usePlainSocketImpl 来使用它们。需要注意的是,并没有为 java.net.DatagramSocket 引入新的实现。如果使用了新的 java.net.Socket 和 java.net.ServerSocket,在类中初始化 Socket 和 ServerSocket 将会显示出下面的调试信息:

上面调试信息输出的 sun.nio.ch.NioSocketImpl 就是新的实现。如果我们需要使用旧的 Socket 实现,可以使用 jdk.net.usePlainSocketImpl系统属性,这时候调试信息将输出如下信息:

从上面信息可以看出,已经是用了旧的 java.net.PlainSocketImpl 实现。

354: Switch Expressions (Preview)

JDK 12 中引入了 Switch 表达式,此时还属于预览特性。JEP 354 修改了这个特性,它引入了 yield 语句,用于从块返回值,而不是使用 break。这意味着,switch表达式需要返回值的时候应该使用 yield, 而需要不返回值应该使用break。

注意,这个特性在早期版本是不能使用的。

355: Text Blocks (Preview)

JDK 12 中引入了原始字符串文字特性(http://openjdk.java.net/jeps/326),但在发布之前却被放弃了。JEP 355 在引入多行字符串文字(一个文本块)的意义上是类似的。

与 Python 类似,可以定义多行文本块(而不是使用单行连接),如下所示:

上面例子的 lines 变量里面内容第一个字符是 h,最后一个是字符 d,但是字符 d 后面还跟着一个换行符,所以上面 lines 的定义就相当于 String lines="hello iteblognhello wordn",如果 lines 字符串最后你不想要 n,那么你需要这么写:

这时候上面的定义就相当于 String lines="hello iteblognhello word",大家也可以看出,hello iteblog 和 hello word 字符串前后的空格全部被删除了。

最后,附上 Oracle Java SE Support Roadmap(https://www.oracle.com/technetwork/java/java-se-support-roadmap.html)可以看出 JDK 13 已经从 2019年09月开始可用了。

另外,是不是还有很多小伙伴和我一样还在使用 JDK 1.71.8 啊?真是坐飞机都赶不上这个社区的节奏。评论区谈谈你在使用的 JDK 版本。

本文主要参考 https://metebalci.com/blog/what-is-new-in-java-13/。

jdk13不能显示中文_JDK 13都发布了!你还在用JDK7吗?相关推荐

  1. latex中文模板_都8012年了还不用LaTex编辑论文就out了!!

    今天身体正值难受期,幸好我机智的提前喝了止疼药,才能幸免于痛.在家半死不活的躺着,想想改写开题报告了,但是文献都在实验室电脑上,远程速度太慢,所以还是装个laTex编辑起来比较方便,下面说说安装和简单 ...

  2. wintail 中文显示乱码_win7系统出现乱码无法显示中文如何解决【详细步骤】

    win7系统时当前主流的电脑操作系统,在前段时间微软宣布停止对xp系统技术支持后,使用win7系统的用户也随之增加,使用win7系统的用户是否有出现过 无法显示中文 ,并且都是由乱码组成,导致 win ...

  3. echo字符集 shell_Xshell 能显示中文 但输入的中文都变成了问号

    我的Xshell 本来可以输入中文,但是不知道怎么的输入中文却变成问号了 解决方法: 点击控制面板,然后将除自己使用的中文输入之外的其他语言.输入法等先全部删除,然后再试一下,如果可以输入中文了,可适 ...

  4. QT 显示中文、解决发布乱码、获得系统特定目录、获取文件属性、列表控件、屏幕截图显示保存(定时器)、视频直播、右键菜单

    显示中文 #include <QTextCodec>int main() {QApplication a(argc, argv);QTextCodec::setCodecForLocade ...

  5. pandas 做柱状图 显示中文_官方调研重磅发布,Pandas或将重构?

    为指引 Pandas 未来开发方向,Pandas 官方团队于 2019 年夏搞了一次调研,这次调研历时 15 天,共有 1250 条反馈数据.问卷数据保存在 data 文件夹的 2019.csv.zi ...

  6. 9、10、11、12、13_添加标注 (Annotations)、添加网格线(Grid Lines)、显示中文字体、保存图形(saving Figures)、高质量矢量图输出

    9.添加标注 (Annotations) 10.添加网格线(Grid Lines) 11.显示中文字体 12.保存图形(saving Figures) 13.高质量矢量图输出 9.添加标注 (Anno ...

  7. ajax后台返回数据中文乱码_解决Jmeter返回值显示中文乱码 的三种方法及设置随机动态参数(非原创侵删)...

    一.Jmeter返回值显示中文乱码解决方法 第一种解决方法: 1. 点击线程组--添加--后置处理器--BeanShell后置处理程序 2.点击BeanShell后置处理程序,编写:prev.setD ...

  8. msp430单片机oled汉字字模_OLED液晶屏如何显示中文呢?

    序言 之前我们分享了,如何使用STM32驱动OLED液晶屏,讲了SSD1306控制芯片的驱动,对其驱动时序和常用命令做了介绍,详细请参考下面链接: STM32驱动0.96寸OLED液晶屏 上篇中我们已 ...

  9. ​BAT 等 34 家企业签署合规经营承诺书;美团被判赔偿饿了么 35.2 万元;FreeBSD 13.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. ajax传递对象数据集,用jquery和json从后台获得数据集的代码
  2. Oracle 字符集的查看和修改
  3. 动词ing形式的5种用法_课后文档:英语语法思维第7课动词的5个形式的用法
  4. 新入职一家公司如何梳理业务?
  5. 微信视频号推荐算法上分技巧
  6. Mac OS X 10.10.3对SSD开启Trim功能
  7. spring aop实现原理_Spring 异步实现原理与实战分享
  8. 第3章   IP寻址
  9. 哨兵1号(Sentinel-1)与陆地探测1号(L-SAR)对比
  10. Android 学习之路
  11. 关于数字化营销,这些知识点你一定要知道
  12. 关于微信开发者工具终端窗口不能输入字符问题
  13. VMware虚拟机安装使用及系统安装教程
  14. Windows下Netron安装
  15. xinxin - 初步学习tkinter
  16. 金仓数据库KingbaseES使用ksql连接认证失败
  17. 一文搞懂 Cocos Creator 3.x 坐标转换!建议收藏
  18. google::protobuf::Closure::Run
  19. Android权限申请之动态申请权限
  20. 中职教资证计算机应用,中职计算机教师资格证只能教中职学校的吗

热门文章

  1. C#中对XML文件的一些基本操作[转载]
  2. TF-IDF及相似度计算
  3. pytorch实现attention_Self-Attention手动推导及实现
  4. python代码文件方式_关于.py文件的详细介绍
  5. python读取大文件太慢_强悍的Python读取大文件的解决方案
  6. freebsd 安装mysql_Freebsd中mysql安装及使用笔记
  7. T^T找数字(搜索+二进制枚举)
  8. win10创建mysql数据库吗_win10 sqlite3创建的数据库文件在哪
  9. apiclod 上传图片_apiCloud图片选择、处理、上传模块
  10. 大学c语言第三章作业,c语言程序设计一章部分和第三章习题答案.doc