Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

      • 简介
      • 随机数工具-RandomUtil
      • ByteUtil
      • CharsetUtil
      • EnumUtil
      • JdkUtil
        • 功能介绍
        • 常量定义
        • 使用示例
          • 1. JDK版本判断
          • 2. JVM环境检测
          • 3. 版本适配代码
        • 应用场景
          • 1. 版本兼容代码
          • 2. 环境特定功能
          • 3. 依赖库适配
        • 注意事项
        • 总结
      • JNDIUtil
      • ObjUtil
      • RuntimeUtil
      • SystemUtil
    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 工具集合(util)
Hutool
2026-01-03
目录

JdkUtil

JdkUtil是Hutool中用于处理JDK版本和JVM环境相关的工具类,提供了JDK版本判断和JVM环境检测的功能。

# 功能介绍

  • JDK版本检测:获取当前JDK版本,并提供版本比较常量
  • JVM环境检测:检测当前运行环境是否为Android、OpenJ9或GraalVM Native Image
  • 静态常量:所有功能通过静态常量提供,无需实例化,直接使用

# 常量定义

常量名 类型 描述
JVM_VERSION int 当前JDK版本号,如JDK8返回8,JDK17返回17
IS_AT_LEAST_JDK25 boolean 是否大于等于JDK25
IS_ANDROID boolean 是否为Android环境
IS_OPENJ9 boolean 是否为OpenJ9环境
IS_GRAALVM_NATIVE boolean 是否为GraalVM Native Image环境

# 使用示例

# 1. JDK版本判断

// 获取当前JDK版本
int jdkVersion = JdkUtil.JVM_VERSION;
Console.log("当前JDK版本:" + jdkVersion);

// 判断是否大于等于JDK25
if (JdkUtil.IS_AT_LEAST_JDK25) {
    Console.log("当前JDK版本大于等于25");
} else {
    Console.log("当前JDK版本小于25");
}

# 2. JVM环境检测

// 判断是否为Android环境
if (JdkUtil.IS_ANDROID) {
    Console.log("当前环境是Android");
}

// 判断是否为OpenJ9环境
if (JdkUtil.IS_OPENJ9) {
    Console.log("当前环境是OpenJ9");
}

// 判断是否为GraalVM Native Image环境
if (JdkUtil.IS_GRAALVM_NATIVE) {
    Console.log("当前环境是GraalVM Native Image");
}

# 3. 版本适配代码

if (JdkUtil.JVM_VERSION >= 11) {
    // 使用JDK11及以上版本的新特性
    Console.log("使用JDK11+新特性");
} else {
    // 使用兼容旧版本的实现
    Console.log("使用兼容旧版本的实现");
}

# 应用场景

# 1. 版本兼容代码

在开发跨版本兼容的库或应用时,使用JdkUtil可以根据不同JDK版本提供不同的实现:

public void doSomething() {
    if (JdkUtil.JVM_VERSION >= 17) {
        // 使用JDK17的密封类特性
        useSealedClass();
    } else if (JdkUtil.JVM_VERSION >= 11) {
        // 使用JDK11的var关键字
        useVarKeyword();
    } else {
        // 使用传统实现
        useTraditionalWay();
    }
}

# 2. 环境特定功能

根据不同的JVM环境提供特定的功能:

public void init() {
    if (JdkUtil.IS_GRAALVM_NATIVE) {
        // GraalVM Native Image环境初始化
        initGraalVM();
    } else if (JdkUtil.IS_ANDROID) {
        // Android环境初始化
        initAndroid();
    } else {
        // 标准JVM环境初始化
        initStandard();
    }
}

# 3. 依赖库适配

根据JDK版本适配不同的依赖库版本:

public void loadDependency() {
    if (JdkUtil.JVM_VERSION >= 17) {
        // 加载支持JDK17的依赖库
        loadJdk17Dependency();
    } else {
        // 加载兼容旧版本的依赖库
        loadLegacyDependency();
    }
}

# 注意事项

  1. 版本号计算:JDK版本号计算规则为,对于JDK8及以下版本,如"1.8"返回8;对于JDK9及以上版本,直接返回版本号,如"11"返回11。
  2. 静态初始化:所有常量在类加载时初始化,后续调用不会重新计算,性能高效。
  3. 环境检测准确性:
    • Android环境通过JVM名称"Dalvik"判断
    • OpenJ9环境通过JVM名称包含"OpenJ9"判断
    • GraalVM Native Image环境通过系统属性"org.graalvm.nativeimage.imagecode"判断
  4. 无需实例化:所有功能通过静态常量提供,直接使用类名访问即可。

# 总结

JdkUtil提供了简单易用的JDK版本和JVM环境检测功能,通过静态常量的方式,无需复杂的API调用,即可快速获取当前运行环境信息。在开发跨版本、跨环境兼容的应用或库时,JdkUtil可以帮助开发者根据不同环境提供不同的实现,提高代码的兼容性和可维护性。

EnumUtil
JNDIUtil

← EnumUtil JNDIUtil→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式