Oracle JDK快速入门介绍 – wiki基地


Oracle JDK 快速入门介绍:从零开始掌握 Java 开发基石

Java 语言自诞生以来,凭借其“一次编写,到处运行”的特性、强大的生态系统和广泛的应用领域,成为了软件开发领域最受欢迎的语言之一。无论是企业级应用、Android 开发、大数据处理还是 Web 后端服务,Java 都扮演着举足轻重的角色。而要进行 Java 开发,我们就离不开 Java 开发工具包(JDK)。

在众多 JDK 实现中,Oracle JDK 作为 Java 平台的“官方”实现,拥有最悠久的历史、最成熟的技术积累以及最广泛的用户群体(尽管近年来 OpenJDK 的地位日益重要)。对于初学者而言,理解和掌握 Oracle JDK 是迈入 Java 世界的第一步,也是至关重要的一步。

本文将为您提供一份 Oracle JDK 的快速入门指南,旨在帮助完全没有接触过 Java 或 JDK 的读者,从零开始了解 JDK 是什么、为什么选择 Oracle JDK、如何安装、如何配置以及如何编写并运行您的第一个 Java 程序。我们将深入浅出地探讨 JDK、JRE、JVM 之间的关系,并引导您完成必要的环境搭建步骤。

文章目录

  1. Java 语言与 JDK 的关系:为什么需要 JDK?
    • 什么是 Java 语言?
    • 什么是 JDK?它包含什么?
    • JDK、JRE、JVM 的三角关系
  2. 为什么选择 Oracle JDK?
    • Oracle JDK 的历史与地位
    • 技术优势与特性(HotSpot JVM)
    • 长期支持(LTS)版本的重要性
    • 关于 Oracle JDK 的许可变化
  3. 获取与安装 Oracle JDK
    • 从官方渠道下载
    • 选择合适的版本(LTS 版本推荐)
    • Windows 系统安装指南
    • macOS 系统安装指南
    • Linux 系统安装指南
  4. 配置环境变量:让系统找到 Java
    • 为什么需要配置环境变量?
    • JAVA_HOME 环境变量的设置
    • Path 环境变量的设置
    • 验证配置是否成功
  5. 编写您的第一个 Java 程序:“Hello, World!”
    • 准备工作:文本编辑器
    • 编写 Java 源代码
    • 理解代码结构:类、main 方法、输出语句
  6. 编译与运行 Java 程序
    • 使用 javac 命令编译
    • 理解字节码文件(.class)
    • 使用 java 命令运行
    • 命令行操作示例
  7. 常见问题与初步故障排除
    • 找不到 javacjava 命令 (环境变量问题)
    • 编译错误 (语法错误)
    • 运行错误 (找不到类、主方法问题)
    • CLASSPATH 的概念初探
  8. 超越“Hello, World!”:下一步的学习方向
    • 学习 Java 语法基础
    • 使用集成开发环境 (IDE)
    • 了解 Java 标准库 (API)
    • 深入学习 JVM
    • 了解构建工具 (Maven/Gradle)
  9. 总结

1. Java 语言与 JDK 的关系:为什么需要 JDK?

在开始 Oracle JDK 的旅程之前,我们首先需要理解 Java 语言本身以及 JDK 在整个 Java 生态系统中的角色。

什么是 Java 语言?

Java 是一种高级的、面向对象的编程语言,由 Sun Microsystems (现为 Oracle 公司) 于 1995 年发布。它的设计理念是“Write Once, Run Anywhere”(一次编写,到处运行),这意味着您用 Java 编写的代码可以在任何支持 Java 的平台上运行,无需重新编译。这得益于 Java 的核心机制:编译成字节码并在 Java 虚拟机 (JVM) 上执行。

什么是 JDK?它包含什么?

JDK 全称是 Java Development Kit,即 Java 开发工具包。它是进行 Java 开发所必需的全套工具。您可以把它想象成一个包含所有必要的锤子、锯子、螺丝刀等工具箱,让您可以从无到有地建造一个 Java 应用程序。

