你真的知道什么是 JDK吗?

本文介绍了JDK(Java Development Kit),它是Java编程的基础,包括JVM、JRE和开发工具。JDK包含了编译器javac和运行Java程序所需的一切。文章详细讲解了JDK的安装、版本选择、编译和运行Java程序的步骤,以及在IDE如Eclipse中的使用。此外,还讨论了JAR文件的创建和类路径的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDK 是用于构建 Java 应用程序的开发平台。了解不同的 JDK 版本,然后在你的开发环境中安装 JDK 并使用它来编译 Java 程序。

Java Development Kit (JDK) 是 Java 编程中使用的三个核心技术包之一,与 JVM(Java 虚拟机)和 JRE(Java 运行时环境)一起。区分这三种技术并了解它们之间的联系非常重要:

  • JVM是托管正在运行的程序的运行时。
  • JRE是 Java 的磁盘部分,它创建 JVM 并将程序加载到其中。
  • JDK 提供了编写可由 JVM 和 JRE 执行和运行的 Java 程序所需的工具。

刚接触 Java 的开发人员经常混淆 Java 开发工具包和 Java 运行时环境。区别在于 JDK 是用于开发基于 Java 的软件的工具包,而 JRE 是用于运行Java 代码的工具包。

JRE 可以用作独立组件来简单地运行 Java 程序,但它也是 JDK 的一部分。JDK 需要 JRE,因为运行 Java 程序是开发它们的一部分。

图 1 显示了 JDK 如何融入 Java 应用程序开发生命周期。

图 1. JDK 的高级视图。

在继续之前,让我们考虑一下 JDK 的技术和日常定义:

  • 技术定义:JDK是Java平台规范的实现,包括编译器和标准类库。
  • 日常定义:JDK 是你为创建基于 Java 的应用程序而下载的软件包。

JDK 版本和软件包

在你的开发环境中设置 Java 就像下载 JDK 并将其添加到操作系统上的系统路径一样简单。对于 Windows 和 macOS,Java 包含一个可以为你执行此操作的安装程序。

下载 JDK 时,需要选择要使用的 Java 版本。 Java 11最近超越了Java 8,成为最常用的版本。展望未来,Java 17 似乎可能是下一个突出的版本。Java 保持向后兼容性,所以我们只下载最新版本。

过去,你还必须选择 Java 包。这些 JDK 针对不同类型的开发,如 Java Enterprise Edition (Java EE)、Java Standard Edition (Java SE) 和 Java Mobile Edition (Java ME)。现在企业 Java 库已经迁移到 Jakarta EE,流程已经改变。你仍然需要从 Oracle 或 OpenJDK 等实现者那里下载 Java SE JDK。如果你需要对企业和云原生应用程序开发有用的其他工具,那么你可能需要下载并安装 Jakarta EE。在某些情况下,你可能不需要整个 Jakarta EE 平台。例如,如果你只需要一个 JDK 和 servlet,你可以使用标准的 JDK 和Tomcat,其中包括Servlet API。

下载 Java SE 的 JDK

我们将坚持使用 Java SE 进行介绍,以便我们可以专注于核心 JDK 类和技术。要下载 Java SE 开发工具包,请访问 Oracle 的官方下载页面。你将看到各种可用的 JDK 包,如图 2 所示。

图 2. 可用的 JDK 包。

在选择 Java SE 下载之前,请花一点时间查看其他选项。Java厨房里有很多烹饪!

如何安装 JDK

JDK 安装有两种方式:手动或安装程序。在手动安装中,你下载二进制文件,解压缩它们,然后将它们添加到路径中。这在所有操作系统中都很常见。你可能知道如何执行这种类型的安装。

安装程序可用于 macOS 和 Windows。当你运行 JDK 安装程序时,你可以选择三个组件:开发工具、源代码和公共 JRE。你可以安装其中一个或全部。在这种情况下,只需选择默认值。

安装Development Tools选项为你提供正确的 JDK。安装源代码包含核心 Java API 中公共类的源代码。包含此选项允许你在构建应用程序时引用源代码。第三个选项Public JRE表明 JDK 和 JRE 是独立的实体:公共 JRE 可以被其他程序用来执行 Java 程序,并且可以与 JDK 分开安装。

继续安装所有三个组件并接受每个组件的默认值。这样做意味着你的 JDK 和 JRE 将安装在操作系统的默认位置。在 Windows 上,即C:\Program Files\Java\jdk-*,如图 3 所示。(在旧版本的 Java 中,JDK 和 JRE 有单独的目录。在较新的版本中,它们一起安装在 JDK 目录中。)

图 3. 已安装 JDK 的视图。

两个关键的 Java 命令:java 和 javac

