java - JavaFX-我需要购买许可证并通过我的软件以在线共享它吗?

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

好的,所以我注意到(我想是由于安全漏洞)Java决定强迫人们对他们的Java软件进行签名,并且有传言说许可证的价格在100美元到300美元之间。这应该取决于您通过的授权被许可人。但是,我正在学习JavaFX,如果不能与世界免费共享软件,那么学习它有什么意义呢?

问题是,在线或离线javafx应用程序是否都适用?让我感到困扰的是,我可能不得不自掏腰包,对我的软件进行测试和通过,以便对其进行验证,以便任何人甚至都可以从自己的计算机上运行它。我开始考虑这个问题是因为我刚刚开始我的第一个真正的JavaFX项目。这是一个扑克游戏,它将具有各种风格的扑克,甚至可能包含二十一点。确实让我感到沮丧的是,除了我之外,没有人会玩它。有人可以解释一下这种巨大的变化,这对于刚开始的开发人员意味着什么?

最佳答案

简短建议


许可您的软件供他人使用,例如授予apply a 2-clause BSD license的使用权。
如果您分发第三方库或运行时,请确保您符合这些运行时的许可证。
为您的应用程序(例如自包含应用程序)选择一个distribution execution mode
根据您打算分发软件的方式,可能需要或可能不需要使用证书对软件进行签名。
如果希望您的用户通过第三方证书颁发机构验证您的身份,请从该证书颁发机构购买证书,否则请使用自签名证书。


对于您在问题中定义的特定用例:


许可自己的软件不需要任何费用。
与您的软件一起分发未修改的Java 8运行时是免费的。
不签名软件或使用(免费)自签名证书可能没问题。


部署方式

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

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

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

如果您希望Mac用户轻松地使用独立应用程序,则即使您没有这样的ID,受过教育的用户仍然可以使用您的软件,但您可能还需要Apple Developer ID

证明书

您所说的许可证不是许可证,它是由certificate颁发的certificate authority。根据certificate policy颁发证书以帮助建立信任关系(例如,您的软件的用户可以知道它来自John Conner,而不是来自Terminator或其他恶意感染网络的恶意软件)。

您无需从知名的证书颁发机构获取软件签名证书。您可以是自己的权限,也可以是create a self-signed certificate。当您使用自签名证书时,与您使用来自知名证书颁发机构的证书相比,用户将看到不同的security prompt。本质上,使用自签名证书可以证明自己的身份。用户不会与第三者确认谁提供了该软件,即他们声称是谁。

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

如果使用NetBeans之类的IDE,它将在必要时自动创建并使用自签名证书。您可以将Java keytool之类的命令行工具与javafxpackager或第三方工具结合使用,以使用自签名或第三方颁发的证书对应用程序进行签名。

执照

software license在软件的使用和重新分配上施加了法律参数(请考虑使用版权法,而不是使用密码工具),因此它与用于建立信任的证书完全不同。

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

您还应该license the software you write供他人使用。因为您是为自己的软件颁发许可证的人,所以您无需购买许可证,只需选择所需的许可证,然后将其文本文件包含在软件中可以在某人看到的位置。


  假设我要分发Javafx程序,我应该给他们哪个文件?


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

使用独立包装:


包装中包含Java运行时,因此您无需依赖应用程序用户自行安装该运行时。
当前,此部署模式不需要使用证书签名。
用户在安装时看不到异常的Java特定警告对话框。
机器上没有安装单独的Java运行时,可以对其进行升级或删除,从而可能破坏您的应用程序。


以jnlp的形式分发应用程序,使其可以成为deployed within a browser听起来像是一个诱人的选择,但是从历史上看,许多人一直在以这种方式可靠地部署应用程序时遇到问题,您的体验可能会有所不同。

也可以选择仅将应用程序构建为jar并将其提供给某人(如果要捆绑其他库和资源,则提供为zip)。对于已经在其计算机上安装了Java运行时的开发人员来说,它会很好用,但是对于一般用户,要求他们在其计算机上找到并安装正确的Java运行时,以便您可以运行应用程序可能是不明智的选择。

在您刚刚学习JavaFX时,请专注于编写一个值得分发的优秀应用程序,然后再考虑如何授权和分发它。

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

关于java - JavaFX-我需要购买许可证并通过我的软件以在线共享它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25279300/

相关文章:

java - RabbitMQ 消息过期通知

java - 按钮事件处理程序更新文本字段问题

java - 使用 hibernate 查找最接近的纬度和经度匹配

java - 如何从Java中的mongodb集合返回数据

Java 网络客户端小程序

java - 流多个过滤器内部

java 8 streams 如何将 Map<String, List<Strings>> 转换为 List<String> 将所有字符串值?

css - 删除 styleClass 时 applyCss 不起作用

java - 保留按钮 :focus when changing Tabs in TabPane

java - 对颜色值求和时使用位运算对数字求和的最快方法