【问题标题】:Correctly distributing a Java application with database正确分发带有数据库的 Java 应用程序
【发布时间】:2012-04-28 17:33:58
【问题描述】:

我有这个 Java 应用程序,它使用我想要分发的 MySql 数据库。我担心的是,为了分发这个应用程序,我需要假设目标系统同时安装了 JRE 和 MySql Server。

有什么方法可以将我的应用程序与 JRE 和 MySql 服务器捆绑在一起,以便如果系统上不存在它们,我的应用程序可以安装它们然后运行应用程序?

【问题讨论】:

  • 你应该看看像 Chef 或 Puppet 这样的工具。他们可以确保您的应用程序的先决条件存在(如果不存在,则安装它)。
  • 你在这里说的是哪个操作系统?例如大多数当前的 GNU/Linux 发行版都有一个包管理器。其中大部分都将具有适用于 MySQL 和 Java 运行时的适当包,以及安装它们的特定方式,具体取决于发行版。

标签: mysql distribution java


【解决方案1】:

不,由于许可,您不应将它们捆绑并作为安装的一部分提供。
这适用于 Oracle JRE 和 MySQL。

@Stephen C 发表评论后更新。
在某些情况下,似乎可以重新分发 JRE。尽管出于斯蒂芬 C 回答中解释的原因,这是不明智的。我已经在实践中看到了这些问题。
结束更新

我不确定什么是“最安全”的路径(与许可问题相关的最安全)。
也许安装程序可以将它们作为所需组件的一部分当场下载。如果我在这方面错了,这里的朋友可以纠正我

【讨论】:

  • 非常正确,我强烈支持这个答案,但是你可以使用检测脚本来检测系统中是否安装了JRE和MySQL,如果没有安装则将他重定向到网站。
  • 所以对我来说最好的选择是扫描系统并在没有找到 jre 或 mysql 时提示用户下载一个?没有其他选择?
  • @AnuragRamdasan:是的,提示用户。这是安装中的常见“功能”。如果您的应用程序不是商业应用,您仍然应该仔细研究 MySQL 和 JRE 的所有许可细节。注意许可费用很高
  • 实际上,Oracle Java SE 和 Java FX 许可证特别允许在某些情况下嵌入 JRE 发行版;请参阅我的答案中的链接。
【解决方案2】:

只要遵循特定条件,您就可以将 JRE 与 Java 应用程序捆绑在一起。 (如果我没记错的话,这包含在您下载 JRE 时同意的标准 Sun/Oracle 许可证中。我认为该短语是“二进制分发”或“二进制重新分发”。)

更新

我刚刚检查了一下,我的记忆是正确的。请参阅"Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX" 的补充许可条款部分。 (C 段最直接适用于您的场景。)正如我上面所说,条件适用。

结束更新

我不认为你被允许捆绑免费版本的 MySQL。


就个人而言,我建议 AGAINST 为 Java 执行此操作,因为:

  1. 它会增加可分发的大小。
  2. 它用额外的 JRE 副本填充用户的光盘。
  3. 如果需要修补用户(无意中)安装的捆绑 JRE,则会出现问题。
  4. 您让(老练的)用户难以选择要使用的 Java 版本。

【讨论】:

  • 你确定JRE吗?根据我的一些经验,我觉得不行。至少在Oracle进入图片之后
  • 我同意这 3 个注释。我已经看到了这些问题并且是真实的。 +1 提及这些
  • 如果我选择安装 JRE,如果没有 JRE 会怎样。这不会导致额外的复制问题,对吧?
  • @AnuragRamdasan - 您将如何确定没有安装 JRE?你会去哪里看?这不是一个简单的问题。
  • @AnuragRamdasan:由于 JRE,您的交付物将被放大 80+ MB。此外,自动更新也不起作用。此外,如果用户稍后下载 JRE,他将获得您的额外副本.
猜你喜欢
  • 2011-05-28
  • 2017-12-12
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多