Java 13 的官方开发目标包含改进垃圾收集、应用程序的类数据共享和文本块

Java 开发工具包(JDK)13,标准 Java 的下一个版本,现在可作为候选版本使用,所有新功能都已锁定。JDK 13提出了一种功能,但从未添加到官方列表中,即用于打包自包含 Java 应用程序的 jpackage 工具,已经无缘晋级。JDK 13 不再考虑它。

[新的 Java 已经来了!了解 Jakarta EE 企业 Java 路线图。|新 Java 版本在这里!你需要学习任何关于 Java JDK 11 的新功能和 Java EE 8 的新功能。|使用 InfoWorld 的 App Dev Report 简报了解编程中的热门话题。]

JDK 13 将于2019年9月17日到期。第二个候选版本将于8月22日到期。以下是 JDK 13 的官方特性:

  • 在预览阶段添加文本块。文本块是一个多行字符串文本,它避免了对大多数转义序列的需要。文本块以可预测的方式自动格式化字符串,并让开发人员控制格式。该项目引用了向 Java 添加文本块背后的一些目标。一个目标是简化 Java 程序的编写,方法是简化跨几行源代码的字符串的表达,同时在常见情况下避免转义序列。第二个目标是增强程序中字符串的可读性,这些字符串表示用非 Java 语言编写的代码。第三个目标是支持从字符串字面量迁移,规定任何新构造都可以将相同的字符串集表示为字符串字面量,解释相同的转义序列,并像字符串字面量一样进行操作。

    原始字符串

    是 JDK 13 的一个特性,但它放弃了文本块,采用了一种不同的方法来表示字符串而不转义换行和引号。原始字符串关注的是字符串的原始性,但是 Java 项目团队现在认为焦点是错误的,因为虽然原始字符串可以跨越多行源代码,但是它们涉及到支持非转义分隔符的昂贵需求。JDK 13 曾计划使用原始字符串,但从未正式将其添加到建议的特性列表中。

    • 重新实现遗留的套接字API,涉及使用更简单、更现代的实现替换现在的 net.Socketjava.net.ServerSocket API 底层实现。这个新实现的目的是为了更容易地适应用户模式线程(也称为 fibers),这些线程正在 Project Loom 中进行研究。前面提到的遗留 API 可以追溯到 JDK 1.0,由遗留 C 和 Java 代码组成,这些代码被描述为调试和维护起来很麻烦。遗留实现还存在其他问题:支持异步关闭的本机数据结构,导致可靠性和移植问题,以及需要彻底检查的并发性问题。
  • 第二个 switch 表达式预览已经被提议用于 JDK 13。JDK 12 中曾经有一个这样的语句,但是现在要做一个更改:要从一个 switch 表达式中产生一个值,将删除break 跳出当前值语句以支持yield语句。其目的是扩展 switch ,使其既可以用作语句,也可以用作表达式,因此这两种形式都可以使用传统的 case ... : 标签和新的 case … -> 标签,而不使用 fall through,使用一个新的语句从 switch 表达式生成一个值。这些更改将简化编码并为模式匹配做准备。

  • 增强 ZGC(Z 垃圾收集器),将未使用的内存返回到操作系统,这是一个集成到 JDK 13 中的建议。ZGC 被标榜为一个可伸缩、低延迟的收集器,它目前不会将未使用的内存返回给操作系统,即使内存已经很长时间没有使用了。对于某些应用程序和环境来说,这种行为不是最优的,特别是那些需要考虑内存占用的应用程序,例如容器或环境,其中应用程序可能长时间处于空闲状态,并且正在与其他应用程序共享或竞争资源。

  • 扩展应用程序类数据共享(AppCDS),以支持在应用程序执行结束时动态归档类。存档类将包括所有加载的应用程序和库类,这些类不存在于默认的底层 CD 存档中。该建议正处于目标阶段,其目的是提高 AppCDS 的可用性,并消除用户在为每个应用程序创建类列表时进行试运行的需要。

哪里可以下载 beta JDK 13 版本

你可以从 jdk.java.net 网站下载 JDK 13 构建。JDK 13 的第一个 beta 版本可用于 Linux、MacOS 和 Windows。

本文中的 ”JDK 13:Java 的新特性“ 最初由 InfoWorld 发布。

原文:https://www.javaworld.com/article/3341388/jdk-13-the-new-features-coming-to-java-13.html

作者:Paul Krill

译者:Queena

9月福利,关注公众号

后台回复:004,领取8月翻译集锦!

往期福利回复:001,002, 003即可领取!

