Java 15正式发布,腾讯做出了突出贡献
25 岁的 Java
2020 年是 Java 诞生的第 25 个年头。在过去的这些年中,Java 在过去增强功能的推动下为用户提供了超过二十年的创新,例如 Java 5 中的泛型,Java 8 中的 Lambda 和 Java 9 中的模块,这些迭代提高了 Java 平台的性能,稳定性和安全性。
Java 虽然 25 岁了,但是依然持续着创新之道。九月 15 日 Oracle 宣布 JDK15 正式发布。这是 Java 迭代周期缩短为六个月以后的第六个版本。随着迭代速度的加快,让 Java 的设计开发测试人员能够更加轻松的面对迭代中的变化。
在六个月的节奏下,交付可用于生产的 JDK 新版本的速度已大大提高。而不是每隔几年在大型主要版本中发布成千上万的修复程序和大约一百个 JDK 增强建议(JEP)。
Java JEP数量随着迭代的加速更加容易应对
JDK Enhancement Proposals : 简称 JEP,JDK 增强建议,就是 JDK 的特性新增和改进提案。
中国企业做出杰出贡献
另外 OpenJDK 社区也对 JDK15 的诞生做出了重要贡献,里面除了我们耳熟能详的科技巨头还有一些小组织机构和独立开发者。
参与JDK15 ISSUES修复的组织
Oracle 依旧是 JDK 开发的主力军,完成了 79.68%的工作量,其次是开源巨头红帽。国内企业贡献最多的居然是腾讯公司,被 Oracle 点名感谢。阿里巴巴和华为也做出了不可磨灭的贡献。Java 有中国科技力量的贡献能大大提升中国 IT 的硬实力。
Java 15
Java 15 为用户提供了十四项主要的增强/更改,包括一个孵化器模块,三个预览功能,两个不推荐使用的功能以及两个删除功能。
EdDSA 数字签名算法
新加入 Edwards-Curve 数字签名算法(EdDSA)实现加密签名。在许多其它加密库(如 OpenSSL 和 BoringSSL)中得到支持。与 JDK 中的现有签名方案相比,EdDSA 具有更高的安全性和性能。这是一个新的功能。
隐藏类
此功能可帮助需要在运行时生成类的框架。框架生成类需要动态扩展其行为,但是又希望限制对这些类的访问。隐藏类很有用,因为它们只能通过反射访问,而不能从普通字节码访问。此外,隐藏类可以独立于其他类加载,这可以减少框架的内存占用。这是一个新的功能。
重新实现 DatagramSocket API
重新实现旧版 DatagramSocket API,更简单、更现代的实现来代替java.net.DatagramSocket
和java.net.MulticastSocket
API 的基础实现,提高了 JDK 的可维护性和稳定性。
ZGC 功能转正
ZGC 已由JEP 333集成到JDK 11 中,其目标是通过减少 GC 停顿时间来提高性能。借助 JEP 377,ZGC 从预览功能转变为生产功能。
文本块功能转正
文本块由JEP 355在 2019 年提出。文本块是一种多行字符串文字,它避免了大多数转义序列的需要,以一种可预测的方式自动设置字符串的格式,并在需要时使开发人员可以控制格式。借助 JEP 378,文本块已成为 Java 语言的永久功能。
Shenandoah 垃圾回收算法转正
Shenandoah 垃圾回收从实验特性变为产品特性。这是一个从 JDK 12 引入的回收算法,该算法通过与正在运行的 Java 线程同时进行疏散工作来减少 GC 暂停时间。Shenandoah 的暂停时间与堆大小无关,无论堆栈是 200 MB 还是 200 GB,都具有相同的一致暂停时间。
密封类(预览)
用于限制超类的使用,密封的类和接口限制其它可能继承或实现它们的其它类或接口。这是新的预览特性。
instanceof 自动匹配模式(预览)
在此之前 Java 中:
// 先判断类型
if (obj instanceof String) {
// 然后转换
String s = (String) obj;
// 然后才能使用
}
自动匹配模式中:
if (obj instanceof String s) {
// 如果类型匹配 直接使用
} else {
// 如果类型不匹配则不能直接使用
}
这是第二次预览该功能,我们已经在 Java 14 中首次预览过该特性。
Records Class(预览)
这个也是第二次预览,我对这个功能做过详细的介绍,你可以在 Java 14 新特性之 JEP 359 Records 一文中详细了解它。
外部存储器访问 API(预览)
目的是引入一个 API,以允许 Java 程序安全有效地访问 Java 堆之外的外部内存。这同样是 Java 14 的一个预览特性。
其它
其它还有一些弃用和不建议使用的功能,比如移除了 Nashorn JavaScript 引擎,同时也移除了删除 Solaris 和 SPARC 端口。并标记了一些弃用功能。
- 这或许是对小白最友好的python入门了吧——18,定义函数
- 【深度学习】图片风格转换应用程序:使用CoreML创建Prisma
- 压力测试中存在的问题
- 这或许是对小白最友好的python入门了吧——18,用while循环处理列表
- 如何在js中将统计代码图标隐藏
- 警惕IT黑洞
- 这或许是对小白最友好的python入门了吧——17,while循环
- 泛型介绍(接上一篇,具体的事例随后呈上)
- PHP高级编程之守护进程
- 看到他我一下子就悟了-- 泛型(2)
- ExtJS4中设置tabpanel的tab高度问题
- Oracle写错误与文件离线
- 看到他我一下子就悟了-- 泛型(1)
- EXTJS4 Grid Filter 插件的使用 与后台数据解析------Extjs 查询筛选功能的实现
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 多张热图的排版技巧
- 【Java】02 数据类型与运算符
- StringBuilder/StringBuffer源码阅读笔记
- PAT (Advanced Level) Practice 1027 Colors in Mars (20 分)
- 【Java】21 基于 UDP 的网络编程
- PowerBI DAX 在矩阵分组区域内通用积累求和
- 【Java】22 网络连接
- 2015年ccf计算机职业认证资格考试第一题数列分段
- 数据结构题集(严书)查找 常见习题代码
- 翻车!居然在这里翻车了!!!
- PAT (Advanced Level) Practice 1029 Median (25分)
- ServiceMesh的关键:边车模式(sidecar);又要开车了
- Codeforces Round #615 (Div. 3)A. Collecting Coins
- PAT (Advanced Level) Practice 1040 Longest Symmetric String (25分)
- 【Java】23 函数式编程