一个典型的 JDK 包含以下主要组件:

  • Java Runtime Environment (JRE): Java 运行时环境。这是运行 Java 程序所必需的环境。后面我们会详细解释。
  • Compiler (javac): Java 编译器。它负责将您编写的 Java 源代码文件(.java 文件)翻译成 Java 字节码文件(.class 文件)。这个字节码文件是平台独立的。
  • Debugger (jdb): 调试工具。用于查找和修复程序中的错误。
  • Archiver (jar): 打包工具。用于将多个 .class 文件、资源文件等打包成一个 .jar (Java Archive) 文件,方便分发和部署。
  • Documentation Generator (javadoc): 文档生成器。可以根据您在代码中添加的特定注释生成 API 文档。
  • Other Tools: 还包括性能监控工具、安全工具、文件签名工具等等。

简单来说,如果您只想运行一个已有的 Java 程序,只需要 JRE 即可。但如果您想编写、编译和运行自己的 Java 程序,那么 JDK 是必不可少的,因为它包含了 JRE 以及额外的开发工具。

JDK、JRE、JVM 的三角关系

这三个概念常常让初学者感到困惑,但它们的层次关系其实非常清晰:

  • JVM (Java Virtual Machine): Java 虚拟机。这是 Java 平台的核心。JVM 是一个规范,也是一个软件实现,它负责解释执行 Java 字节码(.class 文件)。不同平台的 JVM 实现方式可能不同,但它们都遵守相同的字节码规范,这使得 Java 具有跨平台性。JVM 就像一个“虚拟处理器”,知道如何读取和执行字节码指令。
  • JRE (Java Runtime Environment): Java 运行时环境。JRE 是运行 Java 应用程序所需的最低限度环境。它包含 JVM 以及 Java 核心类库(Java API),这些类库提供了 Java 程序所需的基本功能,例如输入输出、网络通信、数据结构等。如果您只关心运行 Java 程序,安装 JRE 就足够了。
  • JDK (Java Development Kit): Java 开发工具包。JDK 是 Java 开发人员所需的完整工具包。它包含了 JRE,并且还包含了用于编译、调试、打包等开发工具。

关系总结:

JDK = JRE + 开发工具
JRE = JVM + Java 核心类库

所以,JDK 是最大的一个集合,它包含了 JRE,而 JRE 包含了 JVM 和核心类库。进行 Java 开发,您必须安装 JDK。

2. 为什么选择 Oracle JDK?

市面上有多种 JDK 的实现,其中最主要的两种是 Oracle JDK 和 OpenJDK。那么,为什么我们通常会从 Oracle JDK 开始了解呢?

Oracle JDK 的历史与地位

Oracle JDK 是 Sun Microsystems (Java 的原始创造者) 最初发布的 JDK 实现,在 Sun 被 Oracle 收购后,Oracle JDK 成为了 Java SE (Standard Edition) 平台的官方参考实现。长期以来,它是绝大多数 Java 开发者的首选,因为它被认为是性能最稳定、功能最全面的 JDK。虽然 OpenJDK 是一个开源项目,是 Java 标准的另一个重要实现,但 Oracle JDK 在很长一段时间内都扮演着事实上的标准角色。

技术优势与特性 (HotSpot JVM)

Oracle JDK 最著名的组件之一是 HotSpot JVM。HotSpot JVM 是一个高性能的 Java 虚拟机,它使用先进的技术,如即时编译 (Just-In-Time Compilation, JIT) 和自适应优化,来显著提高 Java 程序的执行速度。它能够“观察”程序的运行模式,将频繁执行的字节码编译成本地机器码,并进行各种性能优化。Oracle JDK 中的 HotSpot JVM 通常被认为是性能调优最充分、最成熟的 JVM 实现之一。

此外,Oracle JDK 通常会包含一些 Oracle 特有的工具和功能,尽管随着 OpenJDK 的发展,许多特性也被贡献回了 OpenJDK。

长期支持 (LTS) 版本的重要性

Oracle 遵循一个版本发布周期,并会提供长期支持 (LTS) 版本。LTS 版本意味着 Oracle 会在较长的时间内(通常是几年)为该版本提供更新和安全补丁。对于企业级应用或需要长期稳定运行的项目来说,选择一个 LTS 版本的 Oracle JDK 是非常重要的,可以确保您的应用程序在稳定且安全的环境中运行。常见的 LTS 版本包括 Java 8, Java 11, Java 17, Java 21 等。对于初学者,建议从最新的 LTS 版本开始。

