为什么不建议从java程序创建.exe?

为什么不建议从java程序创建.exe?,java,netbeans,exe,Java,Netbeans,Exe,我正在学习使用Java进行GUI编程,并且正在使用Netbeans IDE。我现在想创建一个可执行程序,在Netbeans之外运行;i、 这样就可以从我的桌面上运行 但当我做一些研究时,我得到的印象是,不建议从Java程序创建.exe。你能解释一下为什么不推荐吗?不推荐是因为: 标准Java工具链不支持它 exe不可移植。不同的exe格式用于不同的操作系统、硬件架构等 Java程序的自包含的exe需要包含完整的JRE。(是否要分发100Mb的“hello world”可执行文件?) 带有嵌入式

我正在学习使用Java进行GUI编程,并且正在使用Netbeans IDE。我现在想创建一个可执行程序,在Netbeans之外运行;i、 这样就可以从我的桌面上运行


但当我做一些研究时,我得到的印象是,不建议从Java程序创建.exe。你能解释一下为什么不推荐吗?

不推荐是因为:

  • 标准Java工具链不支持它
  • exe
    不可移植。不同的
    exe
    格式用于不同的操作系统、硬件架构等
  • Java程序的自包含的
    exe
    需要包含完整的JRE。(是否要分发100Mb的“hello world”可执行文件?)
  • 带有嵌入式JRE的Java
    exe
    是一个安全问题。没有简单的方法来更新JRE。。。修复最新一批安全漏洞
如果(假设)Java语言、库和工具链支持编译到二进制+链接,那么分发
exe
文件将是一个明智的解决方案。然而,Java应用程序可以做的很多事情都依赖于标准Java的动态加载/JIT编译实现

已经有/正在有第三方试图满足人们对自包含的
exe
文件的要求,但您的最终结果要么是Java subset1,要么是臃肿的
exe
文件



1-例如,使用旧的GNU
gcj
编译器,该库是Java2(!)的一个子集。。。而且(AFAIK)字节码的动态加载不是一个选项。有关gcj限制的更多信息,请参阅。

不建议这样做,因为:

  • 标准Java工具链不支持它
  • exe
    不可移植。不同的
    exe
    格式用于不同的操作系统、硬件架构等
  • Java程序的自包含的
    exe
    需要包含完整的JRE。(是否要分发100Mb的“hello world”可执行文件?)
  • 带有嵌入式JRE的Java
    exe
    是一个安全问题。没有简单的方法来更新JRE。。。修复最新一批安全漏洞
如果(假设)Java语言、库和工具链支持编译到二进制+链接,那么分发
exe
文件将是一个明智的解决方案。然而,Java应用程序可以做的很多事情都依赖于标准Java的动态加载/JIT编译实现

已经有/正在有第三方试图满足人们对自包含的
exe
文件的要求,但您的最终结果要么是Java subset1,要么是臃肿的
exe
文件



1-例如,使用旧的GNU
gcj
编译器,该库是Java2(!)的一个子集。。。而且(AFAIK)字节码的动态加载不是一个选项。有关gcj限制的更多信息,请参阅。

“但当我进行一些研究时,我得出一个结论,即不建议从java程序中创建.exe”。您在哪里发现的?我确信他们已经解释了“为什么”部分
创建了一个没有netbeans的可执行程序,就像我们放在桌面上的一样你这是什么意思?您是否认为netbeans可以作为某种框架使用,并且不允许您在没有它的情况下使用java程序?如果要创建桌面应用程序,则只需编译程序,然后执行.jar文件。.exe文件的唯一优点是,它有一个唯一的进程名和一个显示图标。我猜您想创建一个可执行文件。看看这篇文章:“但当我做一些研究时,我得出了一个结论,不建议从java程序中创建.exe。”你到底从哪里找到的?我确信他们已经解释了“为什么”部分
创建了一个没有netbeans的可执行程序,就像我们放在桌面上的一样你这是什么意思?您是否认为netbeans可以作为某种框架使用,并且不允许您在没有它的情况下使用java程序?如果要创建桌面应用程序,则只需编译程序,然后执行.jar文件。.exe文件的唯一优点是,它有一个唯一的进程名和一个显示图标。我猜您想创建一个可执行文件。看看这篇文章:除了Stephen C所说的,Java还有一个部署工具包,包括JAR分发、JAR派生工具WAR和EAR以及JavaWebStart。这些提供了可移植的机制来部署和运行Java程序,而不需要执行器。@LewBloch-还有其他方法。除了Stephen C所说的,Java还有一个部署工具包,包括JAR分发、JAR派生工具WAR和EAR以及Java Web Start。它们提供了可移植的机制来部署和运行Java程序,而不需要执行器。@LewBloch-还有其他方法。