如何使使用Java编写的程序不需要JRE?

3
我进行了全新的安装,在安装Java之前,我能够运行NetBeans和OpenOffice。如果这些程序是用Java编写的,那么这是如何可能的?我知道存在一些.class到.exe的转换器,但我认为这些都是黑客行为(不适用于在全球范围内部署的大型应用程序)。在没有JRE的情况下部署Java应用程序的常见方法是什么?是否有标准或最常见的方式?
起初,我认为这与Jar文件有关,但从我所读的内容来看,这些需要现有的Java安装才能运行。

重复问题:https://dev59.com/C3VC5IYBdhLWcg3w51vy - PJ Fanning
1
据我所知,OpenOffice是用C++编写的。 - trooper
如果Netbeans运行了,那么你已经安装了Java。 - user207421
OpenOffice 不是用Java编写的。 - user330315
根据维基百科,@a_horse_with_no_name至少部分如此。 https://en.wikipedia.org/wiki/OpenOffice.org 不管怎样,我相信还有很多其他的例子。 - Celeritas
2个回答

2

所有的Java应用程序都依赖于JRE(Java运行时环境),NetBeans和OpenOffice也不例外。

大部分可部署的Java应用程序都已经打包了JRE。因此,尽管某些应用程序看起来没有JRE,实际上它们内部已经包含了JRE,并且可以在其之上运行。


好的,你的意思是说一个应用程序可以带有自己的JRE?因为当应用程序运行时,计算机上肯定没有安装JRE。 - Celeritas
例如,使用带有JDK/JRE的Netbeans,您可以按照此链接进行操作:http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html - shazin
@Celeritas 看看launch4j和类似的工具,它们可以捆绑JAR和JRE,使它们成为.exe文件(至少适用于Windows),例如。 - NeeL

0

执行程序的方法只有两种:编译为机器码或使用解释器。

JRE 解释 Java 字节码(当然还有很多其他功能)。有一些编译器可以从 Java 源代码或字节码生成本地可执行文件。我知道的唯一一个是 gcj,上次我检查时它仅支持 Java 5,似乎不太可靠。

大多数 Java 应用程序都需要 JRE 或者在分发中包含一个 JRE。

例如,你可以选择安装已包含 JRE 或未包含 JRE 的 Oracle SQL Developer。对于 Netbeans,有需要 JDK(JRE 不够,因为它需要编译器和开发工具)的版本,也有带有 Netbeans 的 JDK 组合包。

现在,启动 Java 应用程序有三种主要方式(不计 Java Web Start 和类似方式):手动运行 java 命令、使用脚本或运行名为“wrapper”的可执行文件。

有几个 wrapper 可以根据需要定制任何应用程序。如果没有记错的话,PJ Fanning 的链接包括一个列表。这些包装器使用 JRE 来运行应用程序并简化了系统启动时将 Java 应用程序作为服务启动的过程。

因此,除非你找到一个被编译成本地代码的应用程序(理想情况下,你无法判断它是否为Java应用程序),否则你总是在使用某个JRE,不管是预装的还是捆绑的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接