关于 Oracle JDK 的许可变化

这是一个需要注意的重要点。过去,Oracle JDK 在大多数情况下是免费使用的,包括商业用途。但从 Java 11 版本开始,Oracle 修改了其 JDK 的许可模式。

  • 对于开发、测试、个人使用、教育用途以及某些被授权的产品中嵌入使用,Oracle JDK 仍然是免费的。 这意味着对于绝大多数初学者和开发者个人来说,下载和使用 Oracle JDK 进行学习和开发是完全没有问题的。
  • 对于商业部署和生产环境中的使用,可能需要购买商业许可证。

因此,在商业环境中部署使用 Oracle JDK 之前,务必查阅 Oracle 官方的许可协议,了解具体的使用条款。如果您担心许可问题,或者您的使用场景不确定是否免费,可以考虑使用 OpenJDK 的其他发行版,如 Adoptium (Temurin)、Amazon Corretto、Microsoft Build of OpenJDK 等,它们通常基于 GPL 开源协议,对商业使用更加友好。

总结来说,选择 Oracle JDK 的理由可能是:

  • 它是官方实现,拥有最成熟的 HotSpot JVM。
  • 它是许多教程和资料默认使用的 JDK。
  • 对于个人学习和开发来说,它是免费且功能完整的。

考虑到许可问题,对于初学者,Oracle JDK 是一个很好的起点,但了解 OpenJDK 的存在及其许可优势也非常重要。

3. 获取与安装 Oracle JDK

现在,我们进入实践环节:如何获取并安装 Oracle JDK。

从官方渠道下载

获取 Oracle JDK 的唯一官方渠道是 Oracle 官方网站https://www.oracle.com/java/technologies/javase-downloads.html

请务必从官方网站下载,以避免潜在的安全风险或非法分发版本。在下载时,您可能需要注册或登录一个 Oracle 账号。

选择合适的版本 (LTS 版本推荐)

如前所述,建议初学者从最新的 LTS (Long-Term Support) 版本开始,例如 Java 17 或 Java 21。LTS 版本意味着您可以获得更长时间的支持和更新。非 LTS 版本 (如 Java 18, 19, 20等) 每六个月发布一次,功能更新快,但支持周期短,更适合尝鲜或特定需求。

在下载页面,您会看到不同版本的 Java SE (Standard Edition) Development Kit。选择您需要的版本,然后找到适合您操作系统的安装包类型。

安装指南 (按操作系统分类)

