Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行Java字节码插装的最经得起未来考验的方法是什么?_Java - Fatal编程技术网

执行Java字节码插装的最经得起未来考验的方法是什么?

执行Java字节码插装的最经得起未来考验的方法是什么?,java,Java,我希望从JDK1.5开始执行Java字节码检测。有没有一种方法可以在大多数JVM中使用并且在未来版本的JDK中得到支持?我建议您使用一个库,它可以抽象出原始字节码的读/写。像ASM。这样,将来的任何更改都可以通过更新库来修复。此外,其中许多已经经历了许多版本的更改,并且有一个非常符合版本要求的结构 话虽如此,JVM版本之间的字节码变化非常少。如果有机会更改字节码或进行变通,似乎总是使用后者。e、 g.Java多年来一直支持内部类访问外部类的私有成员,但是JVM并不直接支持这一点(编译器使用了变通

我希望从JDK1.5开始执行Java字节码检测。有没有一种方法可以在大多数JVM中使用并且在未来版本的JDK中得到支持?

我建议您使用一个库,它可以抽象出原始字节码的读/写。像ASM。这样,将来的任何更改都可以通过更新库来修复。此外,其中许多已经经历了许多版本的更改,并且有一个非常符合版本要求的结构


话虽如此,JVM版本之间的字节码变化非常少。如果有机会更改字节码或进行变通,似乎总是使用后者。e、 g.Java多年来一直支持内部类访问外部类的私有成员,但是JVM并不直接支持这一点(编译器使用了变通方法)

仅仅因为无法知道它们可能会发生什么变化,所以几乎不可能保证将来的兼容性。我只是想指出这一点。但我们可以假设大多数字节码编码不会有任何重大变化。但至少在当前的JDK中,有什么方法可以很好地实现这一点呢?ASM上有没有这样的库?我想说ASM的库位于其核心库之上。你看过ASM了吗?我看过ASM,但是它太低级了。如果你想看字节码,你需要看低级。另一种方法是使用AOP。e、 g.AspectJ。这是一个更高级别的库,允许您注入Java代码,也许这更合适。