我有一个Java应用程序,我正在考虑通过网络作为applet发布。我担心java-savvy最终用户能够以某种方式查看源代码,因为我的Web服务器会在尝试使用applet时将代码发送到他们的远程jvm。
可以采取哪些预防措施来确保最终用户永远无法直接查看applet的源代码?
我希望作为applet的发布可能以某种方式保护代码的隐私,而不是发布一个用户可以解压缩的可下载jar的应用程序。这是真的?
答案 0 :(得分:2)
由于Jar本质上只是一个伪装的zip文件,因此没有办法阻止人们查看源代码。有许多可用于Java类的反编译器。大多数关注最终用户反编译源代码的开发人员使用混淆器来使代码或多或少不可读或至少难以理解。
很抱歉这个问题没有一个好的答案,只是Java语言的本质,你总是可以反编译源代码。
有一些选项可以将Java应用程序包装在可执行文件中,这会使访问Jar本身变得更加困难,但显然你不能为applet执行此操作。
这是一篇关于将Java转换为可执行文件的(公司)博客文章: http://www.excelsior-usa.com/articles/java-to-exe.html
从SO线程中拉出主题: How can I convert a JAR file to an EXE file?
答案 1 :(得分:0)
您可以使用available open-source code obfuscators中的一些(许多人建议使用ProGuard,不仅用于混淆,还用于代码最小化)。
答案 2 :(得分:0)
如果有人真的想要你的代码,他们就会得到它。你能做的最好的事情就是尽量让它变得更难。正如其他人所说,典型的方法是使用代码混淆器。
如果您使用Maven构建项目,可以使用proguard-maven-plugin中的maven central repository。
但是,由于您正在考虑将其作为applet发布,如果您可以在服务器端代码上运行任何功能,那么您可以更加努力地保护您的代码库。