安装过程因操作系统而异,但总体流程相似:下载安装包,运行安装程序,按照提示进行。

  • Windows 系统安装指南:

    1. 访问 Oracle Java Downloads 页面。
    2. 找到您想安装的 Java SE 版本 (例如 Java 17)。
    3. 在下载列表中找到 Windows 部分,选择适合您系统的安装程序,通常是 x64 Installer (.exe 文件)。
    4. 下载 .exe 安装文件。
    5. 找到下载的文件并双击运行。
    6. 用户账户控制 (UAC) 提示时,点击“是”。
    7. 安装向导启动。点击“下一步”。
    8. 选择安装路径。默认路径通常是 C:\Program Files\Java\。您可以更改,但请记住安装路径。点击“下一步”。
    9. 安装程序会复制文件。等待安装完成。
    10. 安装成功后,可能会提示您已成功安装。点击“关闭”。
  • macOS 系统安装指南:

    1. 访问 Oracle Java Downloads 页面。
    2. 找到您想安装的 Java SE 版本 (例如 Java 17)。
    3. 在下载列表中找到 macOS 部分,选择适合您芯片架构的安装程序,通常是 x64 DMG Installer (Intel 芯片) 或 aarch64 DMG Installer (Apple Silicon 芯片)。
    4. 下载 .dmg 安装文件。
    5. 打开下载的 .dmg 文件,会挂载一个虚拟磁盘。
    6. 双击打开虚拟磁盘中的 JDK 安装包 (.pkg 文件)。
    7. 安装向导启动。点击“继续”。
    8. 阅读许可协议,点击“继续”,然后点击“同意”。
    9. 选择安装位置 (通常只能安装在系统默认位置 /Library/Java/JavaVirtualMachines/)。点击“安装”。
    10. 输入您的管理员密码以授权安装。
    11. 等待安装完成。
    12. 安装成功后,点击“关闭”。
  • Linux 系统安装指南:
    Linux 发行版众多,安装方式也多样。最常见的是下载 .tar.gz 包手动安装或使用包管理器安装。手动安装提供了更大的灵活性,特别是对于需要安装特定版本的情况。

    • 手动安装 (.tar.gz):

      1. 访问 Oracle Java Downloads 页面。
      2. 找到您想安装的 Java SE 版本 (例如 Java 17)。
      3. 在下载列表中找到 Linux 部分,选择适合您架构的 .tar.gz Archive 文件 (通常是 x64 Compressed Archive)。
      4. 下载 .tar.gz 文件到您的系统中。
      5. 打开终端。
      6. 选择一个合适的安装目录,例如 /usr/local/java (您可能需要管理员权限)。如果目录不存在,请创建它:sudo mkdir /usr/local/java
      7. 将下载的 .tar.gz 文件移动到该目录 (假设文件在 Downloads 目录下):sudo mv ~/Downloads/jdk-*.tar.gz /usr/local/java/
      8. 进入该目录:cd /usr/local/java/
      9. 解压文件:sudo tar -xvzf jdk-*.tar.gz (这里的 jdk-*.tar.gz 替换为您下载的文件名)
      10. 解压后会生成一个目录,例如 jdk-17.x.x。记住这个目录的完整路径,例如 /usr/local/java/jdk-17.x.x。这个路径就是您的 JAVA_HOME
    • 使用包管理器 (例如 apt 或 yum/dnf): 有些 Linux 发行版的软件仓库可能提供了 Oracle JDK 的包。但这取决于发行版和软件源。通常情况下,手动下载 .tar.gz 是更直接的方式。某些第三方仓库也可能提供,但需要谨慎使用。

完成安装程序或手动解压后,您就成功地将 Oracle JDK 的文件放到了您的计算机上。接下来,最关键的一步是配置环境变量。

4. 配置环境变量:让系统找到 Java

安装好了 JDK 文件,但您的操作系统可能还不知道 java 命令在哪里,或者您的 Java 程序运行时需要的类库在哪里。配置环境变量就是告诉操作系统这些信息。

为什么需要配置环境变量?

当您在命令行输入一个命令(如 javacjava)时,操作系统会去一个叫做 Path 的环境变量所指定的目录列表中查找这个命令对应的可执行文件。如果您没有将 JDK 的 bin 目录添加到 Path 中,系统就找不到这些命令。

此外,许多 Java 相关的工具和应用程序会查找一个叫做 JAVA_HOME 的环境变量。这个变量指向 JDK 的安装根目录。设置它可以方便其他程序找到 Java 的安装位置。

JAVA_HOME 环境变量的设置

JAVA_HOME 应该指向 JDK 的安装根目录,而不是 bin 目录。

  • Windows 系统:

    1. 右键点击“此电脑”或“我的电脑”,选择“属性”。
    2. 点击“高级系统设置”。
    3. 在“系统属性”窗口中,点击“环境变量”按钮。
    4. 在“系统变量”区域,点击“新建”。
    5. 变量名输入:JAVA_HOME
    6. 变量值输入:您的 JDK 安装路径 (例如 C:\Program Files\Java\jdk-17.x.x)。确保路径中没有 /bin
    7. 点击“确定”。
  • macOS 系统:
    macOS 系统通常会通过符号链接管理 Java 版本,并且在 /usr/libexec/java_home 提供了一个命令来找到当前或指定版本的 Java Home。配置 JAVA_HOME 通常是在用户的 shell 配置文件中完成。

    1. 打开终端。
    2. 编辑您的 shell 配置文件,例如 ~/.zshrc (如果您使用 zsh) 或 ~/.bash_profile (如果您使用 bash)。使用文本编辑器打开,例如:nano ~/.zshrc
    3. 在文件末尾添加以下行:
      export JAVA_HOME=$(/usr/libexec/java_home)
      或者,如果您想指定特定版本的 JDK,可以使用:
      export JAVA_HOME=$(/usr/libexec/java_home -v 17) (这里的 17 替换为您安装的 Java 版本号)
    4. 保存并关闭文件。
    5. 在终端中执行 source ~/.zshrc (或您编辑的文件名) 来加载新的配置,或者关闭并重新打开终端。
  • Linux 系统:
    与 macOS 类似,在用户的 shell 配置文件中设置。

    1. 打开终端。
    2. 编辑您的 shell 配置文件,例如 ~/.bashrc~/.zshrc。使用文本编辑器打开,例如:nano ~/.bashrc
    3. 在文件末尾添加以下行:
      export JAVA_HOME=/usr/local/java/jdk-17.x.x (替换为您实际的 JDK 安装路径)
      export PATH=$PATH:$JAVA_HOME/bin
    4. 保存并关闭文件。
    5. 在终端中执行 source ~/.bashrc (或您编辑的文件名) 来加载新的配置,或者关闭并重新打开终端。
      注意: 如果您以 root 用户身份编辑 /etc/profile 文件,则更改将对系统所有用户生效。但修改用户自己的配置文件 (~/.bashrc 等) 通常更安全。

