JavaFX - 我是否需要购买许可证并通过我的软件在线共享?

时间:2014-08-13 06:19:59

标签: java java-8 javafx-8 signed-applet

好的,所以我注意到了(我假设是由于安全漏洞)Java已经决定强迫人们让他们的java软件签名,传闻许可证的费用在100美元到300美元之间。这应该取决于您经历的授权被许可人。然而,我正在学习JavaFX,如果我不能与世界免费分享我的软件,那么学习它有什么意义呢?

问题是在线或离线javafx应用程序是否也是如此?让我感到困扰的是,我可能需要自掏腰包支付现金,并对我的软件进行测试和通过,以便对其进行验证,以便任何人都可以将其从计算机上运行。我开始考虑这个因为我刚刚开始我的第一个真正的JavaFX项目。这是一个扑克游戏,并将有各种风格的扑克,甚至可能包括二十一点。真的让我失望的是,除了我,有可能没有人会玩它。有人可以解释一下这个重大变化以及它对开发人员的启动意味着什么?

1 个答案:

答案 0 :(得分:7)

简短建议

  1. 许可您的软件以供他人使用,例如apply a 2-clause BSD license
  2. 如果您分发第三方库或运行时,请确保您符合这些运行时的许可证。
  3. 为您的应用选择distribution execution mode(例如自包含的应用程序)。
  4. 根据您打算如何分发软件,可能需要也可能不需要使用证书对软件进行签名。
  5. 如果您希望用户通过第三方证书颁发机构验证您的身份,请从当局购买证书,否则请使用自签名证书。
  6. 对于您在问题中定义的特定用例:

    1. 许可您自己的软件不需要任何费用。
    2. 使用您的软件分发未修改的Java 8运行时是免费的。
    3. 不签署软件或使用(免费)自签名证书可能没问题。
    4. 部署模式

      如何部署应用程序将影响应用程序的签名要求。

      通过webstart或Java浏览器插件部署的应用程序应使用自签名或第三方证书进行签名。可以使用标准Java deployment tools(以及NetBeans等IDE)。

      通过商店(如Mac App Store)部署的应用程序需要从商店所有者(例如Apple)获取该商店的开发者证书。虽然商店的数字签名概念类似于浏览器嵌入内容的签名,但签名过程是不同的,并且需要使用商店所有者提供的第三方工具。

      如果您希望Mac用户轻松使用您的独立应用程序,那么您可能还需要Apple Developer ID,尽管受过良好教育的用户仍然可以使用您的软件,即使您没有有这样的身份证。

      <强>证书

      您所指的许可证不是许可证,而是由certificate颁发的certificate authority。证书是按照certificate policy发布的,以帮助建立信任关系(例如,您的软件用户可以知道它来自John Conner,而不是终结者或其他一些恶意感染网络的人)。

      您无需从众所周知的证书颁发机构获取软件签名证书。您可以成为自己的权威create a self-signed certificate。使用自签名证书时,用户将看到与使用来自知名证书颁发机构的证书不同的security prompt。从本质上讲,通过自签名证书,您可以保证自己的身份;用户不会向第三方验证提供该软件的人是他们声称的人。

      是选择使用自签名证书还是支付证书颁发机构来授权您的身份取决于您希望如何向用户展示您的应用程序。如果您只是将您的应用程序分发给了解您的几个朋友,那么自签名证书就是好的。如果您想将您的应用程序分发给数千名不了解您的人,则建议您签署该应用程序。此外,某些部署模式要求使用证书。

      如果您使用NetBeans等IDE,则会在必要时自动创建并使用自签名证书。您可以使用java keytool等命令行工具与javafxpackager或第三方工具一起使用自签名或第三方颁发的证书对您的应用程序进行签名。

      <强>许可证

      A software license对软件的使用和再分配规定了法律参数(想想版权法而不是加密工具),因此它与用于建立信任的证书完全不同。

      如果您在应用程序中分发第三方软件,则必须遵守第三方授予您的许可。您有责任阅读并理解该软件的许可,并确保您遵守该规范。

      您还应该license the software you write供其他人使用。由于您是为自己的软件颁发许可证的人,因此您不会购买许可证,只需选择您希望的许可证,并将其包含在您的软件文本文件中,以便有人可以看到它。 / p>

        

      让我们说我想分发我的Javafx程序,我给它们哪个文件?

      对于您问题中描述的应用程序,我建议使用self-contained部署模式,该模式将应用程序打包为本机平台安装程序(OS {的dmg文件,msi或{适用于Windows的{1}},适用于Linux的exerpm等)。这样,用户可以下载特定于其计算机的单个文件,并以与任何其他软件完全相同的方式安装和卸载您的应用程序。

      使用自包装包装:

      1. 包装中包含Java运行时,因此您不需要依赖自己安装该运行时的应用程序用户。
      2. 目前,此部署模式不需要使用证书进行签名。
      3. 用户在安装时看不到异常的特定于java的警告对话框。
      4. 计算机上安装的单独Java运行时没有依赖关系,可能会升级或删除,这可能会破坏您的应用程序。
      5. 将您的应用程序分发为jnlp以便它可以deployed within a browser听起来像是一个诱人的选项,但是历史上很多人都遇到了以这种方式可靠地部署应用程序的问题,您的体验可能会有所不同。

        只需将您的应用程序构建为jar并将其提供给某人(或者如果您想要捆绑其他库和资源,则将其作为zip)也是一种选择。对于已在其计算机上安装了Java运行时的开发人员,它可以正常工作,但对于普通用户,要求他们在他们的计算机上查找并安装正确的Java运行时,以便运行应用程序可能是不可取的。

        当您刚学习JavaFX时,请专注于编写值得分发的优秀应用程序,然后担心如何许可和分发它。

        如果您将部署到iOS或Android或Raspberry Pi等低功能设备,则技术上受限制,因为运行时环境与您在桌面上找到的完全不同。目标iOS或Android目前不是我建议学习JavaFX的人(由于目前这些平台上JavaFX运行时的不成熟状态)。如果您的目标是iOS或Android,请在对应用程序进行重要工作之前查看javafxports上的信息,因为它可能会限制您可能选择在应用程序中使用的Java语言功能或第三方库。