jdk15,JDK 15是Java Development Kit(Java开发工具包)的一个版本,由Oracle公司发布。JDK 15包括Java编译器、Java虚拟机、Java API类库和其他开发工具,用于开发、测试和部署Java应用程序。
JDK官网链接:点击直达
一、下载安装JDK15
1. 下载JDK15:首先,我们需要从官网上下载JDK15的安装包,可以访问官网,然后点击“JDK 15.0.2”,进入下载页面,根据自己的操作系统下载对应的安装包。
2. 安装JDK15:接下来,我们就可以进行JDK15的安装了,双击下载的安装包,然后按照提示一步步安装,安装过程中需要指定安装路径,一般情况下,默认路径是可以的。
二、配置环境变量
1. 配置环境变量:安装完成后,我们需要配置环境变量,点击“开始”,在搜索框里输入“系统变量”,然后点击“系统属性”,在弹出的窗口中点击“环境变量”,在“系统变量”中点击“新建”,输入“JAVA_HOME”,然后将值设置为JDK15的安装路径,如:D:\Program Files\Java\jdk15。
2. 配置PATH变量:接下来,我们需要配置PATH变量,在“系统变量”中找到“PATH”,点击“编辑”,在“变量值”中添加JDK15的bin路径,如:%JAVA_HOME%\bin;,然后点击“确定”,完成环境变量的配置。
三、使用JDK15
1. 验证安装:我们可以使用cmd命令来验证安装,在cmd窗口中输入java -version,如果显示出JDK15的版本号,则说明安装成功。
2. 使用JDK15:安装完成后,我们就可以开始使用JDK15了,可以使用JDK15编写Java程序,也可以使用JDK15的其他功能,比如编译、调试、打包等等。
EdDSA数字签名算法
这是一个新功能,新加入了Edwards-Curve Digital Signature Algorithm(爱德华兹曲线数字签名算法)算法,该算法是一种现代的椭圆曲线方案,在许多其他加密库(如OpenSSL和BoringSSL)和区块链领域中得到了支持。
与JDK里现有的签名方案相比,EdDSA算法具有更高的安全性和性能,也具有JDK中现有签名方案的优点,但只在SunEC提供商中实现。
重新实现DatagramSocket API
该提案(JEP 373)是JEP 353的后续,重新实现了遗留的套接字API。java.net.datagram.Socket和java.net.MulticastSocket的当前实现可以追溯到JDK1.0,那时IPv6还在开发中,因此当前的多播套接字实现尝试对IPv4和IPv6的调和。
具体修改如下:
1、通过java.net.datagram的基础实现,重新实现旧版DatagramSocket API;
2、更改java.net.DatagramSocket和java.net.MulticastSocket为更简单和现代化的底层实现,提高了JDK的可维护性和稳定性。
新的实现易于调试和维护,并且协同了Project Loom中正在探索的虚拟线程机制。
禁用偏向锁定
JDK15中默认情况下会禁用偏向锁协定,并弃用所有相关命令行选项。这么做的目的是确定是否需要继续支持偏置锁定的高维护成本的遗留同步优化,HotSpot虚拟机使用该优化来减少非竞争锁的开销。尽管某些java应用程序在金庸偏向锁后可能会出现性能下降,但偏向锁的性能提高不像以前那么明显。
偏向锁的命令行参数为-XX:+UseBiasedLocking,被废弃的所有相关命令有:BiasedLockingStartupDelay, BiasedLockingBulkRebiasThreshold, BiasedLockingBulkRevokeThreshold, BiasedLockingDecayTime, UseOptoBiasInlining, PrintBiasedLockingStatistics和PrintPreciseBiasedLockingStatistics
Shenandoah回收器转正
Shenandoah回收器是从JDK12引入的回收器(参见文章新版本jdk(9、11、12、13、14)特性和JVM学习之垃圾回收和垃圾回收器),通过与正在运行的java线程同时进行疏散工作来减少STW时间。Shenandoah的STW时间与堆大小无关,即不管java堆是200MB还是200GB,都将具有一样的暂停时间。
Shenandoah与ZGC的异同:
1、性能目标一致,但还是ZGC更优;
2、Shenandoah只存在于OpenJDK中,而ZGC是根正苗红的Oracle JDK出品。
JEP 339:EdDSA 数字签名算法
JEP 360:密封类(预览)
JEP 371:隐藏类
JEP 372:移除 Nashorn JavaScript 引擎
JEP 373:重新实现 Legacy DatagramSocket API
JEP 374:禁用偏向锁定
JEP 375:instanceof 模式匹配(第二次预览)
JEP 377:ZGC:一个可扩展的低延迟垃圾收集器
JEP 378:文本块
JEP 379:Shenandoah:低暂停时间垃圾收集器
JEP 381:移除 Solaris 和 SPARC 端口
JEP 383:外部存储器访问 API(第二次孵化版)
JEP 384:Records(第二次预览)
JEP 385:废弃 RMI 激活机制
JDK 5:enum、泛型、自动装箱与拆箱、可变参数、增强循环等
JDK 6:支持脚本语言、JDBC4.0API
JDK 7:支持try-with-resources、switch语句块增加String支持、NIO2.0包
JDK 8:lambda表达式、Stream API、新的日期时间的API、方法引用、构造器引用
JDK 9:模块化系统、jshell
JDK 10:局部变量的类型推断
JDK 11:ZGC的引入、Epsilon GC
JDK 12:switch表达式、Shenandoah GC、增强G1
JDK 13:switch表达式引入yield、文本块
JDK 14:instanceof模式识别、Records、弃用Parallel Scavenge+Serial GC组合、删除CMS GC
全新的内容,更多的使用方式可以去尝试。