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 端口。并标记了一些弃用功能。
- ruby学习笔记(11)--symbol与hash参数
- zabbix监控-基本原理介绍
- OpenStack构架知识梳理
- mysql操作命令梳理(4)-grant授权和revoke回收权限
- 问未来
- ruby on rails + mysql 开发环境搭建
- CentOS 7.2下安装Mono 5.0
- ROR学习笔记(1):Rails 2快速创建GRUD应用
- API网关Ocelot 使用Polly 处理部分失败问题
- 使用GoogleAPI加载各种js框架
- Docker容器学习梳理--日常操作总结
- 马化腾:通向互联网未来的七个路标
- jQuery扩展以及gzip压缩测试
- python2.6升级到3.3.0 的操作记录
- 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代理IP池 ( Proxy Pool ) - 改进版
- Lvs+Keepalived 保障HA高可用
- 基于前端JS导出Excel文件(减轻服务端压力)
- 本机IDEA远程调试远端服务器代码
- 开源 - Java接口API授权认证与规范
- 亿及流量多级缓存 - 客户端缓存
- 亿及流量多级缓存 - 一致性哈希负载均衡与模板渲染
- 关于友情链接或者其他外部链接的建议
- 总结Js方法工具类库,总有你需要的方法
- [docker]安装Mysql
- [Centos7]linux运行django项目报错no module named _ssl
- [Centos7]在非标准端口上运行SSH
- [Centos7]安装及配置bind(DNS服务)
- [Centos7.2]关于crontab报错
- [Centos7.2]关于升级python后防火墙无法启动