Path 环境变量的设置

将 JDK 的 bin 目录添加到系统的 Path 环境变量中。这样,您就可以在任何目录下直接运行 javacjava 命令了。

  • Windows 系统:

    1. 在刚才的“环境变量”窗口中,找到“系统变量”区域的 Path 变量,双击它。
    2. 在编辑“环境变量”窗口中,点击“新建”,然后输入 %JAVA_HOME%\bin
    3. 将新添加的 %JAVA_HOME%\bin 这一项上移到列表的顶部或靠近顶部的位置(在任何其他可能包含旧 Java 版本路径的条目之前),以确保系统优先使用您新安装的 JDK。
    4. 点击“确定”关闭所有窗口。
  • macOS 和 Linux 系统:
    如果您按照上面的 Linux 手动安装步骤设置了 PATH 变量 (export PATH=$PATH:$JAVA_HOME/bin),并且重新加载了配置文件,那么这一步已经完成了。如果您是 macOS 使用 /usr/libexec/java_home 的方式,通常不需要手动将 /bin 添加到 Path,因为系统已经能够找到 Java 命令。但如果需要,可以在 ~/.zshrc~/.bash_profile 中添加一行:
    export PATH="$JAVA_HOME/bin:$PATH"

验证配置是否成功

配置完成后,打开一个新的命令行窗口(Windows 下是命令提示符或 PowerShell,macOS/Linux 下是终端)。请注意,必须打开一个新的窗口,因为环境变量的更改通常只对新的 shell 会话生效。

在新的命令行窗口中输入以下命令:

bash
java -version

如果您看到输出了您安装的 Java 版本信息(例如 openjdk version "17.0.x" ...java version "17.0.x" ...),则表示 java 命令已成功找到。

再输入以下命令:

bash
javac -version

如果您看到输出了 javac 的版本信息(与 java 版本通常一致),则表示 javac 命令也已成功找到。

最后,如果您设置了 JAVA_HOME,可以尝试打印它的值来确认:

  • Windows (命令提示符): echo %JAVA_HOME%
  • Windows (PowerShell): echo $env:JAVA_HOME
  • macOS / Linux: echo $JAVA_HOME

如果输出了您设置的 JDK 安装根目录路径,那么 JAVA_HOME 也配置成功了。

恭喜您!您现在已经成功安装并配置了 Oracle JDK 开发环境。接下来,我们将编写并运行您的第一个 Java 程序。

5. 编写您的第一个 Java 程序:“Hello, World!”

按照惯例,我们的第一个程序将是在屏幕上输出“Hello, World!”。

准备工作:文本编辑器

您可以使用任何纯文本编辑器来编写 Java 代码,例如:

  • Windows: 记事本 (Notepad)、Notepad++ (推荐)
  • macOS: TextEdit (注意保存为纯文本)、VS Code (推荐)
  • Linux: gedit, nano, vim, VS Code (推荐)

对于初学阶段,一个简单的文本编辑器足以。随着学习深入,您会转向更强大的集成开发环境 (IDE),如 Eclipse、IntelliJ IDEA 或 VS Code,它们提供代码高亮、自动完成、调试等高级功能,极大地提高开发效率。但现在,让我们从最基础的开始。

