可能重复:
您是否混淆了您的商业 Java 代码?
除了混淆之外还有其他方法可以保护罐子不被其他人打开吗?问题是我不希望任何人访问代码,这就是我不喜欢 Java 的原因。从我使用的反编译器来看,用 C# 和 Java 制作的程序具有完整的变量名称,这使得访问非免费程序变得容易。更糟糕的是,给出源代码。
可能重复:
您是否混淆了您的商业 Java 代码?
除了混淆之外还有其他方法可以保护罐子不被其他人打开吗?问题是我不希望任何人访问代码,这就是我不喜欢 Java 的原因。从我使用的反编译器来看,用 C# 和 Java 制作的程序具有完整的变量名称,这使得访问非免费程序变得容易。更糟糕的是,给出源代码。
上面的评论涵盖了大部分这些要点,但我将在这里对其进行一些扩展:
如果你的代码在用户的机器上运行,用户可以反编译你的代码。它是什么语言并不重要。Java,C,空格,brainfuck,没关系。如果代码在计算机上运行,人类可以阅读它。即使您制作自己的自制语言和编译器,编译后的代码仍将是一系列标准机器指令,反编译器将轻松地将其转换为 C 或您喜欢的任何语言的可读代码。
没有例外。忘掉它。
但是有一些方法可以得到你想要的:保护一些秘密的业务逻辑。一种简单的方法是将业务逻辑放在您自己的机器上,并通过 Web 服务公开它。用户仍然可以看到客户端请求和服务响应,但您的逻辑是一个黑匣子。
您还可以制作自己的机器,将它们锁定,然后分发给用户。请注意,虽然这是可能的,但在技术上很难做到正确(想想所有被黑的游戏机和智能手机),并且会显着增加您的服务成本。
据我所知,jar
文件(使用 NetBeans 生成)可能只包含.class
文件,这些文件是 Java 代码,而不是源代码。我不知道是否有办法对文件进行逆向工程,但它的ASCII可用文本.class
很少。