Skip to content

运行JAVA

JAVA的运行分为编译阶段和运行阶段

基本概念

角色全称作用
JDKJava Development Kit开发工具包(含 Javac)
JREJava Runtime Environment运行环境(含库文件)
JVMJava Virtual Machine虚拟机(核心引擎)

image-20260310134220450

JAVA的跨平台运行主要就是通过JVM去运行代码。不同平台拥有不同的JVM。

JVM会把字节码文件翻译成机器码文件让OS去运行

编译

sh
javac HelloWorld.java

当你执行 javac HelloWorld.java 命令时,生成 HelloWorld.class 文件(即字节码文件)。

Javac 将人类能读懂的 Java 代码翻译成了 JVM(Java 虚拟机) 能读懂的中间指令

运行

sh
java HelloWorld

类加载 (Class Loader):JVM 把 .class 文件加载到内存中。

字节码校验:JVM 会检查代码是否安全、是否符合规范。

解释与 JIT 编译

  • 解释执行:JVM 的解释器逐行读取字节码并翻译成当前操作系统的机器指令。
  • JIT (Just-In-Time) 编译:这是 Java 快的秘诀。对于经常执行的热点代码,JVM 会直接把它编译成原生机器码并缓存起来,下次直接跑,速度接近 C++。

硬件执行:CPU 最终执行这些机器指令,屏幕上打出 Hello World

为什么 Java 运行命令不带后缀?

  • 编译时:javac HelloWorld.java(针对的是文件
  • 运行时:java HelloWorld(针对的是类名

这是因为 JVM 在运行时会自动去 classpath(也就是你的 target/classes)里寻找名为 HelloWorld 的类文件。

classpath

classpathJava 中的“类路径”,表示 JVM 或编译器查找 .class 文件和资源文件的路径集合

classpath是给classloader指路的:JVM启动classloaderclassloader通过classpath寻找class文件

当 Java 程序需要加载类时:

sh
java com.example.Main

JVM 会在 classpath 指定的路径中寻找:

com/example/Main.class

如果 没有显式设置 classpath,Java 仍然可以运行,因为 JVM 有默认的 classpath

默认情况下classpath就是运行java命令的当前目录

显式设置classpath

java -cp classes:lib/mysql.jar Main
  • Linux / Mac 用 :

  • Windows 用 ;

运行Java

命令含义
java -cp指定 classpath 运行类
java -jar直接运行 jar 应用
java -cp app.jar com.test.Main
java -jar app.jar