不管你是因为什么原因来到这里的,或许是学校的课程要求,或许是工作中需要转战后端,又或许只是单纯好奇"Java 到底是什么",我都想先跟你说一声:欢迎。
学习一门编程语言,就像学习一门新的自然语言。刚开始会有些陌生,甚至会因为记不住关键字或搞不懂语法而沮丧。但别担心,这个系列就是为你准备的。该系列会尽量用最平实的语言、最清晰的例子,陪着你一步一步往前走。
今天,我们不写代码,甚至连开发环境都不装。我们先做一件事:坐下来,好好认识一下 Java 这门语言。
1. Java 从哪里来?
Java 语言源于 1991 年 Sun 公司 James Gosling 领导的 Oak 项目,1995 年 Sun 公司正式起名为 Java。最初,他们想为家用电器设计一种能够跨平台运行的编程语言。
后来互联网兴起,Java 凭借"一次编写,到处运行"(Write Once, Run Anywhere)的特性,迅速成为 Web 开发的热门语言。再后来,它又稳稳地接住了企业级应用、大数据、Android 移动开发等一波又一波浪潮。
到了今天,Java 已经 30+ 岁了。在编程语言界,30 岁算是"高龄",但 Java 依然稳居 TIOBE 排行榜前三,是企业级后端开发的中坚力量。它不老,它只是成熟。
你可能会问:为什么 Java 能活这么久?答案藏在它的几个核心特点里。
2. Java 的三大法宝
2.1 跨平台:“一次编写,到处运行”
这是 Java 最响亮的口号。
在很多语言里,你在 Windows 上编译好的程序,拿到 Linux 或 macOS 上就跑不了了,得重新编译。但 Java 不同,你写好的代码编译成一种叫做 字节码(Bytecode) 的中间文件(.class 文件),然后由 Java 虚拟机(JVM) 来执行。
JVM 就像一位翻译官,它在 Windows 上就说 Windows 的话,在 Linux 上就说 Linux 的话,但你的字节码不用变。只要目标平台安装了对应的 JVM,你的程序就能跑起来。
打个比方:你写了一份中文说明书,翻译官把它翻译成英文给英国人看,翻译成日文给日本人看,但你那份原始中文说明书始终是同一份。这就是 Java 的跨平台魔法。
我们会在第 4 篇文章里详细拆解这个魔法。
2.2 面向对象:用"人的思维"去编程
在 Java 之前,很多语言是"面向过程"的,就像写一份流水账:先做 A,再做 B,再做 C。但现实世界是由"对象"组成的——你是一个对象,你的电脑是一个对象,你手里的水杯也是一个对象。
Java 鼓励你用"对象"来建模世界。比如你可以定义一个 Student 类,它有姓名、年龄、成绩这些属性,也有学习、考试这些行为。然后你可以创建多个学生对象,让他们各自行动。
这种思维方式更贴近人类认识世界的方式,也更容易组织大型项目。我们会花整整一个阶段(第三阶段)来深入理解它。
2.3 自动内存管理:不用自己操心"垃圾"
在早期的 C/C++ 里,程序员需要手动申请内存,用完还要手动释放。忘记释放会导致内存泄漏,提前释放又可能导致程序崩溃——这是很多 bug 的根源。
Java 引入了 垃圾回收(Garbage Collection,GC) 机制:JVM 会定期自动扫描,找出那些不再使用的对象,然后帮你回收它们占用的内存。你只需要专注于业务逻辑,不用整天提心吊胆地管理内存。
当然,GC 也不是万能的,我们以后会聊到它的调优,但起码在入门阶段,你可以安心地把这件事交给 Java 去处理。
3. Java 能做什么?
你可能听过"Java 什么都能做",这有点夸张,但也差不太多。具体来说,Java 的常见战场包括:
- 企业级后端开发:这是 Java 的绝对主力领域。银行、电商、物流、保险……无数大型系统的后端服务都是用 Java 写的,比如 Spring Boot 框架几乎成了行业标准。
- 大数据生态:Hadoop、Spark、Flink 等大数据框架的核心都是 Java 或基于 JVM 的语言(如 Scala)。
- Android 应用开发:虽然现在 Google 力推 Kotlin,但 Android 的底层和大量老项目仍然是 Java。
- 微服务与云原生:随着 JDK 的不断迭代,Java 在云环境下的启动速度和内存占用都有了巨大改善,依然是微服务架构的首选之一。
- 桌面应用:虽然不像以前那么流行,但像 IntelliJ IDEA、Eclipse 这些知名 IDE 都是 Java 写的。
可以说,只要你想做服务端的开发,Java 几乎是一张"安全牌":它稳定、成熟、生态丰富,也有海量的学习资源和社区支持。
当然,Java 也有它的"脾气":相比一些新兴语言,它的语法相对冗长,启动时的内存占用也更大。但正是这些"稳重"的代价,换来了企业级场景下的可靠性和可维护性。
4. 为什么我们选择 JDK 21?
JDK(Java Development Kit,Java 开发工具包)是编写 Java 程序的必备工具包,里面包含了编译器、运行时环境(JRE)和各种开发工具。它的版本号一直在更新:从最早的 1.0,到经典的 1.8(也就是 Java 8),再到后来的 Java 11、17……而我们这个系列将使用 JDK 21。
Java 8 是一个非常经典且稳定的版本,至今仍在大量生产环境中运行。但 JDK 21 作为新的 LTS 版本,引入了虚拟线程、模式匹配等能够显著提升开发效率的特性。我们选择 JDK 21,是为了让你一步到位掌握现代 Java 的最佳实践。
JDK 21 于 2023 年 9 月发布,是一个 LTS(长期支持)版本。Oracle 会为 LTS 版本提供至少数年的安全更新和 bug 修复,所以企业可以放心在生产环境中使用。
JDK 21 带来了很多激动人心的新特性,比如:
- 虚拟线程(Virtual Threads):一种轻量级的线程模型,能极大提升高并发应用的性能。
- 模式匹配(Pattern Matching):让
switch语句变得更加强大和优雅。 - 记录模式(Record Patterns):简化数据类的解构。
- 字符串模板(String Templates,预览):让字符串拼接更直观。
这些新特性会让你的 Java 代码写起来更简洁、更安全,也更带劲。我们会从基础语法一路讲到这些高级特性,保证你学完后,用的就是最现代、最前沿的 Java。
JDK 21 高度兼容绝大多数 Java 8 的代码,你可以平滑升级。我们站在 Java 8 的肩膀上,向更远处眺望。当然,Java 9 之后引入的模块化系统(JPMS)以及部分已移除的 API,可能会导致极少数老代码需要微调,我们会在后续文章中说明。
5. 这个系列会怎样带你走?
该系列规划了一条从"纯小白"到"项目实战"的学习路径,一共约 60 多篇文章,分为六个阶段:
| 阶段 | 主题 | 你将会收获 |
|---|---|---|
| 一 | 入门篇 —— 与Java的第一次握手 | 跑起第一个 Java 程序,理解 JVM 原理 |
| 二 | 基础篇 —— 夯实语法地基 | 掌握变量、运算符、流程控制、方法、数组等 |
| 三 | 核心篇 —— 面向对象编程 | 透彻理解类、继承、多态、接口、异常等 |
| 四 | 进阶篇 —— 常用API与工具 | 熟练使用集合、Stream、I/O、日期时间等 |
| 五 | 精通篇 —— JDK 21新特性与并发 | 掌握虚拟线程、模式匹配,写出高性能并发代码 |
| 六 | 实战篇 —— 项目驱动与生态拓展 | 用 Maven + Spring Boot 做出一个个人博客 |
┌───────────────────
│ Java 从入门到精通 · 知识地图
├───────────────────
│ 第一阶段:入门
│ ├── Java 的历史与生态
│ ├── JDK 21 安装与环境变量
│ ├── Hello, World! 与程序的骨架
│ ├── JVM、JRE、JDK 的奥秘
│ └── 第一个命令行小项目(名片生成器)
├───────────────────
│ 第二阶段:基础语法
│ ├── 变量与数据类型(基本类型 + 引用类型)
│ ├── 常量和字面量 + 枚举
│ ├── 运算符(算术、赋值、关系、逻辑、位)
│ ├── 流程控制(if-else、switch、循环)
│ ├── 方法(定义、调用、重载、递归)
│ ├── 数组(一维、多维、Arrays 工具类)
│ ├── String(不可变性、常用方法、StringBuilder、文本块)
│ ├── JDK 21 语法糖(var、文本块、Record、未命名变量)
│ └── 阶段实战:命令行计算器
├───────────────────
│ 第三阶段:面向对象编程
│ ├── 类与对象 + 构造方法
│ ├── 封装(private、getter/setter、JavaBean)
│ ├── 继承(extends、super、方法重写)
│ ├── 多态(向上转型、向下转型、instanceof)
│ ├── 抽象类(abstract、模板方法模式)
│ ├── 接口(interface、implements、默认方法、函数式接口)
│ ├── 内部类与静态嵌套类
│ ├── 枚举(带字段和方法、策略枚举)
│ ├── 异常处理(try-catch-finally、自定义异常、try-with-resources)
│ ├── Record(紧凑构造方法、Record Patterns)
│ ├── 包与导入(package、import、模块化)
│ └── 阶段实战:学生管理系统(OOP 版)
├───────────────────
│ 第四阶段:进阶
│ ├── 集合框架(List、Set、Map、Queue、Stream)
│ ├── 泛型(类型参数、通配符、类型擦除)
│ ├── I/O 流(字节流、字符流、NIO.2、Files 工具类)
│ ├── 日期时间(LocalDate、LocalDateTime、ZonedDateTime、Duration、Period)
│ ├── Lambda 表达式(函数式接口、方法引用)
│ ├── Stream API(中间操作、终止操作、Collectors、并行流)
│ ├── Optional(安全取值、orElse、map、flatMap)
│ ├── 反射(Class、Field、Method、Constructor)
│ ├── 注解(内置注解、自定义、元注解、反射读取)
│ └── 阶段实战:图书管理系统
├───────────────────
│ 第五阶段:精通与并发
│ ├── 线程基础(创建、生命周期、状态)
│ ├── synchronized 与 ReentrantLock(锁机制)
│ ├── wait/notify 与 Condition(线程协作)
│ ├── JUC 工具(线程池、BlockingQueue、CountDownLatch、Fork/Join)
│ ├── JMM 与 volatile(可见性、有序性)
│ ├── 并发容器与原子类(ConcurrentHashMap、AtomicInteger、LongAdder)
│ ├── 虚拟线程(Virtual Threads、结构化并发、ScopedValue)
│ ├── 模式匹配(instanceof、switch、Record Patterns、穷尽性)
│ ├── JDK 21 全景(15个JEP一览)
│ ├── 网络编程(Socket、ServerSocket、HttpClient)
│ └── 阶段实战:高并发聊天室
├───────────────────
│ 第六阶段:实战与生态
│ ├── Maven(pom.xml、依赖管理、生命周期)
│ ├── JUnit 5(测试注解、断言、参数化测试、覆盖率)
│ ├── 日志框架(SLF4J + Logback)
│ ├── JDBC(连接、PreparedStatement、事务、连接池)
│ ├── Spring Boot 入门(自动配置、起步依赖、REST API)
│ ├── 个人博客项目(上): 设计、实体、Repository
│ ├── 个人博客项目(下): Service、Controller、Thymeleaf、Security
└───────────────────
每一篇文章都会尽量做到:
- 由浅入深:先讲"是什么",再讲"为什么",最后讲"怎么用";
- 前后连贯:新知识会尽量关联前面讲过的内容,让你不断巩固;
- 代码 + 注释:每个示例都会配上清晰的注释,不怕你看不懂;
这不是一本"语法手册"。每个概念都配了代码示例,每个阶段都有实战项目——命令行计算器、学生管理系统、图书管理系统、高并发聊天室、个人博客……你写的每一行代码,都会变成真正能运行的东西。
6. 从 C 到 Java:你已有的基础不会浪费
如果你读完了本博主的 C语言:从入门到精通 系列,恭喜你——你已经拥有了学 Java 最好的一块踏板。你可能会感到惊喜:
- C 中的
struct,在 Java 里变成了类(class),但理念高度一致:封装数据、定义行为。 - C 中的指针和内存管理,让你能深刻理解 Java 的引用是什么,以及垃圾回收到底回收了什么。
- C 中的函数指针概念,在 Java 中通过函数式接口和 Lambda 表达式得到了更安全、更类型化的实现。
- C 中的系统调用和多线程,让你在学 Java 的并发编程时,不只是会用线程池,还能想象到操作系统那层在发生什么。
Java 把 C 语言中容易出错的"危险动作"包装成了更安全的抽象,但底层思想是相通的。你的 C 语言功底不会白费,它恰恰是你比纯 Java 初学者理解更深的那一层。
学 C 语言是为了向下理解计算机,学 Java 是为了向上理解软件工程。两者合在一起,就是一个完整的视角。
7. 写在最后
学习编程不是一蹴而就的事。你可能今天看完一篇文章觉得"我懂了",但明天写代码时又卡住了。这太正常了,我自己也是这样过来的。
重要的是坚持,而不是速度。 哪怕每天只弄懂一个小概念,三个月后你回头看,也会发现自己已经走了很远。
另外,一定要动手。看代码和写代码是完全两回事。每一篇文章末尾我都会留一个"动手试试"的小练习,请你一定打开电脑敲一遍,哪怕照抄也行,手指的记忆比大脑更可靠。
今天的总结
我们聊了 Java 的出身、跨平台原理、面向对象思想、垃圾回收机制,也知道了 Java 能用在哪些领域,以及为什么选择 JDK 21。最后还预览了本系列的完整路线图。
现在还不需要你记住所有细节,只要有一个大概的印象就好。就像认识新朋友,第一次见面不必了解他的全部人生,知道他的名字和职业,就够了。
下篇文章,我们会正式开始动手:安装 JDK 21 和开发工具(IntelliJ IDEA 与 VS Code 对比推荐),让你的电脑准备好迎接 Java 的世界。
动手试试
- 在网上搜索"Java 历史"或"James Gosling",看一看 Java 早期开发的一些有趣故事,增加一点对这门语言的"亲切感"。
- 想一想你最终想用 Java 做什么?是做网站后端?还是学大数据?还是只是为了应付考试?把这个目标写下来,贴在你能看到的地方,它会成为你坚持下去的小动力。
我们下一篇见。😃
📌 获取本系列示例代码请访问 GitCode。
&spm=1001.2101.3001.5002&articleId=162522336&d=1&t=3&u=ea16aff39f384fa98269826e4082d444)
1万+

被折叠的 条评论
为什么被折叠?



