字节码增强似乎是一种非常有趣的 Java 技术,但它有点“黑魔法”的感觉。使用它是否有任何缺点(除了将功能添加到源代码中不明显的类的事实)?
它是否会导致安全性、序列化等问题?
字节码增强似乎是一种非常有趣的 Java 技术,但它有点“黑魔法”的感觉。使用它是否有任何缺点(除了将功能添加到源代码中不明显的类的事实)?
它是否会导致安全性、序列化等问题?
使用它是否有任何缺点(除了将功能添加到源代码中不明显的类的事实)?
一件事是字节码操作产生的错误可能更难诊断。检查源代码和源代码级调试将更加困难。
是否会导致安全问题,
验证器应该(理论上)防止修改后的字节码破坏核心类型系统并破坏 JVM。(不言而喻,不应该允许不受信任的代码进行字节码修改,因此我们可以忽略这种情况。)然而,在过去,一些 Java 字节码验证器不够彻底。
此外,字节码修改:
序列化等?
字节码修改可以使现有的序列化对象被修改后的类可读;例如,通过添加和删除字段,或通过更改类超类和接口。但是,您可以通过更改源代码来做同样的事情。