Java 介绍与选型指南
Java 介绍与选型指南:基于 Oracle、OpenJDK、Adoptium 等官方资料梳理 JDK 25/27 版本基准、语言与 JVM 架构、功能特性、快速上手、适用场景与限制,并对比 Go、Python、Kotlin 的选型差异。
Java 介绍与选型指南
一、信息基准
本文为 Java 语言及其主流 JDK 发行版的介绍与选型指南,全部信息均来自官方公开资料(Oracle 官网、OpenJDK 官网、Eclipse Adoptium、发行版官方文档与仓库),不做本地安装与运行实测。Java 是"语言规范 + 多发行版 JDK"的组合,无单一版本号,因此标题不带版本,此处给出组件-版本基准表。
| 组件/发行版 | 版本基准 | 开源许可 | 说明与来源 |
|---|---|---|---|
| Oracle JDK | 最新功能版 27;LTS 版 25、21、17、11、8 | Oracle No-Fee Terms and Conditions(NFTC) | 官方下载页同时列出 JDK 27/25/21/17/11/8 并标注 LTS |
| OpenJDK | GA 构建版 27、25 | GPLv2 with Classpath Exception | jdk.java.net 提供 27 与 25 的 GA 构建页 |
| Eclipse Temurin | 最新 27(2026-10-01 发布);LTS 序列 8/11/17/21/25 | GPLv2 with Classpath Exception | Adoptium 官方接口显示 most_recent_lts=25、most_recent_feature_release=27 |
| Amazon Corretto | 25 | 提供免费长期支持 | 官方用户指南已设 corretto-25 章节 |
| GraalVM Community | 25 线(vm-25.1.3;25 Innovation 4 对应 jdk 25.0.4.1.1,2026-09-22) | 开源社区版,许可条款以官方仓库声明为准 | 官方 GitHub 发布页实查 |
官方来源清单:
| 来源 | 链接 | 说明 |
|---|---|---|
| Oracle Java 下载 | https://www.oracle.com/java/technologies/downloads/ | JDK 27/25/21/17/11/8 版本与 NFTC 许可 |
| OpenJDK GA 构建 | https://jdk.java.net/25/ 、 https://jdk.java.net/27/ | 参考实现 GA 构建 |
| JDK 27 项目页 | https://openjdk.org/projects/jdk/27/ | General Availability 状态 |
| Eclipse Adoptium | https://adoptium.net/ | Temurin 发行版与支持矩阵 |
| Oracle JDK 27 文档 | https://docs.oracle.com/en/java/javase/27/ | 官方平台文档 |
| dev.java | https://dev.java/ | Java 官方学习门户 |
版本节奏:自 JDK 9 起每 6 个月发布一个功能版,LTS 每两年一个(Adoptium 可用 LTS 序列 17、21、25 印证;27、26 为功能版,28 处于开发期 tip 状态)。
二、软件概述
本文介绍 Java 语言体系截至 2026-10-18 的版本基准:最新功能版为 JDK 27(已 GA),当前 LTS 基准为 JDK 25,Adoptium 等发行版已于 2026-10-01 提供 Temurin 27 构建。
Java 由 James Gosling 于 1995 年在 Sun Microsystems 发布,现归 Oracle 所有,是面向对象的静态强类型语言。其核心理念是"一次编写,到处运行":源码经 javac 编译为与平台无关的字节码(.class),由各平台上的 Java 虚拟机(JVM)执行。三十年间,Java 长期占据企业级服务端开发的主流位置,全球大量中间件与大数据系统(如 Kafka、Elasticsearch、Hadoop 生态)以 Java 或 JVM 语言编写。
Java 生态的另一个特征是"语言多元、平台统一":Kotlin、Scala、Groovy 等语言均编译为 JVM 字节码运行,与 Java 共享同一套运行时与依赖管理体系。
三、核心架构 / 核心概念
3.1 语言、字节码与虚拟机
Java 的三层结构:语言层(源码与语法)、编译层(javac 将源码编译为字节码)、运行层(JVM 加载并执行字节码)。字节码是跨平台的关键中间产物;同一份 .class 文件可在任意实现了对应版本 JVM 规范的平台上运行。
3.2 JVM 运行时
JVM 运行时包含类加载子系统、执行引擎与运行时数据区。执行引擎通过解释器与即时编译器(JIT)混合执行,热点代码会被编译为本地机器码;内存管理由垃圾回收器(GC)自动完成,开发者无需手工释放内存。JVM 规范与各发行版的 GC 实现共同构成 Java 性能调优的主要对象。
3.3 标准库与模块系统
JDK 自带覆盖集合、并发、I/O、网络、安全等领域的标准库。自 JDK 9 起引入 Java 平台模块系统(JPMS),以 module 形式组织代码与依赖边界。开发期工具链还包括交互式命令行 jshell(自 JDK 9 起随 JDK 提供)与单文件源码直接运行(自 JDK 11 起,java Hello.java 即可编译并运行单个源文件,官方 dev.java 文档说明)。
3.4 发行版谱系
同一份 OpenJDK 源码派生出多个发行版:Oracle JDK(NFTC 许可,生产使用免费条款以官方许可文本为准)、社区 OpenJDK 构建、Eclipse Temurin(Adoptium 项目,免费 LTS 二进制)、Amazon Corretto、Azul Zulu、GraalVM 等。各发行版均需通过 TCK 认证方可宣称 Java 兼容。GraalVM 在 JVM 之上提供提前编译(AOT)能力,将 Java 程序编译为本地可执行文件,其社区版发布与 JDK 25 线对应。
四、功能特性
- 跨平台字节码:编译一次,任何符合规范的 JVM 均可运行,是异构服务器环境统一技术栈的基础。
- 自动内存管理:GC 自动回收对象,配合分代假设与并发回收器,降低内存错误类缺陷。
- JIT 热点优化:解释执行与即时编译结合,长时运行的服务端负载可获得接近本地代码的吞吐。
- 模块系统(JPMS):语言级模块边界,改进大型工程的封装与依赖治理。
- 现代并发模型:自 JDK 21 起虚拟线程转正,显著降低高并发阻塞式编程的资源成本(dev.java 官方文档)。
- 生态成熟度:Maven/Gradle 构建体系、海量的第三方库与框架(Spring、Jakarta EE 等),以及统一的中央仓库分发机制。
- 多语言运行时:Kotlin、Scala、Groovy 等语言共享 JVM 生态,团队可按场景混合选型。
- 提前编译选项:GraalVM Community 25 提供提前编译路径,可将 Java 程序编译为本地可执行文件,适合对启动时间与常驻内存敏感的场景。
五、快速上手
以下最小示例引自官方文档(dev.java 与 Oracle JDK 文档),以单文件源码运行方式演示,本文不做实测。
- 安装:从官方下载页获取 JDK(Oracle JDK 27/25,或 OpenJDK 27/25 GA 构建,或 Temurin 25/27),按发行版指引安装后,终端执行
java --version验证。 - 编写
Hello.java:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
- 运行:
java Hello.java(自 JDK 11 起单文件源码可直接运行,无需显式 javac)。 - 交互实验:执行
jshell进入官方自带的 REPL 环境,逐行求值表达式。
官方来源:https://dev.java/learn/ 、https://docs.oracle.com/en/java/javase/27/
六、适用场景与限制
适用场景:企业级 Web 后端与微服务(Spring/Jakarta EE 体系);大型中间件与消息系统(Kafka、Elasticsearch 等 JVM 组件的二次开发与运维);大数据处理(Hadoop/Spark/Flink 生态);Android 应用(以 Kotlin 为主、Java 共存);金融、电信等对稳定性与长期支持要求高的行业系统。
限制:JVM 常驻内存与启动开销高于脚本语言,对小内存、极简工具类场景偏重;GC 与 JIT 调优存在学习曲线;桌面与移动端新项目份额让位于其他技术栈;各发行版许可条款(尤其 Oracle NFTC 的适用边界)需要在选型时逐条确认;功能版每 6 个月迭代,生产环境需要明确的 LTS 升级策略。
七、同类选型对比
对比维度说明:Java 为语言+运行时体系,与同为"语言+运行时"的 Go、Python、Kotlin 对比。数据查询日期 2026-10-18,stars 取自各项目 GitHub 官方仓库页面,版本取自官方发布渠道。
| 维度 | Java(JDK 25/27) | Go 1.27.2 | Python 3.15.0 | Kotlin 2.4.21 |
|---|---|---|---|---|
| 开源许可 | OpenJDK GPLv2+CE;Oracle JDK NFTC;Temurin GPLv2+CE | BSD-3-Clause(官方仓库 LICENSE) | PSF 许可(官方仓库 LICENSE) | Apache-2.0(官方仓库 LICENSE) |
| GitHub stars | 官方未公布(语言无统一仓库) | 约 139309(golang/go) | 约 77671(python/cpython) | 约 53479(JetBrains/kotlin) |
| 最近发版 | JDK 27 已 GA;Temurin 27 于 2026-10-01 发布 | go1.27.2(go.dev/dl 实查) | 3.15.0 正式发布(python.org FTP 实查),3.14.8 维护中 | 2.4.21(Maven Central 实查),2.5.0 处于 Beta |
| 版本节奏 | 功能版每 6 个月,LTS 每两年 | 约每 6 个月一个大线 | 约每年一个功能版 | 约 6 个月一个大线 |
| 兼容矩阵 | JVM 运行时跨平台;生态普遍以 JDK 17+ 为基线(如 Eclipse Jetty 12 要求 JVM 17) | 单一静态二进制,跨平台交叉编译 | 解释执行,受 GIL 历史影响的并发模型 | 编译为 JVM 字节码,可复用 Java 生态,另可编译为多平台目标 |
选型建议:团队需要最成熟的企业级框架、长期 LTS 支持与庞大的人才池时选 Java;追求部署简单与并发性能、可接受较小生态时选 Go;数据分析与脚本化自动化选 Python;已投入 JVM 且重视语言表达力与空安全的 Android/后端团队选 Kotlin。
八、参考链接
- Oracle Java 下载页:https://www.oracle.com/java/technologies/downloads/
- OpenJDK 25 GA:https://jdk.java.net/25/
- OpenJDK 27 GA:https://jdk.java.net/27/
- JDK 27 项目页:https://openjdk.org/projects/jdk/27/
- Eclipse Adoptium(Temurin):https://adoptium.net/
- Adoptium 支持信息(Temurin 27 发布公告):https://adoptium.net/support.html
- Amazon Corretto 25:https://docs.aws.amazon.com/corretto/latest/corretto-25-ug/what-is-corretto-25.html
- GraalVM Community Builds:https://github.com/graalvm/graalvm-ce-builds/releases
- Oracle JDK 27 文档:https://docs.oracle.com/en/java/javase/27/
- dev.java 官方学习门户:https://dev.java/
- Go 下载:https://go.dev/dl/
- Python 官方 FTP 版本索引:https://www.python.org/ftp/python/
- Kotlin(Maven Central kotlin-stdlib):https://repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/