我从未见过将软件作为jar发布,那么如何才能将软件作为exe发布呢?

时间:2009-09-21 08:12:04

标签: java jvm

是否所有人都认为其他人不会将软件发布为jar,然后以exe身份发布软件?

5 个答案:

答案 0 :(得分:16)

Java软件可以通过多种方式发布,具体取决于目标市场。

开发人员最简单(但对最终用户来说最难)是只发布一个jar文件(或一组Jar文件)。在许多系统上,JAR将是“双击”,因此充当可执行文件。但如果最终用户没有安装Java,它将无法工作 如果您控制目标环境,则良好。如果你想同时瞄准Windows,Mac和Linux,那也很好。任何拥有Java的平台都可以运行它,包括你没有考虑过的平台 如果您要定位普通用户,则错误。它无法执行“安装任务”,在开始菜单中设置任何内容或将其自身与文件类型相关联。

在大多数情况下,

Java Web Start 是我的首选。它提供了一个基于Java的安装程序,可以设置开始菜单,关联文件类型和所有这些优点。但是在安装时会打开一个安全盒。
对于大多数情况,。您只拥有所有操作系统的一个链接 如果您怀疑用户没有安装JRE,或者您不希望最终用户知道该应用程序是用Java编写的,那么 Bad

你可以发布一个包含Jars的zip文件和一个 .bat文件和一个.sh 文件来实现。
Good 适用于管理员,开发人员和命令行应用程序。
对于那些不太了解bat和shell脚本的最终用户而言, Bad 如果脚本因系统而中断,则不知道该怎么做。

一个瘦的.exe包装器围绕Jar文件。这给最终用户留下了应用程序本机的印象。它们通常都带有......

Java感知安装程序。这是一个本机安装程序(Windows,Mac和Linux的安装程序不同)。这将能够检测目标机器是否安装了Java,以及是否能够启动JRE的安装。它还可以完成所有有趣的安装后内容,例如设置文件关联并在开始菜单中添加项目 Good 适用于大多数情况 错误如果您要定位多个平台,因为您需要维护每个平台的安装程序。如果其中一个目标平台没有Java感知安装程序也会很糟糕(那么您需要使用上述其他方法)。

原生EXE 。使用Java到本机编译器(Jet,GCJ或IKVM)可以创建本机可执行文件。
如果你真的不希望别人知道你正在使用Java或需要以某种奇怪的方式与本机环境集成(ikvm会让你在.NET中使用你的Java代码就像一个简单的。 NET对象) Bad 因为人们认为这会使应用程序更快地变得更快。

jpm4j 套餐。 JPM是Java的包管理器,如npm为nodejs。这允许您通过一个小命令行脚本安装软件,例如安装jython,您可以使用jpm install -f --name jython org.python:jython Good 适用于开发人员工具。 最终用户 Bad ,因为它是基于命令行的,需要他们首先安装jpm。

编辑:IKVM,jpm

答案 1 :(得分:5)

是。如果您与最终用户而不是程序员打交道,那么为他的平台构建本机解决方案是个好主意。创建一个dmg,一个exe和一些linux包。对于exe内容,请查看launch4jjsmooth

答案 2 :(得分:1)

另一种选择是install4j

  

功能强大的多平台Java安装程序构建器,可为Java应用程序生成本机安装程序和应用程序启动程序。

我已经下载并安装了一个使用它的应用程序,它工作正常。但是,它的价格可能会阻止个人或小公司尝试部署一个小型Java应用程序。

答案 3 :(得分:1)

你可以通过编写这样的简短(C?)程序来自己完成:

//run tests here
system("java -jar my_file.jar");

但是您需要为每个操作系统创建此可执行文件的版本。

答案 4 :(得分:0)

取决于您的受众群体。如果你编写的应用程序是由专业系统管理员安装的,我就会做罐子。如果您是在没有任何技术知识的情况下为最终用户编写的,那么系统相关的二进制文件可能是正确的选择。

当采用jar路径时,我会考虑构建两个发行版:一个包括应用程序所依赖的所有库,另一个没有这些库。

至于二进制文件:为什么不以批处理文件或shell脚本的形式提供瘦包装?