JDK 中的 JRE 将java命令添加到命令行。你可以通过进入命令 shell 并键入 来验证这一点java -version,这应该会返回你刚刚安装的 Java 版本。(在某些情况下,你必须重新启动系统才能完全采用对系统路径的更改。)

已经java安装好了,但是呢javac?你将需要这个 JDK 组件来编译你的 Java 文件。

该javac命令位于/jdk目录中,并且在最新版本的安装程序中将自动添加到路径中....。某些 IDE 默认包含 Java 编译器。如果你愿意,通常可以将它们配置为使用特定的安装版本。

编译并运行 Java 程序

我们将从以老式方式编译和运行 Java 程序开始——使用文本文件和控制台命令。这让我们对实际发生的事情有一个很好的了解。

步骤 1. 编写一个简单的 Java 程序

创建一个新的文本文件,调用Intro.java它并将其放置在你计算机上的某个位置,例如你的文档文件夹中。

接下来,添加清单 1 中的代码,这是一个非常简单的 Java 程序。

清单 1. Intro.java

复制

public class Intro {

    public static void main(String[] args) {
        System.out.println("Welcome to the JDK!");
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

步骤 2. 使用 JDK 编译

接下来,使用 JDK 编译器将你的文本文件转换为可执行程序。Java中的编译代码称为字节码,并带有.class扩展名。

你将使用该javac命令,将Intro.java文件作为参数传递给该命令。你正在将我们在清单 1 中创建的 Java 文件输入到javac命令中。在我的系统上,如清单 2 所示。(在较旧的 Java 版本中,你需要在命令 shell 中键入命令的完整路径,如注释行中所示。)

清单 2. 使用 JDK 编译

复制

javac Intro.java
//"C:\Program Files\Java\jdk-10.0.1\bin\javac.exe" Intro.java
  • 1.
  • 2.

这应该会导致编译成功。javac不会以成功消息响应;它只会输出新文件。任何错误都会导致控制台输出。

步骤 3. 运行 .class 文件

你现在应该Intro.class在与Intro.java.

你可以通过键入: 来运行它java Intro,这将产生如清单 3 所示的输出。请注意,你.class在键入此命令时不包括 。

清单 3. 运行 Intro.class

复制

C:\Users\mtyson\Documents>java Intro
Welcome to the JDK!
  • 1.
  • 2.

创建一个 JAR 文件并将其添加到你的类路径中

这javac是 JDK 的明星,但该/bin目录包含你将需要的其他工具。之后最突出的可能javac是jar工具。

JAR (.jar) 文件是一组打包的 Java 类。编译器创建.class文件后,开发人员可以将它们放在一起,.jar以可预测的方式压缩和构造它们。

让我们转换Intro.class为.jar文件。

导航回你放置 的目录Intro.java,然后输入你在清单 4 中看到的命令。

清单 4. 创建一个 JAR 文件

复制

C:\Users\mtyson\Documents>"c:\Program Files\Java\jdk-10.0.1\bin\jar.exe" --create --file intro.jar Intro.class
  • 1.

现在你将intro.jar在目录中看到一个文件。你可以.jar通过将其添加到类路径并在其中执行程序来使用它,如下所示:

清单 5. 将 JAR 添加到你的类路径

复制

java -cp intro.jar Intro
  • 1.

该-cp开关告诉 Java 添加jar到类路径中。对于这个小程序来说,一个.jar文件比我们需要的要多,但随着程序的大小增加并依赖第三方包,它们是必不可少的。

IDE 中的 JDK

集成开发环境 (IDE) 是为开发应用程序提供一组内聚工具的软件。将 IDE 视为一个可视化操作系统,包括文件浏览器和文本编辑器,以及特定于开发的功能,如代码完成和格式化。Eclipse、IntelliJ 和 NetBeans都是经过充分测试且功能强大的 Java IDE。微软无处不在的Visual Studio Code (VS Code)是 Java 应用程序开发的另一个有力竞争者。

在 Java 开发中,IDE 所做的一项关键工作是管理编译。也就是说,IDE 会在后台自动运行编译过程,因此你不必自己不断地进行编译。IDE 还可以随时提供播放反馈,即时捕捉编码错误。

你已经了解了 JDK 在命令行中的工作方式,现在让我们快速了解一下它在 Eclipse 中的工作方式。

Eclipse 和 JDK

安装 Eclipse 不在本指南的范围内,但它是一个简单的过程。Eclipse 包括与任何其他程序一样的安装程序,你可以在此处找到适合你的操作系统的安装程序。

安装 Eclipse 后,从菜单栏中打开Window项并选择Preferences。

在 Preferences 窗口中,你将看到Java项。打开它,在里面你会看到Compiler项。单击它将显示 JDK 的选项。

图 4 显示了 Eclipse 中 JDK 选项的屏幕截图。

图 4. Eclipse 中的 JDK 选项。

如前所述,你需要为你的项目选择正确的 JDK 版本。在后台,IDE 将运行 JDK 编译器,就像你从命令行运行它一样。Eclipse IDE 也有自己的 JDK 实例。IDE 为你管理 JDK 和 JRE,让生活更轻松!

原文标题:​​What is the JDK? Introduction to the Java Development Kit​

<think>嗯,用户问的是Docker images会不会生成MySQL和JDK镜像。首先,我需要确认他们对Docker的基本理解。可能用户刚开始接触Docker,不太清楚镜像的来源和创建过程。 首先,Docker images本身是一个命令,用来列出本地已有的镜像。所以用户可能误解了这个命令的作用,以为运行它会生成镜像。实际上,docker images只是显示已经存在的镜像,而不会主动生成新的镜像。 接下来,用户提到的MySQL和JDK镜像。这两个都是常见的软件,Docker Hub上肯定有官方镜像。所以需要解释如何获取它们,比如使用docker pull命令。可能用户需要知道如何运行这些镜像,比如启动MySQL容器或者配置JDK环境。 然后,用户可能想知道如何创建包含JDK的自定义镜像,比如在Java应用中使用。这时候需要介绍Dockerfile的基本结构,比如FROM基础镜像,安装JDK,然后构建镜像。这部分要详细一点,给出具体的例子,比如基于Ubuntu安装JDK或者使用官方OpenJDK镜像。 另外,用户可能混淆了基础镜像和自定义镜像的概念。需要明确说明,MySQL通常直接使用官方镜像运行,而JDK可能作为基础镜像用于构建应用。例如,开发一个Spring Boot应用时,Dockerfile会以OpenJDK镜像为基础,添加应用的JAR文件。 还要注意可能的误区,比如手动构建MySQL镜像的情况。虽然可以这样做,但通常推荐使用官方镜像,这样更安全、更高效。需要指出这点,避免用户走弯路。 最后,总结一下步骤:获取官方镜像用docker pull,创建自定义镜像用docker build和Dockerfile。确保用户明白两者之间的区别,以及各自的使用场景。</think>Docker 的 `docker images` 命令本身**不会生成镜像**,它仅用于**列出本地已有的镜像**。如果你需要生成(或获取)MySQL 或 JDK 的镜像,通常需要通过以下方式操作: --- ### 1. **获取官方镜像(无需自己生成)** - **MySQL 镜像**:Docker Hub 提供了官方镜像,可以直接拉取: ```bash docker pull mysql:latest ``` 运行容器时,可以指定版本、配置密码等: ```bash docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -d mysql:latest ``` - **JDK 镜像**:OpenJDK 的官方镜像可以直接拉取(例如 JDK 17): ```bash docker pull openjdk:17 ``` 若需要运行 Java 程序,可以将编译后的 JAR 文件打包到容器中。 --- ### 2. **自定义镜像(通过 Dockerfile 生成)** 如果需要一个**包含 JDK 或 MySQL 的自定义镜像**(例如在镜像中预装软件),需编写 `Dockerfile` 并构建: #### 示例 1:自定义 JDK 镜像 ```dockerfile # 使用 OpenJDK 官方镜像作为基础 FROM openjdk:17 # 添加你的应用(例如一个 JAR 文件) COPY your-app.jar /app/ WORKDIR /app CMD ["java", "-jar", "your-app.jar"] ``` 构建镜像: ```bash docker build -t my-jdk-app . ``` #### 示例 2:基于 MySQL 的自定义镜像(较少见) 通常直接使用官方镜像即可,但若需预配置数据库或脚本,可以: ```dockerfile FROM mysql:latest COPY init.sql /docker-entrypoint-initdb.d/ # 自动执行初始化 SQL ``` 构建镜像: ```bash docker build -t my-mysql . ``` --- ### 3. **关键区别** | 操作 | 用途 | 是否需要手动生成 | |---------------|-------------------------------|------------------------| | `docker pull` | 直接下载官方镜像(如 MySQL) | 否,直接获取 | | `docker build`| 通过 Dockerfile 自定义镜像 | 是,需编写 Dockerfile | --- ### 总结 - **直接使用镜像**:MySQL 和 JDK 的官方镜像可直接从 Docker Hub 拉取,无需自行生成。 - **自定义镜像**:当需要预装软件、配置环境或部署应用时,通过 `Dockerfile` 构建镜像(如将 JDK 作为基础镜像构建应用)。 如果有具体需求(例如集成 MySQL 和 Java 环境),可以进一步说明场景,我会提供更针对性的示例!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值