目录
在今年的3月份,ORACLE 更新了的JDK 发行版 JDK 22,作为了一位ORACLE Primavera系列产品的研究者,其实对JDK的迭代完全不感冒,但考虑到近期ORACLE产品安全性(如系统漏洞etc)以及技术特点的敏感性,或多或少也会影响其企业产品的安全部署,由此,这里做过简要介绍当做尝尝鲜,后续如有必要我也可以基于该JDK部署诸如WEBLOGIC及P6等应用并评估其影响。
获取JDK
▼ Oracle JDK 的获取,可以通过如下指定的地址中下载,过程中无需登录ORACLE账号
需注意的是,我目前使用的是平台是mac m1pro下的linux 虚拟机,因此用的是ARM版安装包,本文也是基于此前提进行介绍。如果你的电脑/服务器使用的是intel或者amd芯片,请选择x84架构类型。
安装JDK
完成上一步骤JDK的下载后,将jdk rpm文件通过fpt工具存放至Linux相应的目录下(我这里采用的是CentOS7,当然也是aarch版),如下通过ivh命令进行安装
[root@centos7s1 mnt]# rpm -ivh jdk-22_linux-aarch64_bin.rpm
warning: jdk-22_linux-aarch64_bin.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jdk-22-2000:22.0.1-8 ################################# [100%]
再查询JAVA版本,可得到环境识别到的java版本号
[root@centos7s1 mnt]# java -version
java version "22.0.1" 2024-04-16
Java(TM) SE Runtime Environment (build 22.0.1+8-16)
Java HotSpot(TM) 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
配置JAVA环境变量
Linux的环境变量配置与Windows稍许不同,考虑到linux生产用服务器一般不具备图形界面,一般使用配置文件进行处理
Linux JDK默认安装在 /usr的java目录下,可以通过ftp进入到jdk 22的安装明细
复制如上的java目录完整路径,并配置到系统profile配置文件中,使用vi或vim进行编辑
[root@centos7s1 mnt]# vi /etc/profile
在profile文件的最后面添加如下信息
export JAVA_HOME=/usr/lib/jvm/jdk-22-oracle-aarch64
export PATH=$ORACLE_HOME/bin:$JAVA_HOME/bin:$PATH
最后通过source 使得profile修改内容生效
[root@centos7s1 mnt]# source /etc/profile
如此,便完成了JDK 22的下载,安装及配置工作
其他补充:JDK 22的新特征
1. 语法
1.1 语言预览
➜ super(...) 之前的语句(预览)
在 Java 编程语言的构造函数中,允许不引用正在创建的实例的语句出现在显式构造函数调用之前。
➜ 流收集器(预览)
增强Stream API以支持自定义中间操作。这将允许流管道以现有内置中间操作不易实现的方式转换数据。
➜ 字符串模板(第二次预览)
使用字符串模板增强 Java 编程语言。字符串模板通过将文字文本与嵌入式表达式和模板处理器耦合来生成专门的结果,从而补充了 Java 现有的字符串文字和文本块。
➜ 隐式声明的类和实例主要方法(第二预览版)
发展 Java 编程语言,以便学生可以编写他们的第一个程序,而无需了解为大型程序设计的语言功能。学生无需使用单独的语言方言,而是可以为单类程序编写简化的声明,然后随着技能的增长无缝扩展他们的程序以使用更高级的功能。
2. 库
➜ 外部函数和内存 API
引入一个 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外部的代码),并通过安全地访问外部内存(即不由 JVM 管理的内存),API 使 Java 程序能够调用本机库并处理本机数据,而不会造成脆弱性和危险。
2.1 库预览和孵化器
➜ 类文件 API(预览版)
提供用于解析、生成和转换 Java 类文件的标准 API。
➜ 结构化并发(第二预览版)
通过引入结构化并发 API 来简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消、提高可靠性并增强可观察性。
➜ 范围值(第二预览版)
引入作用域值,它允许与同一线程中的子帧以及子线程管理不可变数据的共享。作用域值比线程局部变量更容易推理,并且空间和时间成本更低,特别是与虚拟线程和结构化并发结合使用时。
➜ Vector API(第七个孵化器)
引入 API 来表达向量计算,在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于同等标量计算的性能。
3. 性能
➜ G1 的区域固定
通过在 G1 中实现区域固定来减少延迟,以便在 Java 本机接口 (JNI) 关键区域期间无需禁用垃圾收集。
4. 工具
➜ 启动多文件源代码程序
增强java
应用程序启动器,使其能够运行作为多个 Java 源代码文件提供的程序。这将使从小程序到大程序的过渡更加渐进,使开发人员能够选择是否以及何时配置构建工具。
以上详细官方介绍也可到如下地址中查阅: