java - 如何分发 Java 应用程序

标签 java jar cross-platform jvm distribution

我想了解分发 Java 应用程序的各种选项。

我知道你可以

  • 分发源代码让用户自己编译,或者提供make文件等。
  • 打包成JAR,并有自解压包
  • 和(我敢肯定,还有无数其他方式)

我希望对最常见的选项(以及我没有想到的选项)进行一些解释,特别是,它们是否要求用户拥有 JVM,或者是否可以将其与一个捆绑在一起 - 就我个人而言'我不太喜欢由于缺少 JVM 而停止的安装程序。谁说应用程序需要安装程序,独立解决方案也很好。

此外,值得一问的是如何处理跨平台分发、exe 与 dmg 等...

我提出这个问题的主要动机(我很欣赏这个问题与其他问题相似)是为了找到不需要用户已经安装 JVM 的解决方案 - 但为了完整性,我一般会问。

非常感谢

最佳答案

Distribute the Source Code and let users compile it themselves, or provide make files, etc..

这对于开源项目来说可能没问题,但对于任何商业项目来说都是非常不寻常的。我建议将它作为技术人员的一个选项提供,但也分发 JAR

Package it into a JAR

我称之为最佳实践

and have self extracting archives

making the jar executable怎么样?相反?

I'm hoping for some explanations about the most common options (and one's I haven't thought of) and in particular, do they require a user to have a JVM, or can it be bundled with one - personally I'm not too fond of an installer which halts due to a lack of JVM.

我认为捆绑 JRE 是不合法的。 也就是说,很明显,如果没有 Java,基于 Java 的解决方案将无法工作。如果没有安装 JRE,OpenOffice 和许多其他软件将无法安装。我会说这是可以理解的,也可以。

IzPack似乎是创建基于 Java 的安装程序的一个很好的解决方案。

My primary motivation for this question (which I appreciate is similar to others) is to find solutions that don't require the user to already have a JVM installed

如我所写,我认为捆绑 JRE 是不合法的 [更新:这是合法的,read this document供引用](也不是一个好的选择,因为您必须捆绑许多不同的操作系统/体系结构组合)。所以唯一的其他方法是 native 编译(抱歉,无法帮助您)。

关于java - 如何分发 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081048/

相关文章:

java - 在 Spring 事务管理器中创建 bean 时出错

java - 解析外部依赖的类路径

c++ - 将字符串指针与 NULL 以及 NULL 字符进行比较的目的

python - 在 python 中播放声音文件的跨平台方式是什么?

java - 是否可以将 jar 文件嵌入到 Flex 应用程序中?

android - 基于 QML 模型的组件在 android 上具有未定义的 modelData

Java、C++、NIO、mmaped 缓冲区、同步

java - 迪菲·赫尔曼 key 交换

java - 据我所知, showinputdialog 返回字符串类型的输出,但它给了我一个错误,它无法将对象转换为字符串

java - Java JAR 文件是否类似于 .Net 程序集?