首页 / 知识
关于安装程序:分发Java应用程序的最佳方法是什么?
2023-04-16 09:37:00

What's the best way to distribute Java applications?Java是我选择的编程语言之一。 尽管将应用程序分发给最终用户,但我总是遇到问题。 为用户提供JAR并不总是像我想要的那样友好,并且使用Java WebStart要求我维护Web服务器。 分发Java应用程序的最佳方法是什么? 如果Java应用程序需要在用户计算机上安装工件,该怎么办? 有没有好的Java安装/打包系统? 有多种解决方案,取决于您的发行要求。 只是用一个罐子。这假设用户安装了正确的Java版本,否则用户将获得"类文件格式版本"异常。这对于在公司内部进行内部分发是很好的。 使用launch4j和类似NSIS的安装程序。尽管用户仍然可以执行诸如卸载Java运行时之类的愚蠢工作,但是这给了您更多的控制权。这可能是最流行的方法,也是我目前使用的方法。 使用Webstart。这也假设用户安装了正确的Java版本,但是使用起来容易得多。我的经验是,这对于严格控制的Intranet环境是很好的,但是对于较大的部署,这会带来麻烦,因为它有许多奇怪的故障。使用Java 1.7中的新插件技术可能会更好。 使用本机代码编译器(如Excelsior JET)并作为可执行文件分发,或将其包装在安装程序中。昂贵,并且通常将您绑定到Java的较早版本,并且动态类加载有些麻烦,但是对于需要最小化支持麻烦的大规模部署而言,它非常有效。 高级安装程序使将Java应用程序打包为Windows可执行文件变得容易,并且设置方式非常灵活。我发现,要将Java应用程序分发到Windows客户端,这是最简单的方法。 这取决于目标用户的熟练程度。在大多数情况下,您希望将它们与运行基于Java的应用程序隔离开来。为他们提供执行正确操作的本机安装程序(创建开始菜单项,启动器,向添加/删除程序注册等),并且已经捆绑了Java运行时(因此用户不需要了解或关心它)。我想建议我们的跨平台安装工具BitRock InstallBuilder。尽管它不是基于Java的,但通常用于打包Java应用程序。它可以轻松地与Ant集成,并且您可以从Unix / Linux / Mac以及其他方式构建Windows安装程序。由于生成的安装程序是本地安装程序,因此它们不需要自解压步骤或目标系统中已经存在JRE,这意味着较小的安装程序并为您省去了很多麻烦。我还想提到我们对开源项目有免费许可证 JSmooth是一个简单的程序,可以将您的jar打包到标准的Windows可执行文件中。它带有一个简单的GUI,可让您配置所需的JVM,将其与应用程序捆绑在一起,或者提供一个选项(如果尚未安装的话)进行下载。您可以按原样发送exe文件,也可以使用可能的依赖关系将其压缩(或让程序在启动时从网上下载额外的依赖关系)。它也是免费的,例如啤酒和演讲,这可能是(或可能不是)一件好事。 尽管我自己没有使用过NSIS(可编写脚本的可安装程序系统),但是有些安装脚本会检查目标系统上是否安装了所需的JRE。 可从"代码示例"和"真实世界安装程序"页面获得许多示例脚本,例如:
(请注意,我实际上没有使用过任何脚本,因此请不要将其视为认可。) 如果它是真正的具有GUI的最终用户应用程序,则应忽略编写程序(Java)时所用的语言,并为每个所选平台使用本机安装程序。 Mac人士需要.dmg,在Windows上需要.msi或.exe安装程序。在Windows上,我更喜欢NullSoft的NSIS,因为它不像InstallShield或InstallAnywhere那样令人反感。在OSX上,您可以依靠已经存在的JVM。在Windows上,如果需要,您需要检查并安装。 Linux的人不会运行Java GUI应用程序,只有少数人会知道如何处理可执行文件.jar。
可执行文件是最好的,但它们受平台限制,即对于Linux使用gcj:http://gcc.gnu.org/java/生成可执行文件,并使用launch4j:http://launch4j.sourceforge.net/生成Windows可执行文件。 我需要一种将项目及其依赖项打包到单个jar文件中的方法。 我使用Maven2 Assembly插件找到了所需的东西:Maven2 Assembly插件 这似乎是在复制一个jar的功能,但是不需要其他配置即可使其运行。
根据我的经验(通过评估多个选项),install4j是一个很好的解决方案。它为任何平台创建本机安装程序,专门用于安装Java应用程序。有关详细信息,请参见其网站上的"功能"。 install4j是一种商业工具。特别是如果您的需求相对简单(只需分发应用程序并安装一些构件),则存在许多其他好的选择,包括免费的选择(例如izPack或已经提到的Lauch4j)。但是您要求最好的方法,据我目前的知识,install4j是一种方法,特别是在分发更大或更复杂的Java(EE)应用程序时。 我开发Eclipse RCP应用程序。通常,要启动Eclipse应用程序,应包含一个可执行启动器。我将Java虚拟机包含在/ jre子目录中的application文件夹内,以确保将使用正确的Java版本。 然后,我们将Inno Setup打包在一起以安装在用户的计算机上。 对于简单的Java应用程序,我喜欢使用Jar's。分发一个用户可以单击的文件非常简单(Windows),或者
恕我直言,jar是简单性的主要要求。 installanywhere很好但是很贵-我还没有找到(免费)好
从我的角度来看,出色的分发机制是使用诸如ClickOnce或WebStart技术之类的东西。您只需将版本部署到服务器,当版本发布时,它将自动获取到客户端。 由于我使用Maven2进行构建,因此部署只是小菜一碟:将已构建的jar复制到服务器上的位置,如果需要,请更新jnlp文件,然后完成。 最佳答案取决于平台。对于在Windows上进行部署,结合使用一罐和launch4j取得了不错的效果。确实花了一些时间来正确设置我的构建环境(主要是Ant脚本),但是现在已经很轻松了。
我将把jar文件以及其他相关的jar,配置文件和文档以及run.bat / run.sh一起压缩。最终用户应该能够将其解压缩到任何位置,并在需要时编辑run.bat(在大多数情况下,它无需编辑即可运行)。 作为用户,我更喜欢解压缩并运行某种安装方式(请不要选择开始菜单项)。但是,IT行业以外的人员可能会有不同的偏好。因此,如果该应用程序主要面向开发人员zip-run.bat路由,那么可以使用安装程序安装面向公众的应用程序。 |
最新内容
相关内容
linux使用命令的方法?
linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,图标,linux的cd命令的使用方法1、cd ~:回到用户家目录。注:这得看你linux安装程序的命令?
linux安装程序的命令?,软件,管理,系统,工具,密码,官网,网站,发行,简介,服务,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据linux命令和应用程序?
linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据linux数据库选择命令?
linux数据库选择命令?,系统,地址,工作,软件,管理,信息,工具,基础,命令,服务,操作系统常用命令和linux常用命令怎么学首先打开linux操作系统在linux命令输入方法?
linux命令输入方法?,系统,电脑,密码,管理,地址,命令,网站,工具,首开,位置,linux终端输入~怎么弄中间在电脑上打开需要的Word文件进入。进入到文Python中什么是反射?使用方法有哪
Python中什么是反射?使用方法有哪些?,信息,培训,状态,术语,检测,反射,属性,对象,字符串,方法,反射这个术语在很多语言中都存在,并且存在大量的学编程为什么选择Python
学编程为什么选择Python,数据,人工智能,标准,代码,发展,工资,占比,项目,待遇,培训,人工智能的飞速发展推动使用Python编程语言的人越来越多,PyPython编程语言的优缺点
Python编程语言的优缺点,代码,网站,航空,管理系统,培训,系统,概念,网络,基础,机器人,Python是一种编程语言,它的名字来源于一个喜剧。是由Guidpython如何选择Python中的IDE?
python如何选择Python中的IDE?,工具,代码,平台,通用,培训,实时,最新,智能,工作,环境,在写Python代码时,最好的方式就是使用集成开发环境了,也就Python中有哪些方法可以解压文件?
Python中有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大报名Python培训选择哪种方式比较好
报名Python培训选择哪种方式比较好?,培训,工作,基础,时间,情况,在线,最划算,环境,系统,方式,Python不仅是一种高级的编程语言,而且还是一种应用Python列表类型list合并有哪些方法
Python列表类型list合并有哪些方法?,培训,方法,列表,可能会,数组,切片,下文,字符串,数据类型,请看,在Python编程语言中,有各种数据类型,比如字符