Java 中的常见概念

Java 中的常见概念

Claude Opus 5.5(High)#

一、Java 代码是怎么跑起来的#

Text
Hello.java  --javac 编译-->  Hello.class(字节码)  --java 命令-->  JVM 执行
  • 源代码(.java):你写的代码。
  • javac:编译器。它不会把代码编译成 Windows 或 Mac 能直接运行的机器码,而是编译成一种中间格式。
  • 字节码(.class):就是这种中间格式,是写给"虚拟的机器"看的指令。
  • JVM(Java 虚拟机):读取字节码并执行。Windows、Mac、Linux 各有一份自己的 JVM,同一份 .class 文件放到哪里都能跑。这就是 Java 常说的"一次编写,到处运行"。
  • JIT(即时编译器):JVM 内部的组件。它会把频繁执行的"热点"代码当场编译成本机机器码,所以 Java 虽然经过一层虚拟机,速度并不慢。
  • GC(垃圾回收):也是 JVM 的工作,自动回收不再使用的对象。所以 Java 不需要像 C 那样手动 free 内存。

二、你装到电脑上的东西#

  • JVM:只负责执行字节码,单独存在没有意义。
  • JRE:JVM 加上核心类库(String、ArrayList 这些现成的类),是运行 Java 程序所需的最小集合。
  • JDK:JRE 再加上开发工具(javac 编译器、jar 打包工具、调试器等),写 Java 的人装的就是它。

有一点要注意:从 Java 11 起,官方不再单独提供 JRE 下载,现在直接装 JDK 就行。很多教程还在讲"JRE 和 JDK 选哪个",那是老黄历了。

几个装完 JDK 后会碰到的东西:

  • JAVA_HOME:一个环境变量,指向 JDK 的安装目录,Maven、IDE 等工具靠它找到 JDK。
  • classpath:告诉 JVM 去哪里找 .class 文件和依赖库。
  • JAR:把一堆 .class 文件打包成一个文件,本质上是个 zip。

三、"Java"这个名字本身#

  • Java SE:标准版,也就是平时说的"Java",包括语言本身、核心类库和 JVM。JDK 实现的就是它。
  • Java EE → Jakarta EE:企业版,是一套写服务器端程序的规范(Servlet、JPA 等)。后来 Oracle 把它交给了 Eclipse 基金会,改名 Jakarta EE。Spring 是另一套独立的生态,但会用到其中不少规范。
  • Java ME:嵌入式和老式手机用的版本,现在基本见不到了。
  • OpenJDK 和 Oracle JDK:OpenJDK 是开源的官方实现,Oracle JDK、Eclipse Temurin、Amazon Corretto、阿里 Dragonwell 等发行版大多基于它构建,用起来几乎没区别,主要差在授权条款和技术支持上。个人学习推荐 Temurin。
  • 版本号和 LTS:Java 每半年发一个新版本,其中部分是长期支持版(LTS):8、11、17、21、25。学习和生产环境都建议用 LTS,新项目选 21 或 25 都可以。
  • Maven / Gradle:构建工具,负责下载依赖、编译、打包。不属于 Java 本身,但几乎每个项目都会用到其中一个。

一句话串起来:你装的是 JDK,用里面的 javac 把 .java 编译成字节码,再由 JVM 执行;"Java SE"是这一整套东西的规范名称,OpenJDK 是它的实现。

最后留个小问题帮你检验一下:假设你写好了一个程序,想发给一个从来没碰过 Java 的朋友运行,他的电脑上最少需要装什么?为什么只发 .class 文件,他在 Mac 上和你在 Windows 上都能跑?

键盘快捷键

全站

CtrlK
搜索
/
搜索
?
显示快捷键
Esc
关闭弹窗、退出模式

阅读文章

T
目录
F
专注模式
A
批注模式

批注模式

P
笔
H
荧光笔
L
激光笔
E
橡皮擦
1–6
切换颜色
Shift
按住拖动画直线
CtrlZ
撤销
CtrlShiftZ
重做