Java

Java 是一门静态类型、面向对象、以 JVM 为中心的工业级语言;核心价值是可移植运行模型、强类型与成熟后端/企业生态,适合长期维护的服务与跨平台应用。

#type / resource #status / growing #tech / dev #resource / java

[!info] 关联笔记

Java

这个概念为什么出现

在选语言与开学习路径之前,需要先钉死对象边界:Java 解决什么工程问题、默认适合什么负载、何时不该硬上。没有这篇定位,后面的语法与框架笔记容易变成无目的的清单。

Java 是一门静态类型、以类与接口为中心的面向对象语言,程序通常编译为字节码,在 JVM(Java Virtual Machine) 上执行。语言规范(Java Language Specification)与 JVM 规范分层:学语言时要分清「规范保证什么」和「HotSpot 等实现当前怎么做」。

[!abstract] 对象定位 本篇只回答「Java 是什么、适合什么、选择边界在哪里」。
平台动机见 Java 的起源与平台哲学;从零到可交付服务的顺序、阶段目标与逐篇目录见 Java 学习路线 MOC。本篇不是语法教程。

这是什么

可先抓这些稳定特征:

  • 静态类型,编译期发现大量类型错误
  • class / interface / 继承与多态 组织领域模型;接口也可承载契约与默认方法
  • 引用类型可空null)是历史主模型;Optional 是标准库层表达,不是语言级消灭 null
  • 异常是一等控制流机制:受检异常(checked)与非受检异常并存
  • 内存由 GC 管理;并发主线是 Thread + JMM + java.util.concurrent,不是协程内置原语
  • 工具链中心是 JDKjavac / java / 模块与类路径)+ 主流构建系统 Maven / Gradle
  • 生态重心:后端服务、Android(历史与仍存)、大数据与中间件、企业信息系统

核心词汇:classinterfacepackagestaticfinalnullObjectequals/hashCode、泛型擦除、try-with-resourcessynchronizedExecutorService、classpath / module path。

导航:学习路线与阶段 MOC

系统学习请以路线图为准,不要只在本页零散跳转。

入口作用
Java 学习路线 MOC七阶段依赖、完成标准、逐篇目录
Java MOC主题总导航与分栏索引

阶段与子 MOC

阶段目标子 MOC
一 基本认知平台边界、JDK、程序骨架、基本类型、控制流、方法语言基础 · 工具链与构建
二 数据与类型数组/字符串、类与对象、继承多态、接口、equals、泛型入门类型系统与 OOP
三 错误与资源异常模型、try-with-resources、IO 抽象标准库 · 路线阶段三
四 并发线程、同步、JUC、线程池、CompletableFuture、JMM并发
五 工程化类路径/模块、Maven/Gradle、JUnit、日志配置、分层工具链 · 测试质量 · 服务工程
六 运行时与进阶类加载与字节码、内存与 GC、反射、注解处理JVM 与运行时
七 真实项目CLI、HTTP、JSON、JDBC、可选 SpringWeb 后端 · 数据访问 · 服务工程

适合什么

  • 需要长期维护的业务服务、企业信息系统、中台与内部平台
  • 团队依赖成熟类型系统、重构工具与静态检查
  • 需要跨操作系统部署,接受「一次编译、目标 JVM 运行」的交付模型
  • 要接入 Java 生态中间件(消息、ORM、监控、应用服务器/嵌入式容器)
  • 需要与既有 Java/Spring/Android/大数据栈协作

不适合什么 / 选择边界

  • 极致启动延迟与极小静态二进制(对比部分 Go/Rust 场景)时,Java 默认不是第一选择
  • 以脚本化交互、快速数值探索为主时,Python 等往往更合适
  • 需要语言内置轻量协程作为主并发模型时,要认清 Java 主线长期是线程 + 异步库;虚拟线程(Project Loom)改变了成本曲线,但仍要按版本与语义学习
  • 「只会 Spring 注解」不等于会 Java:框架不能替代类型、异常、并发与 JVM 心智

与相邻语言的粗边界

维度JavaGo(对照)
抽象主线类/接口/继承 + 组合struct + 隐式接口 + 组合
错误模型异常(含 checked)error
并发主线Thread / JUC /(较新)虚拟线程goroutine / channel / context
空值引用默认可 null多种 nil 形态 + 零值
交付物字节码 + JVM/原生镜像可选常为单二进制
构建Maven/Gradle 为中心统一 go 工具链

更细对比应在后续 synthesis 笔记展开,不要在本页写成语言战争。

版本与资料基线

  • 学习默认以 当前 LTS 语义 为主(撰写时常见 LTS:11 / 17 / 21;具体发行版以本机 java -version 为准)
  • 规范入口:Java SE Documentation · Java Language Specification
  • 实现与发行:OpenJDK / Eclipse Temurin 等;发行版 ≠ 语言规范

本节总结

  • Java = 语言规范 + 标准库 + JVM 执行模型 + 成熟工程生态
  • 先建立「类型、对象、异常、并发、工具链」主线,再进入 Web 框架
  • 系统路径以 学习路线 为准;本页只做对象定位

自测题

  1. 为什么说「会 Spring」不等于「会 Java」?
  2. 学 Java 时为什么要区分 JLS 与 JVM 实现?
  3. 若目标是极小静态二进制 CLI,Java 默认是否最优?
参考答案
  1. Spring 解决的是应用装配与生态集成;语言层的类型、异常、集合、并发与 JVM 行为仍是排障与设计的基础。
  2. JLS 规定语言语义;GC 细节、JIT、部分性能行为属于实现,不能写成语言永久承诺。
  3. 通常不是;该场景常更倾向 Go/Rust 等,除非团队与生态绑定 Java。

延伸阅读与资料来源

资料类型支撑内容
Java SE Documentation官方文档平台与 API 总入口
Java Language Specification规范语言语义权威来源
OpenJDK实现/社区开放实现与项目入口
JEP Index增强提案版本特性演进
创建于 2026/7/15 更新于 2026/7/15