编写 Java 源代码

打开您的文本编辑器,输入以下代码:

“`java
public class HelloWorld {

public static void main(String[] args) {
    // 这是一个简单的注释,输出 "Hello, World!" 到控制台
    System.out.println("Hello, World!");
}

}
“`

理解代码结构:类、main 方法、输出语句

我们来逐行分析这段代码:

  • public class HelloWorld { ... }

    • public: 访问修饰符,表示这个类可以在任何地方被访问。
    • class: 关键字,用于声明一个类。在 Java 中,所有的代码都必须放在类里面。类是 Java 面向对象编程的基本单元。
    • HelloWorld: 类的名称。在 Java 中,类名通常使用驼峰命名法 (CamelCase),首字母大写。非常重要的一点是,包含 main 方法的公共类 (public class) 的文件名必须与类名完全一致(包括大小写),并且以 .java 作为文件扩展名。 所以,这个文件必须保存为 HelloWorld.java
    • { ... }: 类体,包含类的成员(变量、方法等)。
  • public static void main(String[] args) { ... }

    • 这是 Java 应用程序的主方法 (main method)。当您运行一个 Java 程序时,JVM 会从这个方法开始执行。
    • public: 访问修饰符,表示这个方法可以从类外部访问。
    • static: 修饰符,表示这个方法属于类本身,而不是类的某个特定对象。这意味着您无需创建类的实例就可以调用这个方法。主方法必须是 static 的。
    • void: 返回类型,表示这个方法不返回任何值。主方法必须是 void 的。
    • main: 方法名。这是 Java 规范规定的主方法名称。
    • (String[] args): 方法的参数列表。它接受一个字符串数组作为参数。通常用于接收命令行参数。即使您不使用命令行参数,这个参数列表也必须存在。args 是参数数组的名称,您可以改用其他合法变量名,但 args 是惯例。
    • { ... }: 方法体,包含方法要执行的代码语句。
  • // 这是一个简单的注释...

    • //: 单行注释。编译器会忽略这行文字。注释用于解释代码,提高可读性。
  • System.out.println("Hello, World!");

    • 这是方法体中的唯一一条语句。
    • System: Java 标准库中的一个最终类,提供了访问系统资源的方法。
    • out: System 类中的一个静态成员,类型是 PrintStream 对象,通常代表标准输出流(控制台)。
    • println(): PrintStream 类的一个方法,用于将内容打印到输出流,并在末尾添加一个换行符。
    • "Hello, World!": 这是一个字符串字面量,是要打印到控制台的内容。
    • ;: 分号,表示一条语句的结束。Java 中的每条语句通常都以分号结束。

保存文件

将上面编写的代码保存到一个文件中。请务必将文件命名为 HelloWorld.java,并且确保文件扩展名是 .java,而不是 .java.txt 或其他名称(有些文本编辑器可能默认添加 .txt)。保存文件的位置可以是您电脑上的任何目录,例如创建一个专门的 Java 项目文件夹。

6. 编译与运行 Java 程序

现在,我们有了 Java 源代码文件 HelloWorld.java。接下来是使用 JDK 工具将其转换为可执行的形式并运行它。

使用 javac 命令编译

打开您的命令行窗口(终端),并导航到您保存 HelloWorld.java 文件的目录。使用 cd 命令切换目录。例如,如果文件保存在 D:\MyJavaProject 目录下,在 Windows 命令提示符中输入:

bash
cd D:\MyJavaProject

在文件所在的目录中,使用 JDK 提供的 javac 命令来编译您的源代码:

bash
javac HelloWorld.java

  • javac: 这是 Java 编译器程序的可执行文件,它位于 JDK 安装目录的 bin 子目录中。由于您已经正确配置了 Path 环境变量,系统可以在任何地方找到这个命令。
  • HelloWorld.java: 这是您要编译的 Java 源代码文件名。

如果您的代码没有语法错误,javac 命令执行后不会有任何输出(或只会有警告信息)。编译成功后,您会在同一个目录下看到一个新的文件:HelloWorld.class

理解字节码文件 (.class)

