Java如何在不安装其他开发工具的情况下制作Windows应用程序?
How does Java make Windows applications without needing to install other development tools?
最近,我一直在尝试一些新的编程语言来试水。我一直在尝试制作 Windows 个应用程序。
我选择的任何language/library,无论是Go、Rust、Dart(Flutter)等,总是需要我安装外部工具进行Windows开发。通常,这些是 C++ 构建工具或 C 编译器之类的东西。
让我感到困惑的是,在 Java 中,您不需要类似的东西。您可以使用 Swing 或 JavaFX 或其他东西,只需几行,您就可以拥有一个工作的 Windows 应用程序。如果您想知道,Java 是我尝试制作 Windows 应用程序的第一种语言(除了所需的 Java 之外,我没有安装任何额外的工具,例如JVM、JRE 等)。后来出现了其他语言,每一种语言都需要一些先决条件,就像我上面提到的那样。另外,Java 是基于 C 的,这使得它不需要任何其他工具来工作更加令人困惑。
我也从来没有尝试过 in-depth/complicated Java Windows 应用程序,所以也许以后我需要获得额外的工具,但是从什么我一直在做我从来不需要它们。
反正就是瞎逛how/why这是? Java 是如何……工作的?它类似于 JVM 吗?
tl;博士
Is it something like the JVM?
是的,JVM 使您的 Java 应用程序能够在特定类型的计算机上执行。
详情
Java 虚拟 Machine (JVM) 是一个相当大、复杂且高度调整的软件,它参与了您应用程序的 运行ning。顾名思义,它虚拟化(假装)为一种通用计算机,然后在网桥下连接到它 运行 所在的真实计算机。因此,Java 程序可以对底层硬件和操作系统的细节一无所知。
所以每个 JVM 实现都是 platform-specific。要在 Mac 上 运行 一个 Java 应用程序,您需要一个为 macOS 构建并为 Mac 的 CPU 架构构建的 JVM (英特尔或苹果 Silicon/Aarch64)。同样,要在您的 Windows PC 上 运行 完全相同的 Java 应用程序,您需要特定于 OS 和 CPU.
的 JVM
这意味着每个 Java 应用程序在 运行 时都需要一个 JVM。 JVM 必须与您的应用捆绑在一起,或者 JVM 必须已经安装。
在过去,Sun Microsystems(Java 的发明者)在每台计算机上预装 JVM 方面取得了部分成功。 Java 的当前所有者 Oracle 已经放弃了这个想法。他们现在鼓励应用程序开发人员在应用程序工件中捆绑 JVM。 Oracle 已投入大量资源来发明 Java 平台模块系统 (JPMS),以便将 slimmed-down 最小 JVM 与您的应用程序捆绑在一起,仅包含该应用程序实际使用的部分。
这个捆绑的 JVM 确实意味着您必须生成应用程序的各种版本。您需要使用 JVM 构建 Windows x86 32 位、x86 64 位、Aarch64 等
另请参阅与工具相关的 Java JEP,以帮助打包您的应用程序:jlink 和 jpackage。
参见 2020 年 5 月的 Oracle 白皮书 Java Client Roadmap Update。
最近,我一直在尝试一些新的编程语言来试水。我一直在尝试制作 Windows 个应用程序。
我选择的任何language/library,无论是Go、Rust、Dart(Flutter)等,总是需要我安装外部工具进行Windows开发。通常,这些是 C++ 构建工具或 C 编译器之类的东西。
让我感到困惑的是,在 Java 中,您不需要类似的东西。您可以使用 Swing 或 JavaFX 或其他东西,只需几行,您就可以拥有一个工作的 Windows 应用程序。如果您想知道,Java 是我尝试制作 Windows 应用程序的第一种语言(除了所需的 Java 之外,我没有安装任何额外的工具,例如JVM、JRE 等)。后来出现了其他语言,每一种语言都需要一些先决条件,就像我上面提到的那样。另外,Java 是基于 C 的,这使得它不需要任何其他工具来工作更加令人困惑。
我也从来没有尝试过 in-depth/complicated Java Windows 应用程序,所以也许以后我需要获得额外的工具,但是从什么我一直在做我从来不需要它们。
反正就是瞎逛how/why这是? Java 是如何……工作的?它类似于 JVM 吗?
tl;博士
Is it something like the JVM?
是的,JVM 使您的 Java 应用程序能够在特定类型的计算机上执行。
详情
Java 虚拟 Machine (JVM) 是一个相当大、复杂且高度调整的软件,它参与了您应用程序的 运行ning。顾名思义,它虚拟化(假装)为一种通用计算机,然后在网桥下连接到它 运行 所在的真实计算机。因此,Java 程序可以对底层硬件和操作系统的细节一无所知。
所以每个 JVM 实现都是 platform-specific。要在 Mac 上 运行 一个 Java 应用程序,您需要一个为 macOS 构建并为 Mac 的 CPU 架构构建的 JVM (英特尔或苹果 Silicon/Aarch64)。同样,要在您的 Windows PC 上 运行 完全相同的 Java 应用程序,您需要特定于 OS 和 CPU.
的 JVM这意味着每个 Java 应用程序在 运行 时都需要一个 JVM。 JVM 必须与您的应用捆绑在一起,或者 JVM 必须已经安装。
在过去,Sun Microsystems(Java 的发明者)在每台计算机上预装 JVM 方面取得了部分成功。 Java 的当前所有者 Oracle 已经放弃了这个想法。他们现在鼓励应用程序开发人员在应用程序工件中捆绑 JVM。 Oracle 已投入大量资源来发明 Java 平台模块系统 (JPMS),以便将 slimmed-down 最小 JVM 与您的应用程序捆绑在一起,仅包含该应用程序实际使用的部分。
这个捆绑的 JVM 确实意味着您必须生成应用程序的各种版本。您需要使用 JVM 构建 Windows x86 32 位、x86 64 位、Aarch64 等
另请参阅与工具相关的 Java JEP,以帮助打包您的应用程序:jlink 和 jpackage。
参见 2020 年 5 月的 Oracle 白皮书 Java Client Roadmap Update。