共计 5730 个字符,预计需要花费 15 分钟才能阅读完成。
上一版:JDK 16 正式公布,一次性公布 17 个新个性…不服不行!
JDK 17 正式公布+收费
牛逼啊,JDK 16 刚公布半年(2021/03/16),JDK 17 又如期而至(2021/09/14),这个工夫点牛逼啊,蹭苹果发布会的热度?记得当年 JDK 15 的公布也是同天,巧了。。
尽管 iPhone 13 公布了,但真的不是 13 香,真没什么翻新和亮点,一如继往苹果式挤牙膏,在 13 上真的挤到精华了,这次我想说,JDK 17 更香!!
iPhone 13 提价算啥??JDK 17 间接干到收费!!!
Oracle 发表,从 JDK 17 开始,前面的 JDK 都全副收费提供!!!
是的,你没有看错,Oracle 这次良心了,发大招了,Java 17+ 能够收费应用了,包含商用,更具体的条款能够浏览:
https://www.oracle.com/downlo…
来看下最新 Oracle Java 反对路线图:
能够看到,JDK 17 是自 2018 年 JDK 11 后的第二个长期反对版本,反对到 2029 年 9 月,好家伙,反对工夫长达 8 年,这下能够不必死守 JDK 8 了,JDK 17+ 也能够是一种新的抉择了。。
下一个第三个长期反对版本是 JDK 21,工夫为 2023 年 9 月,这次长期反对版本公布打算改了,不再是原来的 3 年一次,而是改成了 2 年一次!
另外,非长期反对版本还是半年发一次不变,下一个非长期反对版本打算在 2022/03 公布,但留神不要用在生产。
JDK 17 新个性一览
ID | 个性 | 阐明 |
---|---|---|
1 | 306:Restore Always-Strict Floating-Point Semantics | 复原始终执行严格模式的浮点定义 |
2 | 356:Enhanced Pseudo-Random Number Generators | 增强型伪随机数生成器 |
3 | 382:New macOS Rendering Pipeline | 新的 macOS 渲染管道 |
4 | 391:macOS/AArch64 Port | macOS AArch64 端口 |
5 | 398:Deprecate the Applet API for Removal | 弃用 Applet API |
6 | 403:Strongly Encapsulate JDK Internals | JDK 外部强封装 |
7 | 406:Pattern Matching for switch (Preview) | 为 switch 反对模式匹配 |
8 | 407:Remove RMI Activation | 移除 RMI 激活 |
9 | 409:Sealed Classes | 密封类 |
10 | 410:Remove the Experimental AOT and JIT Compiler | 移除实验性的 AOT 和 JIT 编译器 |
11 | 411:Deprecate the Security Manager for Removal | 弃用平安管理器 |
12 | 412:Foreign Function & Memory API (Incubator) | 内部函数和内存 API(孵化中) |
13 | 414:Vector API (Second Incubator) | 矢量 API(二次孵化中) |
14 | 415:Context-Specific Deserialization Filters | 上下文特定反序列化过滤器 |
JDK 17 这个版本提供了 14 个加强性能,另外在性能、稳定性和安全性下面也失去了大量的晋升,以及还有一些孵化和预览个性,有了这些新变动,Java 会进一步提高开发人员的生产力。
JDK 17 新个性具体介绍
上面是 JDK 17 中的 14 个新个性具体介绍,分为 5 大类进行介绍!
1. 语言加强
409:Sealed Classes
密封类,这个个性在 JDK 15 中首次成为预览个性,在 JDK 16 中进行二次预览,在 JDK 17 这个版本中终于正式转正了。
密封类能够用来加强 Java 编程语言,避免其余类或接口扩大或实现它们。
来看上面这个示例:
public abstract sealed class Student
permits ZhangSan, LiSi, ZhaoLiu {...}
类 Student 被 sealed
润饰,阐明它是一个密封类,并且只容许指定的 3 个子类继承。
这个牛逼啊,有了这个个性,意味着当前不是你想继承就继承,想实现就实现了,你得通过容许才行。转正了,栈长会再具体写一篇,关注公众号:Java 技术栈,公众号第一工夫推送哦。
2. 预览和孵化个性
406:Pattern Matching for switch (Preview)
为 switch 反对模式匹配(预览中)
instanceof 模式匹配的概念大家都分明吧?不分明的能够看下这篇文章:Java 14 之模式匹配,十分赞的一个新个性!
这次在 JDK 17 中为 switch 语句反对模式匹配,是个什么鬼?来看上面的示例!
老代码写法:
static String formatter(Object o) {
String formatted = "unknown";
if (o instanceof Integer i) {formatted = String.format("int %d", i);
} else if (o instanceof Long l) {formatted = String.format("long %d", l);
} else if (o instanceof Double d) {formatted = String.format("double %f", d);
} else if (o instanceof String s) {formatted = String.format("String %s", s);
}
return formatted;
}
模式匹配新写法:
static String formatterPatternSwitch(Object o) {return switch (o) {case Integer i -> String.format("int %d", i);
case Long l -> String.format("long %d", l);
case Double d -> String.format("double %f", d);
case String s -> String.format("String %s", s);
default -> o.toString();};
}
牛逼,间接在 switch 上反对 Object 类型,这就等于同时反对多种类型,应用模式匹配失去具体类型,大大简化了语法量,这个性能还是挺实用的,期待转正,栈长会再具体写一篇,关注公众号:Java 技术栈,公众号第一工夫推送哦。
412:Foreign Function & Memory API (Incubator)
内部函数和内存 API(孵化中)
改良了 JDK 14 和 JDK 15 引入的 API,通过无效调用内部函数(即 JVM 之外的代码),以及平安地拜访内部内存(JVM 之外的内存),这些 API 能够调用本地库和解决本地数据,与 Java 运行环境之外的代码和数据进行交互。
414: Vector API (Second Incubator)
矢量 API(二次孵化中)
Vector API 这是一个新的初始迭代孵化器模块,模块包:jdk.incubator.vector,用于示意在运行时牢靠地编译到反对的 CPU 架构上的最佳矢量硬件指令的矢量计算,矢量运算能够提供优于等效标量计算的性能,并且在机器学习、人工智能和密码学等畛域十分广泛。
本次加强的 API 容许以一种在运行时,牢靠地编译为反对的 CPU 架构上的最佳向量指令的形式表白向量计算。
3. 外围加强
306:Restore Always-Strict Floating-Point Semantics
复原始终执行严格模式的浮点定义。
Java 最后只有严格的浮点语义,但从 JDK 1.2 开始,为了适应过后硬件架构的限度,默认状况下容许这些严格语义中的轻微变动,而当初这些都没有必要了,已被 JEP 306 删除。
356:Enhanced Pseudo-Random Number Generators
增强型伪随机数生成器,java.util.random 包更新了,进步了不同 PRNGs(伪随机数生成器)的互操作性,并使基于需要而不是硬编码特定实现的算法变得容易。
这次更改包含伪随机数生成器(PRNG)的新的接口类型和实现,包含可跳 PRNGs 和一个可拆分的 PRNG 算法(LXM),以及全新的 RandomGeneratorFactory 类。
382:New macOS Rendering Pipeline
新的 macOS 渲染管道。
这个新管道通过应用新的 Apple Metal API 为 macOS 实现 Java 2D 渲染管道,缩小了 JDK 对已弃用的 Apple OpenGL API 的依赖。
415: Context-Specific Deserialization Filters
上下文特定反序列化过滤器。
容许利用配置 context-specific 和 dynamically-selected 过滤器,通过一个 JVM 范畴的过滤器工厂,用来为每个独自的反序列化操作抉择一个过滤器。
403:Strongly Encapsulate JDK Internals
JDK 外部强封装,它是 JDK 16 中 JEP 396 的连续,JDK 16 开始对 JDK 外部大部分元素默认进行强封装,sun.misc.Unsafe 之类的要害外部 API 除外,从而限度对它们的拜访。
此外,用户依然能够抉择自 JDK 9 以来的默认的宽松的强封装,这样能够帮忙用户毫不费力地降级到将来的 Java 版本。
4. 新平台反对
391:macOS/AArch64 Port
macOS AArch64 端口,即提供可实用于 macOS 的 JDK 版本,该版本可在基于 Arm 64 的较新的 macOS 零碎上本地化运行。
5. 弃用和移除项
411:Deprecate the Security Manager for Removal
弃用平安管理器。
平安管理器从 Java 1.0 开始,这些年来它始终都不是爱护 Java 利用程序代码的次要伎俩,也很少用于爱护 Java 服务器端代码,所以这个版本标识为弃用状态了,将来的版本会进行移除。
398:Deprecate the Applet API for Removal
弃用 Applet API。
Applet 是一种运行在 Web 浏览器内的 Java 程序,但 Applet 早就没什么鸟用了,当初还有哪款浏览器反对 Java Applet 的吗?在坐的各位预计都没听过吧?
407:Remove RMI Activation
移除 RMI 激活。
RMI 激活机制已于 2020 年 9 月在 JDK 15 中移除了,近程办法调用 (RMI) 激活机制现也已被移除,须要阐明的是,RMI 激活是 RMI 中一个过期的组件,自 Java 8 以来始终是可选的。
410:Remove the Experimental AOT and JIT Compiler
移除实验性的 AOT 和 JIT 编译器。
AOT 和 JIT 这两个实验性的编译器,自从在 JDK 9 中引入以来简直没有怎么应用,市面上也呈现了更为宽泛应用的代替计划,并且保护它们所需的工作量很大,所以在 JDK 16 中就曾经删除了,本次从 OpenJDK 我的项目中删除了源代码。
JDK 17 都收费了,和 OpenJDK 还有区别?
有的,尽管两者很靠近,但也还是有一点区别!
1、Oracle JDK 提供了各种安装程序,还蕴含更新规定,而 OpenJDK 只提供了一个纯压缩包;
2、Usage Logging 仅在 Oracle JDK 中可用;
3、Oracle JDK 要求第三方加密提供程序应用 Java 加密扩大(JCE)进行签名,而 OpenJDK 持续容许应用未签名的第三方加密提供程序;
4、java -version 的输入也是不同的,Oracle JDK 返回 java 并蕴含 Oracle 特定的标识符,OpenJDK 返回 OpenJDK 并且不蕴含特定于 Oracle 的标识符;
5、许可证不同,Oracle JDK 17+ 是依据 Oracle 收费条款和条件许可公布的,而 OpenJDK 在 GPLv2wCP 下公布的;
6、Oracle JDK 源代码含有 “ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.”,其应用受许可条款束缚的,而 OpenJDK 源代码可参考 GPL 许可条款;
以上是两者最次要的 6 点区别。
总结
最初,本文次要介绍了 JDK/Java 17 的 14 个新个性基本面,前面栈长有工夫也会持续更新一些 JDK 新个性具体教程,关注公众号 Java 技术栈第一工夫推送哦。如果你想看历史 Java 8+ 系列新个性教程,也能够在公众号菜单中进行浏览。
Java 17 公布了,Oracle 发表 JDK 17 及之后的版本都收费应用,包含商用,爽!!!Oracle 这次真的良心了,或者是趋于某种压力进行收费?
Java 的确是在走下坡路,即使如此,也是老当益壮,是当初各大企业必用的语言之一。
尽管大部分人当初还在用着 JDK 7/8,甚至 6,还在写着 JDK 5 的语法,当初随着 JDK 17+ 的收费,或者在将来的不久,JDK 8 会逐步被代替,JDK 17+ 缓缓走上舞台。
往期 Java 教程及示例源码:
https://github.com/javastacks…
OracleJDK 17 公布地址:
https://www.oracle.com/java/t…
OpenJDK 17 公布地址:
http://openjdk.java.net/proje…
Oracle JDK 17 下载地址:
https://www.oracle.com/java/t…
OpenJDK 17 下载地址:
https://jdk.java.net/17/
有趣味的能够下载尝鲜了!!
最初,JDK 17+ 开始收费了,你们会思考用吗?来投票看看!
老铁们,点个在看、转发反对下哦,也欢送分享给你的更多敌人们~
关注 Java 技术栈,继续分享最新、最支流的 Java 技术~
版权申明:本文系公众号 “Java 技术栈 ” 原创,原创实属不易,转载、援用本文内容请注明出处,禁止剽窃、洗稿,请自重,尊重别人劳动成果和知识产权。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿 (2021 最新版)
2. 别在再满屏的 if/ else 了,试试策略模式,真香!!
3. 卧槽!Java 中的 xx ≠ null 是什么新语法?
4.Spring Boot 2.5 重磅公布,光明模式太炸了!
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!