Java13新特性的更多相关文章

  1. Java13新特性 -- 文本块

    在JDK 12中引入了Raw String Literals特性,但在发布之前就放弃了.这个JEP与引入多行字符串文字(text block) 在意义上是类似的. 这条新特性跟 Kotlin 里的文本 ...

  2. Java13新特性 -- 新增 移除 废弃 已知问题等

    新增 添加FileSystems.newFileSystem(Path, Map<String, ?>) Method 新的java.nio.ByteBuffer Bulk get/put ...

  3. Java13新特性 -- ZGC:取消使用未使用的内存

    在JDK 11中,Java引入了ZGC,这是一款可伸缩的低延迟垃圾收集器,但是当时只是实验性的.号称不管你开了多大的堆内存,它都能保证在 10 毫秒内释放 JVM ,不让它停顿在那.但是,当时的设计是 ...

  4. Java13新特性 -- 重新实现旧版套接字API

    全新实现的 NioSocketImpl 来替换JDK1.0的PlainSocketImpl. 它便于维护和调试,与 NewI/O (NIO) 使用相同的 JDK 内部结构,因此不需要使用系统本地代码. ...

  5. Java13新特性 -- switch表达式动态CDS档案(动态类数据共享归档)

    支持在Java application执行之后进行动态archive.存档类将包括默认的基础层CDS存档中不存在的所有已加载的应用程序和库类.也就是说,在Java 13中再使用AppCDS的时候,就不 ...

  6. Java13新特性 -- switch表达式

    引入了yield语句,用于返回值: 和return的区别在于:return会直接跳出当前循环或者方法,而yield只会跳出当前switch块. @Test public void testSwitch ...

  7. 一文带你看遍 JDK9~14 的重要新特性!

    Java9 发布于 2017 年 9 月 21 日 .作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如 ...

  8. java8新特性,你有用起来了吗?(精编)

      2019年9月19日java13已正式发布,感叹java社区强大,经久不衰.由于国内偏保守,新东西总要放一放,让其他人踩踩坑,等稳定了才会去用.并且企业目的还是赚钱,更不会因为一个新特性去重构代码 ...

  9. java都13了, 8的新特性你还没不会用吗

    前言 java13都已经来了,很多同学还停留在使用java5的东西.如果在日常开发中没有使用上java8的一些新特性或者不会用.这篇文章对你可能有帮助. lambda表达式 介绍 lambda表达式是 ...

随机推荐

  1. SSH开发模式——Struts2(第二小节)

    上一小节已经学会了如何去搭建Struts2的开发环境,该篇博客我们继续深入Struts2,了解Struts2框架的拦截器. 首先对我们在web.xml文件配置的过滤器进行一个源码的分析. 在Strut ...

  2. 初探Electron,从入门到实践

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.   在开始之前,我想您一定会有这样的困惑:标题里的Electron ...

  3. 关于ionic app $http.get()无法请求,导致页面没有数据的问题

    ionic app 打包后在真机上运行,无法用正常使用http.get(),这种情况被称为“白名单”,解决方法:切换到项目根目录,执行命令:cordova plugin add cordova-plu ...

  4. 理解Java反射机制

    理解Java反射机制 转载请注明出处,谢谢! 一.Java反射简介 什么是反射? Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在.灵活掌握Java反射机制,对学习框架技术有很大 ...

  5. Delphi - Indy TIdHTTP方式创建程序外壳 - 实现可执行程序的自动升级

    Delphi 实现可执行程序的自动升级 准备工作: 1:Delphi调用TIdHTTP方式开发程序,生成程序打包外壳 说明:程序工程命名为ERP_Update 界面布局如下: 代码实现如下: unit ...

  6. 自制轮子 canvas tree

    这是树的效果 这个树拥有的功能有 1.小地图显示 2.小地图点击快速定位 3.点击加减显示根节点 4.基本的数显示 5.节点拖拽 6.点击头像跳转到相关页面 7.使用直角线和直线选择 8.画布自适应 ...

  7. java设计模式5.组合模式、门面模式、享元模式、桥接模式

    组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...

  8. ObjectMapper2

    ObjectMapper mapper = new ObjectMapper();                try {                    user = mapper.read ...

  9. 2019 ICPC南京网络预选赛 I Washing clothes 李超线段树

    题意:有n个人,每个人有一件衣服需要洗,可以自己手洗花费t时间,也可以用洗衣机洗,但是洗衣机只有一台,即每个时刻最多只能有·一个人用洗衣机洗衣服.现在给你每个人最早可以开始洗衣服的时间,问当洗衣机的洗 ...

  10. codeforce303C-Minimum Modular-剪枝,暴力

    Minimum Modular 题意:就是在一堆数字中,每一个数字对m取模不能等于这堆数字中的其他数字,同时给了K个机会可以删除一些数字.求最小的m: 思路:我一开始完全没思路,队长说的并查集什么的不 ...