.jar到.exe的运行是怎样的?

How the operation of .jar to .exe works?

您知道将 java 项目编译成 .exe 的 jar 到 exe 程序我想知道此类软件的实际工作原理。

他们是按照什么方法进行这个操作的?

他们会把jar文件的字节码改成exe文件吗?

基本上,可执行文件只是启动您的 jar。它仍然是字节码,仍然在 JVM 中运行。

这些 msi 和 exe 文件更像是 zip 文件,它们提取 jar 文件及其依赖项并将它们放在适当的位置。然后他们将快捷方式和链接添加到启动程序所需的文件。

您可以在此处阅读相关信息。 http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm

这里还有更多。 http://wixtoolset.org/

至少有两种方法可以生成用户可以单击的 .exe 文件。

更简单的方法是包装 所需的java 环境,exe 仅充当标准VM 的启动程序。 JRE 可以包含在包装的应用程序中,或者可以使用系统安装的 JRE。 launch4j (http://launch4j.sourceforge.net/) 就是一个以这种方式工作的例子。

也可以在部署之前独立完成 JIT 的工作(生成 CPU 可以执行的本机代码)。有(曾经?)gcj (https://gcc.gnu.org/java/) 并且至少存在一种提供此功能的商业产品 (Excelsior JET)。

关于你的问题"how":包装不会改变代码,它只是提供一个启动器,为java代码设置必要的环境到运行,自动化处理到最终用户不需要知道他们是 运行ning java 代码的程度。这可以与任何安装程序包结合使用,以提供无忧无虑的 "click to install" 和 "click to run" 用户体验(例如 InnoSetup)。

编译为本地代码与任何其他编译器基本相同,将输入语言翻译为本地代码。由于 java 的许多特性是 运行 时间动态的(例如类加载、反射),这需要相当多的努力来翻译。