[Java/OracleJDK/OpenJDK] JDK厂商的识别与替换

0 序言

  • jdk版本> oracle jdk 8u202,对于企业而言,将有知识产权风险。此时,建议使用低版本jdk,或者使用openjdk。

即 oracle jdk 8u202,无产权风险

1 概述: Jdk的厂商

1.1 识别JDK的厂商

识别Java命令的厂商

  • 方法1:要查看Java的厂商信息,可以通过命令行输入java -version,或者使用Java代码获取相关信息。
$ java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

这将显示当前安装的Java版本和厂商信息。例如,如果输出中包含“Java(TM) SE Runtime Environment”,则表示这是由Oracle提供的JDK;如果是“OpenJDK Runtime Environment”,则表示是OpenJDK

  • 方法2
$ java -XshowSettings:properties -version
  java.runtime.name = Java(TM) SE Runtime Environment
  java.runtime.version = 1.8.0_261-b12
  java.specification.name = Java Platform API Specification
  java.specification.vendor = Oracle Corporation
  java.specification.version = 1.8
  java.vendor = Oracle Corporation
  java.vendor.url = http://java.oracle.com/
  java.vm.name = Java HotSpot(TM) 64-Bit Server VM
  java.vm.specification.vendor = Oracle Corporation
  java.vm.specification.version = 1.8
  java.vm.vendor = Oracle Corporation

查看指定Java进程的厂商

  • 方法1
# jps -l
# jcmd {pid} PerfCounter.print
  ...
  java.property.java.vm.specification.vendor="Oracle Corporation"
  java.property.java.vm.vendor="Oracle Corporation"
  ...
  • 方法2
# jps -l
# jcmd {pid} VM.system_properties
  java.vm.specification.vendor=Oracle Corporation
  java.specification.vendor=Oracle Corporation
  ...
  java.home=D\:\\Program\\IDEA\\IDEA_COMMUNITY 2022.2\\jbr
  java.home=D\:\\Program\\Java\\jdk-17.0.7
  ...

1.2 OpenJDK 的获取

Open JDK

  • OpenJDK 官网

Microsoft Build of OpenJDK

  • 微软官网
  • Microsoft Build of OpenJDK

Microsoft Build of OpenJDK 是微软发布的一个 OpenJDK 的免费分发版。
它是开放源代码的,任何人都可以免费部署到任意位置。
这个分发版包括适用于 macOS、Linux 和 Windows 上 x64 服务器和桌面环境中的 Java 11 和 Java 17 的长期支持 (LTS) 二进制文件。

  • 特点和优势

Microsoft Build of OpenJDK 基于 OpenJDK 源代码,遵循 Eclipse Adoptium 项目使用的相同生成脚本,并根据 Eclipse Adoptium 质量保证套件(包括 OpenJDK 项目测试)进行了测试。
它的二进制文件已通过 Java 技术兼容性工具包 (TCK) 的测试,确保与 Java 规范的兼容性。

此外,Microsoft Build of OpenJDK 还包含一些向后移植的修补程序和增强功能,这些功能对客户和内部用户非常重要。这些修补程序和增强功能可能尚未在上游正式向后移植,但已在发行说明中明确标出。

  • 使用场景

如果你是 Microsoft Azure 客户,可以立即试用 Microsoft Build of OpenJDK。
只需在浏览器或 Windows 终端中访问 Azure Cloud Shell 即可。
此外,Microsoft Build of OpenJDK 还适用于 Apple Silicon (AArch64/M1) 上的 macOS 以及 x64 上的 Alpine Linux 的 musl libc 编译二进制文件。

Docker 镜像

  • Docker 镜像:

docker-release/docker.io/library/eclipse-temurin:8-jdk-alpine

1.3 基于Java构建的常用软件

IDEA

  • IDEA 【软件本身】是 openjdk,但IDEA中开发者给【项目工程】配置的 jdk,要单独检查。

IDEA 内置的 jdk,默认是使用 openjdk

如: java.home=D\:\\Program\\IDEA\\IDEA_COMMUNITY 2022.2\\jbr

DBeaver

  • DBVeaver 依赖的jdk,需用户自行配置

如 java.home=D:\Program\Java\jdk-17.0.7

  • 修改DBeaver设置的JDK

D:\Program\DBeaver-23-0-4\dbeaver\dbeaver.ini :

-vm
D:\Program\Java\openjdk17\jdk-17.0.16+8\bin\javaw.exe
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
-Dosgi.requiredJavaVersion=17
--add-modules=ALL-SYSTEM
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.nio.charset=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/java.time=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/jdk.internal.vm=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/sun.security.ssl=ALL-UNNAMED
--add-opens=java.base/sun.security.action=ALL-UNNAMED
--add-opens=java.base/sun.security.util=ALL-UNNAMED
-Xms64m
-Xmx1024m
-Ddbeaver.distribution.type=zip

Y 推荐文献

X 参考文献

posted @ 2025-09-03 09:00  千千寰宇  阅读(449)  评论(2)    收藏  举报