HelloWorld.class 文件就是 javac 编译器生成的字节码文件。它不再是人类可读的源代码,而是一种介于源代码和机器码之间的中间形式。这种字节码是平台独立的,它可以被任何安装了 Java 虚拟机 (JVM) 的平台所理解和执行。这就是 Java 实现“一次编写,到处运行”的关键所在。

使用 java 命令运行

生成了字节码文件 (.class) 后,就可以使用 JDK 提供的 java 命令来运行它。java 命令实际上是启动了 JVM,然后由 JVM 来执行指定的字节码。

同一个命令行窗口中(确保当前目录仍然是包含 HelloWorld.class 的目录),输入以下命令:

bash
java HelloWorld

  • java: 这是用于启动 Java 虚拟机并执行 Java 程序的命令。它也位于 JDK 的 bin 目录中。
  • HelloWorld: 注意,这里您指定的是类名(HelloWorld),而不是文件名 (HelloWorld.class)。JVM 会查找名为 HelloWorld 的类,并在其中找到 main 方法来开始执行。不要在类名后面加上 .class 扩展名。

如果一切顺利,您将在命令行窗口中看到输出:

Hello, World!

这表明您的第一个 Java 程序成功运行了!

命令行操作示例总结:

假设您的 HelloWorld.java 文件保存在 /home/user/java_projects 目录下 (Linux/macOS):

  1. 打开终端。
  2. 切换到文件目录:cd /home/user/java_projects
  3. 编译:javac HelloWorld.java (如果成功,会生成 HelloWorld.class)
  4. 运行:java HelloWorld (如果成功,会输出 “Hello, World!”)

7. 常见问题与初步故障排除

初学者在安装、配置或运行第一个 Java 程序时可能会遇到一些问题。以下是一些常见问题及其解决方案:

  • 找不到 javacjava 命令 (例如 javac: command not found'javac' is not recognized as an internal or external command)

    • 原因: 系统的 Path 环境变量没有正确配置,或者配置后没有在新的命令行窗口中生效。
    • 解决方案:
      1. 检查环境变量: 回到第 4 节,仔细检查 JAVA_HOMEPath 变量是否设置正确。确保 Path 中包含了 %JAVA_HOME%\bin (Windows) 或 $JAVA_HOME/bin (Linux/macOS)。
      2. 检查路径: 确保 JAVA_HOME 指向的是 JDK 的根目录,而不是 JRE 目录或其他子目录。
      3. 打开新窗口: 配置环境变量后,务必关闭当前的命令行窗口,然后重新打开一个新的命令行窗口再尝试运行 java -versionjavac -version
  • 编译错误 (例如 HelloWorld.java:1: error: class, interface, or enum expected)

    • 原因: 您的 Java 源代码存在语法错误。最常见的是:
      • 类名、方法名、关键字拼写错误。
      • 遗漏了分号 ;、花括号 {}、圆括号 ()
      • 括号不匹配。
      • 文件名与公共类名不一致。
    • 解决方案:
      1. 仔细检查代码: 对照示例代码,逐字逐句检查您的 HelloWorld.java 文件,特别是类名、main 方法的签名 (public static void main(String[] args)) 和 System.out.println 语句。
      2. 检查文件名: 确保文件名是 HelloWorld.java,并且大小写完全匹配类名 HelloWorld
      3. 检查文件扩展名: 确保文件的扩展名确实是 .java,而不是被编辑器自动添加了 .txt。在文件浏览器中启用显示文件扩展名可以帮助确认。
  • 运行错误 (例如 Error: Could not find or load main class HelloWorldException in thread "main" java.lang.NoSuchMethodError: main)

    • 原因:
      1. JVM 找不到要执行的字节码文件 (.class)。
      2. 找到了 .class 文件,但其中没有找到正确签名的 main 方法 (public static void main(String[] args)).
      3. 您在运行 java 命令时输入了 .class 扩展名。
    • 解决方案:
      1. 检查当前目录: 在命令行中,使用 dir (Windows) 或 ls (Linux/macOS) 命令,确认当前目录中存在 HelloWorld.class 文件。运行 java HelloWorld 命令时,您必须位于包含 HelloWorld.class 文件的目录下。
      2. 检查类名: 运行命令是 java 类名,而不是 java 文件名。所以是 java HelloWorld不是 java HelloWorld.classjava HelloWorld.java
      3. 检查 main 方法: 再次检查您的源代码,确保 main 方法的声明完全正确:public static void main(String[] args)。任何细微的差别(例如 static publicvoid staticString args[]、没有 args、没有 publicstatic)都可能导致找不到主方法。
  • CLASSPATH 的概念初探

    • 当您运行 java 命令时,JVM 需要知道去哪里查找您程序所依赖的类文件 (.class 文件或 .jar 文件)。这个查找路径就是由 CLASSPATH (类路径) 来决定的。
    • 对于简单的程序,如 “Hello, World!”,您通常不需要手动设置 CLASSPATH。 当您在包含 HelloWorld.class 文件的目录中运行 java HelloWorld 时,JVM 默认会在当前目录查找 HelloWorld.class
    • 但是,当您的程序变得复杂,依赖于其他类文件或外部库 (打包在 .jar 文件中) 时,就需要告诉 JVM 这些类在哪里。这可以通过设置 CLASSPATH 环境变量或在运行 java 命令时使用 -classpath (或简写 -cp) 选项来指定。
    • 例如:java -cp .;path/to/my/library.jar HelloWorld (Windows) 或 java -cp .:path/to/my/library.jar HelloWorld (Linux/macOS)。这里的 . 代表当前目录。
    • 对于初学者,暂时只需了解 CLASSPATH 的概念即可,大多数时候可以依靠 IDE 或构建工具来管理它。

