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

Joh*_*ner 0 java java-8 signed-applet javafx-8

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

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

jew*_*sea 7

简短的建议

  1. 许可您的软件供他人使用,例如对其应用2条款BSD许可.
  2. 如果您分发第三方库或运行时,请确保您符合这些运行时的许可.
  3. 为您的应用程序选择分发执行模式(例如自包含的应用程序).
  4. 根据您打算分发软件的方式,可能需要也可能不需要使用证书对软件进行签名.
  5. 如果您希望用户通过第三方证书颁发机构验证您的身份,请从授权机构购买证书,否则请使用自签名证书.

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

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

部署模式

部署应用程序的方式将影响应用程序的签名要求.

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

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

如果您希望Mac用户最轻松地使用您的独立应用程序,那么您可能还需要Apple开发人员ID,但即使您没有此类ID,受过良好教育的用户仍可以使用您的软件.

证书

你提到的许可证是不是许可什么,它是一个证书由颁发证书颁发机构.证书是根据证书策略发布的,以帮助建立信任关系(例如,您的软件用户可以知道它来自John Conner,而不是终结者或其他一些恶意感染网络的人).

您无需从众所周知的证书颁发机构获取软件签名证书.您可以成为自己的权限并创建自签名证书.使用自签名证书时,用户将看到与使用来自知名证书颁发机构的证书不同的安全提示.从本质上讲,通过自签名证书,您可以保证自己的身份; 用户不会向第三方验证提供该软件的人是他们声称的人.

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

如果使用NetBeans等IDE,则会在必要时自动创建和使用自签名证书.您可以使用命令行工具(如java keytooljavafxpackager或第三方工具)使用自签名或第三方颁发的证书对您的应用程序进行签名.

许可证

一个软件许可规定了软件的使用和再分配法律参数(认为版权法而非加密工具),所以它的东西从建立信任使用的证书完全不同.

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

您还应该许可您编写的软件供他人使用.由于您是为自己的软件颁发许可证的人,因此您不购买许可证,只需选择您希望的许可证,并将其文本文件与您的软件一起包含在某人可以看到的地方.

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

对于你的问题描述的应用,我建议使用自包含的部署模式,打包应用程序作为本机平台的安装程序(dmg文件OS X,msiexe为Windows,rpmdeb用于Linux等).这样,用户可以下载特定于其计算机的单个文件,并以与任何其他软件完全相同的方式安装和卸载您的应用程序.

独立包装:

  1. 包装中包含Java运行时,因此您无需依赖自己安装该运行时的应用程序用户.
  2. 目前,此部署模式不需要使用证书进行签名.
  3. 用户在安装时看不到异常的特定于Java的警告对话框.
  4. 机器上安装的单独Java运行时没有依赖关系,可能会升级或删除,这可能会破坏您的应用程序.

将您的应用程序作为jnlp分发以便可以在浏览器中部署可能听起来像一个诱人的选项,但是历史上很多人都遇到了以这种方式可靠地部署应用程序的问题,您的体验可能会有所不同.

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

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

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