首页 / Java 入门教程 / Java 简介与历史发展

Java 入门教程

Java 简介与历史发展

本教程共 100 篇 · 第 1 篇 · 更新于 2026-08-05 · 约 5 分钟阅读

JavaJava 入门教程Java 历史JVM字节码Java 25 LTS

1. Java 简介与历史发展

本节目标:搞清 Java 是什么、从哪来、凭什么能跨平台,并认识全书统一使用的版本 Java 25 LTS。

Java 到底是什么

很多人第一次听说 Java,以为它只是一门编程语言。

准确说,Java 是「一门语言 + 一个平台」。语言部分是你写的那些 classiffor;平台部分是运行这些代码的虚拟机和一整套标准类库。

两者缺一不可。你写的 .java 文件本身不能运行,得先变成字节码,再交给虚拟机执行。

这个设计是 Java 最核心的特征,后面几节会反复用到。

从 Oak 到 Java:一次改名换来的运气

时间回到 1990 年代初。Sun 公司(后被 Oracle 收购)的 James Gosling 带队做了一门新语言,起名 Oak(橡树)。

它最初的目标很小众:给机顶盒、烤面包机这类家电写嵌入式程序。市场反应平平,项目差点被砍。

转机来自互联网。网页需要一种能在各种机器上都跑得动的程序,Oak 的「跨平台」特性正好对上。

1995 年,Sun 把它重新包装发布。因为 Oak 这个商标已被人注册,只好换名——就是我们熟悉的 Java

Gosling 也因此被称作「Java 之父」。

编译型、解释型,Java 走的是第三条路

要理解 Java 为什么能跨平台,得先看看另外两派怎么做。

编译型语言(C、C++)把源码直接编译成机器码。机器码是 CPU 能直接读的指令,跑得快,但换个平台就得重新编译一份——x86 和 ARM 的指令集根本不一样。

解释型语言(Python、Ruby)不编译,由解释器逐行读源码执行。换平台不用改代码,代价是运行慢。

Java 选了中间路线:先把源码编译成一种叫字节码的中间格式,再由各平台自己的虚拟机去执行。

Hello.java   ── javac 编译 ──▶  Hello.class(字节码)

                     ┌───────────────┼───────────────┐
                     ▼               ▼               ▼
              Windows 的 JVM   Linux 的 JVM     macOS 的 JVM
```bash

字节码好比「世界语」,JVM 好比各国的翻译官。你只写一份世界语稿子,翻译官负责讲成当地话。

这就是那句著名口号的由来:**Write Once, Run Anywhere**(一次编写,到处运行)。

> [!NOTE]
> 跨平台是对写代码的人说的。虚拟机本身需要为每个平台单独开发,这活儿 Oracle 和各 JDK 发行方替我们干了。

## 向下兼容:Java 生命力的真正来源

Sun 当年制定了一整套《Java 虚拟机规范》,规定字节码长什么样、怎么执行。

任何公司想做自己的 JVM,都得照这份规范来。这保证了同一个 `.class` 文件在不同厂商的虚拟机上行为一致。

实践中 JVM 的兼容性经得起验证:**低版本编译出的字节码,可以直接跑在高版本 JVM 上**。

十年前编译的 jar 包扔进 Java 25 LTS 的环境里,大概率照样能跑。这种稳定性是 Java 在企业里长期不倒的关键原因。

## Java SE、Java EE、Java ME 的分工

Java 发展中期分出了三个版本,名字很容易搞混:

| 版本 | 全称 | 定位 |
|------|------|------|
| Java SE | Standard Edition | 标准版,语言核心 + 标准类库 + 标准 JVM |
| Java EE | Enterprise Edition | 企业版,在 SE 基础上加 Web、数据库、消息等 API |
| Java ME | Micro Edition | 嵌入式「瘦身版」,类库和虚拟机都被裁剪过 |

三者的关系可以这么记:

```text
┌───────────────────────────┐
│ Java EE                   │
│   ┌────────────────────┐  │
│   │ Java SE            │  │
│   │   ┌─────────────┐  │  │
│   │   │  Java ME    │  │  │
│   │   └─────────────┘  │  │
│   └────────────────────┘  │
└───────────────────────────┘

Java EE 用的虚拟机和 Java SE 完全相同,只是多了一堆库。Spring 这些框架都长在这个生态上。

Java ME 情况不同,它是裁剪版,SE 的标准库在上面用不了。移动端最终被 Android 拿下,ME 基本退出了历史舞台,初学者不必碰。

Tip

Java EE 在 2017 年被 Oracle 捐给 Eclipse 基金会,改名 Jakarta EE,包名也从 javax.* 换成了 jakarta.*。看到这两个名字,知道是同一条线就行。

Java SE 是整个平台的地基,这本教程讲的全是 Java SE。

版本演进:从 1.0 到 25

Java 从 1996 年发布 1.0,至今三十年。几个真正改变写法的节点值得记住:

版本年份标志性变化
1.01996首个公开版本
5.02004泛型、注解、枚举、增强 for
82014Lambda、Stream、Optional,现代 Java 的起点
92017模块化、jshell、集合工厂方法
112018LTS,标准 HTTP Client,单文件源码直接运行
172021LTS,密封类正式,record 与模式匹配落地
212023LTS,虚拟线程、switch 模式匹配
252025LTS,本教程基线

从 Java 9 开始,发布节奏改成每 6 个月一个特性版(每年 3 月和 9 月各一次)。

从 Java 17 起,每两年的 9 月版本是 LTS(长期支持版):17 → 21 → 25 → 29……

非 LTS 版本只维护半年左右,玩玩新特性可以,生产环境不会用。

为什么本教程用 Java 25 LTS

写这本教程时,最新发布版是 Java 26(2026 年 3 月),但它不是 LTS。

Java 25 于 2025 年 9 月发布,商业支持到 2030 年,是当下企业的主流选择。学它性价比最高:语法足够现代,生态足够成熟,找工作也对得上。

后面章节里凡是 Java 8 之后引入的语法(varrecord、文本块、switch 表达式等),我都会标注引入版本,方便你判断老项目能不能用。

Warning

网上很多 Java 教程还停留在 Java 8 的写法。不是说 Java 8 不对,而是有些写法已经有更清爽的替代品。遇到差异时以本教程的 Java 25 LTS 写法为准,我会在旁边附上「历史兼容」对照。

小结

Java 是「语言 + 平台」的组合,源码先编译成字节码,再由 JVM 执行,这是它跨平台的根本原因。

它 1995 年由 Sun 公司发布,前身叫 Oak,之父是 James Gosling。

Java SE 是核心地基,Java EE(现 Jakarta EE)是企业级扩展,Java ME 已基本退场。

版本上每半年一个特性版、每两年一个 LTS,本教程统一以 Java 25 LTS 为准。

上一篇
已经是第一篇啦
下一篇
为什么学 Java / 应用场景