Java 代理通过提供使我们能够侵入 JVM 中正在运行的 Java 程序的服务而在最低级别工作。如果操作不正确,Java 的这个强大而不可思议的部分具有使 JVM 崩溃的能力。本文简要介绍了这个概念并介绍了它的工作原理。
概述
代表 Java 代理的类显然只不过是 Java API 库中的任何其他类。但是,它们的特别之处在于它们遵循某种约定,该约定使 Java 代码能够拦截在 JVM 中运行的另一个应用程序。目的只是让代理调查或修改字节码。这是一个强大而又不可思议的功能,超出了 Java 程序通常的功能。在某种程度上,它可以闯入程序并修改字节码或造成破坏。了解这不是添加到 Java 中的新技术或新特性。自 JDK 1.5 以来,它一直是库的一部分。这意味着使用它们也有一些真正的好处。但是,在讨论它们的好处以及如何使用它们之前,让我们先看看我们可以在 Java 中哪里找到它们。
Java 代理和检测
Java 代理是 Java Instrumentation API 的一部分。 Instrumentation API 提供了一种修改方法字节码的机制。这可以静态和动态地完成。这意味着我们可以通过向程序添加代码来更改程序,而无需触及程序的实际源代码。结果会对应用程序的整体行为产生重大影响。
Java 代理和检测 API 位于名为 java.lang.intrumentation 的包中。
Java 代理的使用
Java 代理可以有多种用途,例如面向方面编程 (AOP)、变异测试、分析等。 AOP 通常在不更改代码的情况下向现有程序添加日志记录或安全性等行为。 它使用 Java 代理来操作字节码,并将其特性与程序结合起来。 监视 JVM 级别的参数,如对象创建、垃圾收集、线程执行等,是分析器的工作。 分析工具在分析执行程序的 JVM 参数时大量使用 Java 代理。
在许多其他情况下,Java 代理和检测 API 都非常方便。
结论
尽管 Java 代理和 Java Instrumentation API 在应用程序开发中的使用并不频繁,但了解它们的全部含义可以阐明 Java 的许多其他方面。