在加载之前检测编译代码的缺点

时间:2012-07-02 13:10:59

标签: java classloader instrumentation

如果应用程序在使用自定义加载程序加载它们之前创建了工具类文件,那么任何人都可以了解可能出现的问题。我创建了一个执行相同操作的java应用程序。

我以字节数组的形式读取类文件 然后我使用asm库进行检测 通过自定义类加载器加载它们。

如果是的话,这个程序是否容易失败?

1 个答案:

答案 0 :(得分:1)

这个问题的主要问题是它将您的应用程序绑定到JVM。 Java社区非常努力地保持JLS和JVMS分离,因此理论上可以在没有JVM的情况下使用Java ,并且有两个相当普遍的平台,其中Java 实际上是在没有JVM的情况下使用:Android和GWT。如果您不希望在不了解Java字节代码的平台上运行,那么您没问题。

请注意, static 字节码操作的东西是完全可以的。在操作之后,您可以将JVM字节代码交叉编译为Dalvik字节代码。但是如果你想在运行时这样做,你必须在你的应用程序中包含JVM-to-Dalvik交叉编译器......而仍然将无法工作,因为Dalvik VM根本不支持动态字节代码的加载方式与JVM相同。