Java 程序是怎么运行的?

Java 程序是怎么运行的?

💡 原文中文,约4900字,阅读约需12分钟。
📝

内容提要

文章讲解Java程序运行流程:安装JDK 8并配置环境变量,编写HelloWorld源码,用javac编译为class字节码,再由java命令交由JVM执行。JVM针对不同平台适配,实现Java“一次编写,到处运行”的跨平台特性。

🔎

延伸解读

为什么选择 JDK 8:稳定与普遍性的权衡

文章建议选择 JDK 8,并给出了技术选型的通用思路:稳定性和普遍性。稳定性指技术经过测试和实践检验,bug 较少;普遍性指被广泛使用,社区活跃,遇到问题容易找到答案。JDK 8 是 Oracle 2014 年推出的长期支持版本,经过多次更新,被各大互联网企业广泛采用,且新增了函数式编程等特性。对于学习者而言,基于 JDK 8 学习可以降低未来工作中的学习成本。

从源码到运行:编译与执行的两步走

Java 程序不能直接运行 .java 源码,必须先编译成 .class 字节码文件。文章演示了使用 javac 命令编译 HelloWorld.java,生成 HelloWorld.class,再通过 java 命令执行。编译过程中常见的错误如缺少分号,可以根据提示快速定位。执行时,java 命令将字节码传输给 JVM,JVM 合并字节码和 JRE 库文件,输出特定硬件平台的机器码,最终由底层硬件执行。

JVM 的不跨平台如何成就 Java 的跨平台

文章指出,Java 的“一次编写,到处运行”依赖于 JVM 的适配。不同硬件平台接收的指令集差异很大,JVM 针对不同操作系统进行适配,将统一的字节码转换为对应平台的机器码。因此,同一个 HelloWorld.class 在 macOS、Linux 或 Windows 上都能通过 java 命令得到相同结果。这也解释了为什么下载 JDK 需要区分操作系统版本。

❓

Q&A

Java 程序从源码到运行需要经过哪些步骤?

首先用 javac 命令将 .java 源码编译成 .class 字节码文件,然后用 java 命令执行该字节码文件,JVM 会合并字节码和 JRE 库文件,输出机器码,最终由硬件执行。

为什么推荐使用 JDK 8 来学习 Java?

JDK 8 是长期支持版本,经过多次更新非常稳定,被各大互联网企业广泛使用,新增的函数式编程等特性受欢迎,且公司招聘大概率要求 JDK 8,学习后工作无额外成本。

Java 是如何实现“一次编写,到处运行”的?

Java 源码编译成统一的 .class 字节码文件,该文件不依赖具体平台。不同平台上的 JVM 负责将字节码适配为本地机器码,因此同一 class 文件可在 Mac、Linux、Windows 等系统上运行。

配置 JDK 环境变量的目的是什么?

让 Java 相关的指令(如 javac、java)能被计算机识别,方便在任意目录下运行 Java 程序。

在 Java 的 HelloWorld 程序中,main 方法为什么必须声明为 public static void?

public 表示访问权限公开,static 使 main 方法无需实例化即可被类直接引用,void 表示无返回值。这是 JVM 执行 Java 程序的入口方法的标准签名。

编译 Java 源码时提示缺少分号,该如何解决?

Java 每行代码都必须以分号结尾,检查代码并在缺少分号的行末加上分号,然后重新执行 javac 命令即可。

🏷️

标签

➡️

继续阅读