Java 是什么:概念与 JDK 安装
这是什么:Java = 一门编译型编程语言,写好的 .java 源码先被翻译成字节码,再交给虚拟机执行。
为什么用:如果你是纯零基础,建议先去 Python 基础 找找「程序跑起来」的感觉再回来;直接从 Java 开始也完全没问题,本教程从零讲起。装工具是学编程最劝退的一步,所以我们把它放在第一章解决——后面十几个章节,全靠今天这几十分钟打好地基。
如何用:本章先弄清 JDK、JRE、JVM 的关系,再把 JDK 25 装好,最后敲一句代码验证编译器能用。
一句话解释
Java 是一门"一次编写,到处运行"的编程语言——同一份代码,Windows、macOS、Linux 都能跑。它是企业级开发的主力语言:手机 App 的后端、银行系统、大数据平台,很多都是 Java 写的。
这么说可能还是有点抽象,看看它藏在哪些你天天用的东西里:
| 你熟悉的东西 | Java 在里面的角色 |
|---|---|
| 安卓手机 App | 大量 App 的后端服务用 Java 写 |
| 网购下单、支付 | 订单、库存、结算系统大多是 Java |
| 银行、证券系统 | 稳定性要求极高的领域,Java 是老牌主力 |
| 大数据平台 | Hadoop、Spark 等生态诞生于 Java 系 |
它不是最"潮"的语言,但求稳的企业都爱它——一门语言能火几十年,靠的不是花哨,而是可靠。
为什么能"到处运行"
秘密在于一个中间人:JVM(Java 虚拟机)。
你的代码不直接指挥电脑,而是先翻译成"中间码"(字节码),再由各个系统上的 JVM 负责执行。就像你写一封信,世界各地都派了一位翻译官(JVM),写信的人只管写一次。
把整个流程拆开看,一共三步:
| 步骤 | 谁来做 | 产出 | 类比 |
|---|---|---|---|
| ① 写源码 | 你 | Hello.java(人能看懂的代码) |
写一封信 |
| ② 编译 | 编译器 javac | Hello.class(字节码) |
把信翻译成"通用语" |
| ③ 运行 | 各平台的 JVM | 屏幕上的结果 | 各地翻译官读给当地人听 |
这里有个关键分工:字节码是全世界统一的,JVM 是分平台的。Windows 有 Windows 版 JVM,Mac 有 Mac 版 JVM,它们都认识同一种字节码。所以"适配不同系统"这个麻烦事被 JVM 拦下了,写代码的你完全不用管——这就是"一次编写,到处运行"的全部秘密。
顺带澄清一个常见误会:Java 不是"解释型语言"那种逐行执行,也不像 C 那样直接编译成机器码。它是先编译成字节码、再由 JVM 执行的混合路线,兼得两端的好处:编译期帮你抓错误,JVM 帮你跨平台。
JDK、JRE、JVM 什么关系
一句话记住:JDK 包含 JRE,JRE 包含 JVM。JVM 管运行,JRE = JVM + 运行库,JDK = JRE + 编译器等开发工具。我们要写代码,直接装最全的 JDK。
| 缩写 | 全称 | 一句话 |
|---|---|---|
| JVM | Java 虚拟机 | 真正干活的运行引擎 |
| JRE | Java 运行环境 | JVM + 运行所需的库 |
| JDK | Java 开发工具包 | JRE + 编译器,写代码装它 |
用"套娃"来理解最直观:JDK 是最大的盒子,拆开是 JRE,再拆开才是 JVM。三个角色分工明确——
- JVM:只管一件事,把字节码变成机器能干的活。它不认识
.java源文件。 - JRE:光有引擎还不够,跑程序经常要用现成的轮子(比如打印、读文件、网络通信这些基础库),JRE = 引擎 + 轮子库,只够"跑",不够"写"。
- JDK:在 JRE 之上再加开发工具,最重要的是编译器 javac,还有调试器、文档工具等。写代码的人必备。
打个比方:JVM 是发动机,JRE 是整车(能开走),JDK 是带修理工具的整车(能开也能修能改装)。你是要"造车"的人,所以装 JDK。
先睹为快
看一段 Java 代码感受一下(细节后面章节都会讲):
public class Hello {
public static void main(String[] args) {
System.out.println("你好,Java!");
}
}
运行后输出:
你好,Java!
比 Python 的 print("你好") 啰嗦不少?是的。但正因为规则严格、结构清晰,大项目里它稳定可靠——这就是企业爱它的原因。
先把这段代码的骨架看熟,它就是接下来十几章的"舞台":
| 代码片段 | 角色 | 类比 |
|---|---|---|
public class Hello |
定义一个类,Java 代码必须写在类里 | 整栋楼的楼名 |
main 方法 |
程序入口,从这里开始执行 | 大门 |
System.out.println(...) |
打印一行内容 | 喇叭 |
每句末尾的 ; |
语句结束符 | 句号 |
你会发现 Python 一行能干的事,Java 要裹上"类"和"方法"两层外壳。这不是故意为难人:代码规模一大,这种强制的结构反而成了"目录"——去哪找什么代码,一目了然。小项目吃亏,大项目受益,这就是 Java 的性格。
Java 和 Python 的本质区别
| 维度 | Python | Java |
|---|---|---|
| 类型系统 | 动态类型 | 静态类型,变量要先声明类型 |
| 运行方式 | 解释型,逐行执行 | 编译成字节码,JVM 运行 |
| 变量声明 | age = 18 直接用 |
int age = 18; 必须标类型 |
| 代码位置 | 可直接写在文件顶层 | 代码必须写在类里 |
| 典型用途 | 脚本、AI、数据处理 | 企业后端、安卓、大数据 |
光看表格还不够,展开说说这两条区别到底意味着什么。
静态类型 vs 动态类型:Python 里变量像个"随便贴标签的盒子",今天装数字明天装文字,运行到那行才报错;Java 的盒子出厂就刻死了用途,装错了编译阶段就拦下,程序压根跑不起来。看起来 Java 更麻烦,但换个角度:错误发现得越早,修起来越便宜。项目几万行代码时,编译器就是你的第一道保安。
编译 vs 解释:Python 跑脚本,改一行就能立刻看效果,爽;Java 要先编译再运行,多一步。但编译过的代码交给了 JVM,运行效率高、错误前置,适合常年运转的大型系统。一句话:Python 求快(开发快),Java 求稳(系统稳),各有各的赛道。
安装 JDK 25
JDK 25 是 2025 年 9 月发布的最新 LTS(长期支持版),无脑选它。
LTS 是什么:Long-Term Support,长期支持版。JDK 每半年发一个新版本,但只有 LTS 版会获得多年维护,企业生产环境清一色用 LTS。学习阶段跟着 LTS 走,教程和答案最多。
安装步骤
- 下载:Adoptium(Eclipse Temurin) 或 Oracle 官网,都免费,任选一个
- 安装时务必勾选
Add to PATH(把 Java 加进系统路径)——Python 章讲过的第一大坑,Java 同款 - 打开命令行(
Win + R输入cmd回车),输入:
java --version
看到类似下面的输出,就装好了 🎉
openjdk version "25" 2025-09-16 LTS
为什么要加 PATH:你在命令行敲 java 时,系统得知道去哪个文件夹找这个程序。PATH 就是系统的"常用地址簿",把 JDK 的 bin 目录登记进去,以后在任何文件夹敲 java 都能找到人。没登记,系统只能说"不是内部或外部命令"。
验证编译器
再输入 javac --version,确认编译器也在:
javac 25
这一步别偷懒:java 能用只说明运行环境 OK,javac 在才说明开发工具齐了——你后面每章都要靠它把源码变成可运行的程序。
如果提示 java 不是内部或外部命令,通常是安装时没勾选"添加到 PATH",重新安装或手动把 JDK 的 bin 目录加到系统 PATH 即可。
安装翻车排查清单
| 症状 | 原因 | 处理 |
|---|---|---|
java 不是内部或外部命令 |
没加 PATH 或没重开命令行 | 重装勾选 PATH;已勾选就关掉 cmd 重开再试 |
| 命令行敲了没反应,但 IDEA 里能跑 | IDE 自带 JDK,系统 PATH 没配 | 学习阶段也建议配好,命令行是排障利器 |
| 下载页面选项太多不会选 | 平台选对(Windows/macOS),架构 Windows 一般选 x64 | 版本选最新 LTS 即可 |
用什么写代码
- 轻量派:VS Code + Java 扩展包——免费轻量,有代码提示和调试
- 全家桶派:IntelliJ IDEA 社区版——Java 开发的事实上标准 IDE,社区版免费
两选一即可,本书代码两边都能跑。
| 对比项 | VS Code | IDEA 社区版 |
|---|---|---|
| 安装体积 | 小,装扩展即可 | 大,功能全 |
| 上手速度 | 快,界面简洁 | 稍慢,按钮多 |
| Java 专属体验 | 够用 | 更顺(重构、提示更强) |
| 适合谁 | 已在用 VS Code 的人 | 打算长期写 Java 的人 |
给你个实在的建议:纠结就选 IDEA 社区版。它是 Java 圈的"普通话",工作中见到的截图、教程大多基于它,跟着教程操作不容易对不上号。当然,本书所有代码都是"裸代码",用记事本 + 命令行也能跑——工具不挑代码,别让工具挑选耽误你开始。
❓ 常见问题
Q1:学 Java 需要先会 Python 或 C 吗?
不需要。本教程从零讲起,之前写过 Python 反而要留意"换个习惯":变量先声明类型、每句加分号、代码必须住在类里。零基础反而少包袱。
Q2:JVM 本身是什么语言写的?和"用 Java 写的程序"什么关系?
JVM 是一个独立的软件(用 C/C++ 等写成),负责执行字节码。你写的 Java 程序跑在 JVM 里面——把 JVM 想成一台"软件虚拟出来的电脑",你的程序就是装进这台电脑里的应用。
Q3:为什么命令行输 java --version 有输出,Java --version(大写 J)却报错?
命令是区分大小写的,java 是注册在 PATH 里的程序名,必须小写。顺带记住:以后给类起名叫 Hello、变量叫 hello,大小写都是"不同的名字"。
Q4:装好了 JDK,是不是所有章节的代码都能直接跑?
能。本书基础篇和面向对象篇的所有例子,都只需要"一个 .java 文件 + 一条命令",不依赖任何第三方库——这是刻意安排的,让你把注意力全部放在语言本身。
⚠️ 新手翻车现场
翻车一:装完了,命令行却说"不是内部或外部命令"
'java' 不是内部或外部命令,也不是可运行的程序或批处理文件。
原因:两种情况——安装时没勾选 Add to PATH;或者勾了,但报错的命令行窗口是在安装之前打开的(PATH 变更对老窗口不生效)。
修复三步:① 完全关闭当前 cmd,重新开一个;② 还不行就重装 JDK,安装界面勾选 Add to PATH;③ 再不行,手动把 JDK 安装目录下的 bin 文件夹路径加入系统环境变量 PATH。
举一反三:"装了软件但命令行找不到"是所有编程语言安装的第一坑,本质都是 PATH 问题,思路完全通用。
翻车二:下载安装包时选错了架构
原因:Adoptium 下载页有 x64、aarch64 等选项,选错了装不上或装上跑不了。普通 Windows 电脑选 x64;苹果芯片的 Mac 选 aarch64。
修复三步:① Windows 用户按 Win + R 输入 msinfo32 回车,看"系统类型";② x64 处理器就选 x64 的包;③ 下载后一路下一步,记得勾 PATH。
举一反三:装任何开发工具先确认"操作系统 + 架构",30 秒检查能省一小时排错。
翻车三:看教程视频敲 java -version,自己敲 java --version 报错
原因:老教程多用单横线 -version,新版本 JDK 两种都认。看到不一样先别慌,两种都试试。
修复三步:① 优先用本书的 java --version;② 报错就换 java -version;③ 都不行回到翻车一查 PATH。
举一反三:技术教程会过时,报错时先怀疑"教程老了"或"环境不同",而不是怀疑自己笨。
记忆口诀
写代码装 JDK,跑程序靠 JVM,一套代码走天下。
记忆锚点:把 Java 世界想成一个跨国公司——你(程序员)用世界语(Java)写信,编译器 javac 把信统一翻译成"总部备忘录格式"(字节码),各地分公司经理(各平台 JVM)拿到的格式完全一样,再用本地话传达给员工(硬件)。信只写一次,翻译分工给各地。
📝 本章小结
- Java 靠"字节码 + JVM"实现一次编写到处运行:源码
.java编译成.class,各平台 JVM 负责执行 - JDK ⊃ JRE ⊃ JVM:JVM 是引擎,JRE = 引擎 + 运行库,JDK = JRE + 编译器等工具;写代码装 JDK
- Java 是静态类型语言,变量先声明类型,代码必须写在类里,错误在编译期就暴露
- 安装 JDK 选最新 LTS,安装时勾选
Add to PATH,装完用java --version和javac --version双验证 - IDE 二选一:VS Code 轻量,IDEA 社区版是 Java 圈标配;纠结选后者
动手改
- 装完 JDK 25,用
java --version查出自己的版本号 - 再试试
javac --version(编译器版本),确认它也在 - 数一数上面
Hello代码里有几个大括号——下一章你会亲手写它 - 故意在命令行敲一个不存在的命令(比如
javaa),观察报错长什么样——认识"正常报错"是新手必修课
下一章:第一个程序:Hello World,跑起你人生第一段 Java 🐸