Java对EXE的好坏有什么好处?

Ade*_*ros 6 java windows deployment installer exe

我一直想知道将Java项目转换为EXE.

优点在于在Windows上更快部署,用户只需双击EXE并且启动应用程序就可以在Java中运行,他必须运行某些命令.

EXE实际上并不是Java的目的是可移植性.

那你觉得Java对EXE的好坏有什么看法?

我发现了一些有趣的文章在这里.

更新

哇,所以可能与目前的观点相矛盾.我希望你们把JAVA的优点和缺点添加到EXE中.

And*_*son 4

因为我的专业知识是 Java Web Start,它用于启动桌面应用程序。对于 GUI,请考虑我的建议,主要针对这些类型的应用程序。

\n
\n

其他人对 EXE 的操作系统特定性质进行了评论。我总是想知道为什么人们选择 Java 来开发 Windows 特定的桌面应用程序,因为 Windows 的 Visual Studio 软件可能会同时进行 GUI 开发(没有 x-plat Java 布局让你低头)和部署(只是猜测它可以生成 EXE)更容易。

\n

OTOH 只有您才能说出适合此用例的最佳开发工具/语言。

\n
\n

至于创建 EXE 的潜在缺点,我在JavaFAQ on EXEs中指出。

\n

有很多充分的理由不将应用程序打包为可执行文件。Daniel Sj\xc3\xb6blom 注释:

\n
    \n
  • 可能不会更快。现代虚拟机不解释字节码,它们实际上使用 JIT 编译器来生成本机编译代码。有关 JIT 编译器的更多信息,请访问 Sun 的站点。
  • \n
  • 静态编译会使应用程序的大小成倍增加,因为您正在使用的所有库都需要链接到应用程序中。
  • \n
  • 您将失去程序的“免费”升级。每当您的用户下载新的更快的虚拟机时,您的应用程序都会获得速度提升。如果您使用的是 exe,您将无法获得此好处。
  • \n
\n

Jon A. Cruz 详细介绍了创建 exe 所需的开发过程中的一些额外步骤。他指出,制作原生 exe 的开发人员需要:

\n
    \n
  • 验证供应商提供的编译产品的最新版本。如果发现严重错误,则在解决这些错误之前不能将其用于构建运输产品。供应商每次做出修订时都需要完成的工作。
  • \n
  • 通过 QA 周期提交软件。一旦工程人员认为事情已经完成,就需要对其进行验证。因此,产品的每个发布版本和更新都需要经过完整的测试周期。
  • \n
  • 此外,由于本机编译是针对每个目标平台的,因此需要针对每个目标平台完全完成 QA 周期,这会增加所需的工作量。
  • \n
  • 货架空间。也许现在没什么大不了的,但也有可能。
  • \n
  • 然后需要让所有客户升级到正确的版本。要么有免费更新(在这种情况下,企业需要承担生成更新的成本),要么需要处理不全部更新的客户。
  • \n
\n

Jon 进一步指出:当您发布标准 Java 字节码时,VM 问题是平台或 VM 供应商的责任。但是,当您发布编译的二进制文件时,它们就成为您的责任(即使它们实际上是供应商编译产品中的错误)。

\n

...

\n
\n

当然,这是我部署 Java 富客户端应用程序的首选。正在使用Java Web Start。以点的形式列出 Web-start 的一些好处/功能:

\n

JWS 提供了许多吸引人的功能,包括但不限于:

\n
    \n
  • 启动画面
  • \n
  • 桌面集成
  • \n
  • 文件关联
  • \n
  • 自动更新(包括延迟下载和更新的编程控制)
  • \n
  • 按平台、体系结构或 Java 版本对本机和其他资源下载进行分区,
  • \n
  • 运行时环境的配置(最低 J2SE 版本、运行时选项、RAM 等)
  • \n
  • 使用扩展轻松管理公共资源\n..
  • \n
\n
\n

自从应用程序逐渐转变以来,我决定强调自动更新。在磁盘上传递给应用程序。通过网络交付,自动更新变得越来越普遍。JWS 仍然提供我所见过的最好的更新体验(非常可配置,对用户来说大部分是透明的)。

\n

当然,JWS 可以在支持 Java 的台式电脑操作系统上运行。

\n
\n

更新

\n
\n

..Java Web 应用程序需要互联网连接吗?

\n
\n

(请注意,名称是“Java Web Start”。)

\n

当然可以。至少对于初始安装来说是这样。可以指定更新检查以继续启动以前安装的应用程序版本。如果用户当前未连接。

\n

但是,(据我估计)没有 CD/DVD 驱动器的机器(例如上网本)比没有互联网连接的机器要多。 如果您想向更大的市场销售,请寻求网络来提供应用程序。

\n