简介
本全面教程为开发者提供了直接从终端运行 Java 程序的基本知识。通过理解通过命令行界面编译和执行 Java 应用程序的基本步骤,程序员可以提升他们的技术技能并改进开发工作流程。
Java 运行时基础
什么是 Java 运行时环境(JRE)?
Java 运行时环境(JRE)是一个至关重要的软件包,它使计算机能够运行 Java 应用程序。它提供了运行 Java 程序所需的运行时库、Java 虚拟机(JVM)和其他组件。
Java 运行时的关键组件
Java 虚拟机(JVM)
JVM 是 Java 运行时的核心组件,用于解释和执行 Java 字节码。它提供了:
- 平台独立性
- 内存管理
- 安全特性
graph TD
A[Java 源代码] --> B[Java 编译器]
B --> C[字节码]
C --> D[JVM]
D --> E[机器码执行]
运行时库
Java 提供了一套全面的标准库,支持各种编程任务:
| 库类别 | 用途 |
|---|---|
| java.lang | 核心语言功能 |
| java.util | 实用类和数据结构 |
| java.io | 输入/输出操作 |
| java.net | 网络编程 |
在 Ubuntu 上安装 JRE
要在 Ubuntu 22.04 上安装 Java 运行时环境,请使用以下命令:
sudo apt update
sudo apt install default-jre
验证 Java 安装
安装后,验证 Java 版本:
java --version
运行时环境配置
JAVA_HOME 环境变量
设置 JAVA_HOME 环境变量有助于应用程序找到 Java 安装位置:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
性能和资源管理
JRE 动态管理系统资源,包括:
- 内存分配
- 垃圾回收
- 线程管理
LabEx 学习提示
在 LabEx,我们建议通过实践练习来掌握 Java 运行时概念,以便扎实理解 Java 应用程序是如何执行的。
编译 Java 程序
理解 Java 编译过程
Java 编译将人类可读的源代码转换为机器可执行的字节码。此过程涉及将 .java 文件转换为可在 Java 虚拟机上运行的 .class 文件。
Java 编译器(javac)
Java 编译器 javac 是用于转换源代码的关键工具:
graph LR
A[Java 源代码.java] --> B[Java 编译器 javac]
B --> C[字节码.class]
基本编译步骤
1. 编写 Java 源代码
创建一个简单的 Java 程序 HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Welcome to LabEx Java Tutorial!");
}
}
2. 编译程序
使用 javac 编译 Java 源文件:
javac HelloWorld.java
编译选项
| 选项 | 描述 |
|---|---|
-d |
指定类文件的目标目录 |
-classpath |
设置类路径 |
-source |
指定 Java 源版本 |
-target |
指定 Java 目标版本 |
高级编译技术
编译多个文件
javac *.java
指定类路径
javac -classpath./libs HelloWorld.java
常见编译错误
语法错误
- 缺少分号
- 方法声明不正确
- 类型不匹配
编译工作流程
graph TD
A[编写源代码] --> B{语法正确?}
B -->|是| C[使用 javac 编译]
B -->|否| D[修复错误]
C --> E[生成.class 文件]
最佳实践
- 使用有意义的变量和类名
- 处理编译警告
- 保持源代码组织有序
- 使用一致的缩进
LabEx 建议
在 LabEx 的交互式 Java 编程环境中练习编译技术,以建立扎实的基础技能。
运行 Java 应用程序
Java 执行基础
Java 应用程序使用 java 命令来执行,该命令会启动 Java 虚拟机(JVM)并运行已编译的字节码。
运行简单的 Java 程序
基本执行命令
java ClassName
执行示例
## 首先编译程序
javac HelloWorld.java
## 运行已编译的程序
java HelloWorld
执行工作流程
graph TD
A[已编译的.class 文件] --> B[Java 命令]
B --> C[JVM 加载字节码]
C --> D[字节码解释]
D --> E[程序执行]
高级执行技术
类路径管理
| 场景 | 命令示例 |
|---|---|
| 本地目录 | java -cp. MainClass |
| 多个目录 | java -cp./src:./libs MainClass |
| JAR 文件 | java -cp application.jar MainClass |
传递参数
java ClassName arg1 arg2 arg3
处理异常和调试
常见执行标志
| 标志 | 用途 |
|---|---|
-verbose |
详细的运行时信息 |
-Xms |
初始堆内存 |
-Xmx |
最大堆内存 |
-ea |
启用断言 |
性能优化
graph LR
A[Java 执行] --> B{性能调优}
B --> C[内存配置]
B --> D[垃圾回收]
B --> E[即时编译]
处理大型应用程序
运行 JAR 文件
java -jar application.jar
最佳实践
- 验证 Java 安装
- 使用适当的类路径
- 处理运行时异常
- 监控内存使用情况
LabEx 学习提示
在 LabEx 的交互式 Java 编程环境中探索各种执行场景,以掌握应用程序执行技术。
总结
对于开发者而言,掌握从终端执行 Java 程序是一项至关重要的技能。通过学习如何编译 Java 源文件、管理类路径以及使用命令行工具运行应用程序,程序员能够在不同环境中高效地开发、测试和部署 Java 应用程序。



