最佳实践:Java Desktop应用程序的许可证实施

在Java应用程序中实现许可证实施的最佳方法是什么,以便在用户不购买许可证的情况下无法“分发”和使用应用程序?

看看truelicense ,它是一个开源框架,可以做到这一点。 如果你想自己创建一些文档来解释这些概念,你也可以通过查看代码来获得一些好的想法。

编辑:值得一提的是,它不是一个复制保护方案

我建议你甚至不要尝试添加复制保护。 你会惹恼别人。 如果人们喜欢您的产品,您更有可能获得销售。 小偷和对待小偷这样的顾客是无济于事的。 (除非产品真的很糟糕,否则你必须阻止人们在购买之前尝试它。)

您可能希望发送许可证密钥,其唯一目的是满足那些想要获得收入的用户。 只需在某处添加状态即可显示是否已付款。 状态需要相当明显,以便很明显发生了一些事情(我之前工作过的产品是软盘上的两张光盘 – 一半的支持电话是因为安装程序没有要求第二个[win32s]盘)。

我所知道的许可计划并不容易破解。 我不会详细说明,但作为一个例子,在Java情况下,如果它是用Java完成的,那么它可以被反编译(就像C ++或任何编译语言一样,但Java比C ++更容易)。 如果它是本机完成的,那么您需要本机方法,并且DLL / so可以替换为允许访问的DLL。

对于C / C ++示例,我知道有人反编译CL(Microsoft编译器)以弄清楚它们是如何命名的。 他们所拥有的只是二进制文件,他们能够用反汇编程序和大量时间来完成它。

不要为这类事情烦恼,它会惹恼诚实的用户,并适度减慢那些想要复制它的人。 看看World of Goo(伟大的游戏!)和他们对DRM的看法 (这与你所说的相似)。

World of Goo的开发人员发现,他们的产品在90%的时间内被盗版 (他们解释了这个数字可能是不准确的),与另一款DRM附带的游戏相比,92%的时间是盗版。

如果您正在谈论合法企业,那么他们通常希望获得许可证合规性,因此确保它们不是复制是浪费。 如果你在谈论那些不会开始购买产品的人,或者只是不想为此付费,你实际上并不会改变非法获取软件的人数,你只会放慢速度。得到它的第一个人 – 之后猫从袋子里出来。

我个人认为IntelliJ是正确的:全function版本30天。 你不应该比这更具限制性。

“function齐全”部分非常重要。 如果您的未注册版本如此残缺而无用,您如何期望人们决定购买它? 他们必须在他们决定喜欢他们并且想要他们之前尝试function,但是一些供应商认为人们会购买一些他们无法尝试的function的东西是荒谬的。

甲骨文处于最自由的一端。 您基本上可以下载其软件的全function版本并使用它。 他们将许可视为一个社会问题,这个论点有很多优点。

您永远不应该唠叨或以其他方式骚扰您的潜在客户(除了可能在预定时间段后使软件过期)。 你应该给出的最多通知是“在N天内过期”,比如说是一个闪屏或什么的。

您可以而且应该做的另一件事是为您的软件提供较低的进入门槛。

提供廉价(如果不是免费的)学术或个人版本。 营销也是一个好主意。 我的意思是采取IntelliJ:它是免费提供给批准的开源项目。

至于执法的技术方面:不要太在意技术方面。 永远不要选择任何惹恼用户的方案,或者更糟糕的是,减慢软件速度(如某些方案那样)或(甚至更糟)违反用户操作系统的安全性(例如索尼rootkit惨败)。 你的执法并不意味着防黑客。 如果人们想偷你的软件,他们会。 对于社交而非技术问题,执行系统是温和的提醒(仅此而已)。

读完oracle的BCL后(肯定了商业自由)。 然后,我与一位oracle代表进行了对话,他说JavaSE可以免费用于商业用途!