8. 超越“Hello, World!”:下一步的学习方向

成功运行了第一个 Java 程序后,您已经迈出了重要的一步。接下来,您可以沿着以下方向继续深入学习:

  • 学习 Java 语法基础: 掌握变量、数据类型、运算符、控制流程 (if, for, while)、数组、字符串等基本概念是编写更复杂程序的基础。
  • 了解面向对象编程 (OOP): Java 是一种面向对象的语言。学习类、对象、封装、继承、多态等 OOP 核心概念至关重要。
  • 使用集成开发环境 (IDE): 虽然命令行编译运行有助于理解底层机制,但在实际开发中,IDE (如 IntelliJ IDEA, Eclipse, VS Code 加装 Java 插件) 是必不可少的工具。它们提供强大的代码编辑、自动补全、重构、调试、版本控制集成等功能,极大地提高开发效率。
  • 了解 Java 标准库 (API): Java 提供了丰富的内置类库 (Java API),涵盖了各种常用功能,如集合 (List, Set, Map)、IO (输入/输出)、网络、多线程等。学习如何使用这些类库是 Java 开发的核心。您可以查阅 Oracle 官方的 Java API 文档。
  • 深入学习 JVM: 了解 JVM 的工作原理,如内存管理 (堆、栈、垃圾回收)、类加载机制等,有助于编写更高效、更稳定的 Java 程序。
  • 了解构建工具 (Maven/Gradle): 对于大型项目,手动管理编译、依赖、打包等过程会非常复杂。Maven 和 Gradle 是流行的项目构建和依赖管理工具,它们可以自动化这些流程,简化项目管理。
  • 学习 Java 生态系统: Java 拥有庞大的生态系统,包括各种框架 (如 Spring, Spring Boot)、库、服务器 (如 Tomcat, Jetty),以及在特定领域的应用 (如 Android 开发、大数据技术等)。

9. 总结

本文带您从零开始认识了 Oracle JDK,它是进行 Java 开发的核心工具包。我们解释了 JDK、JRE、JVM 之间的关系,指导您从 Oracle 官网下载并安装了适合您操作系统的 Oracle JDK,详细讲解了如何配置关键的环境变量 JAVA_HOMEPath,并通过经典的“Hello, World!”程序演示了如何使用 javac 命令编译源代码生成字节码,以及如何使用 java 命令在 JVM 上运行字节码。

掌握了这些基础知识和操作,您已经具备了进行最基础 Java 开发的能力。尽管 Oracle JDK 的许可模式需要关注,但对于个人学习和开发而言,它仍然是一个强大且常用的选择。

学习编程是一个持续的过程。祝您在 Java 的世界里探索愉快,不断进步!记住,实践是最好的老师,多动手编写代码、尝试解决问题,您会学得更快更扎实。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部