2009-05-18 61 views
1

我正在为我的应用程序构建一个插件系统。我读过任何人都可以解析.class文件,因此我不得不使用Ahead-Of-Time编译器(对吗?)。问题是我需要动态加载一些插件类。现在我正在加载一个文件夹中的所有.class文件,并调用一个静态方法(我从来不会创建一个对象)作为插件系统。Java AOT +动态加载Java类

当我所有的源代码都是AOT的时候,我可以加载这些类吗? 我应该以另一种方式解决问题吗? 对我来说Java是否是正确的语言?

回答

4

提前编译并不是阻止人们反编译。我想你应该使用混淆器来达到这个目的。

为插件系统动态加载类应与混淆器和AOT兼容。

+0

THX,我会看futher到前一个混淆部署我的应用程序。 Unill那么我会无视“问题” :) – Baversjo 2009-05-18 21:13:41

+1

其实,AOT编译器做的确块编译(通过转动字节码转换为机器码)。请参阅Excelsior JET产品页面上的功能#2:http://www.excelsior-usa.com/jet.html。 – 2009-05-18 21:22:55

2

Tahit Akhtar是对的。你需要一个混淆器。您必须将其配置为不会混淆程序动态加载和调用插件的类和方法的名称。也就是说,插件的公共SPI不能被混淆,但它们的实现可以。

1

除非你的类包含一些非常绝密的功能,我会说滴混淆...

我建立我自己的一个插件框架和我有同样的想法,以阻止访问插件代码(因为一切敏感将在那里),但我放弃了,你能想到的是已经在网上公布今天的一切,有软件开发没有更多的秘密;)