我试图理解为什么 MBean 在 Java 中如此重要,而我不记得有任何其他语言具有这样的范式或模式。
那么为什么存在 MBean,它们试图解决什么问题,以及其他语言是如何解决这个问题的呢?(我更喜欢与 Python 进行比较,因为我明白那是最好的)
Java 中的 MBean 是一种管理应用程序的方法。假设您想查看执行方法需要多长时间,或者您想调整记录器设置或更改配置属性。通过 MBeanServer 的 MBean 允许您在应用程序中提供挂钩来执行此操作。您需要创建并连接您的 MBean,然后在 MBean 服务器中注册它们,该服务器将它们公开以进行管理操作(基本上从/向您的 mbean 读取/写入数据)。JConsole(与 jvm 一起提供)允许您远程或本地连接并在您的 mbean 上执行调用。还有大量使用 JMX 的工具(New Relic 和其他管理工具可能使用它)。它们特定于 Java,但其他语言可能有类似的对应物(不幸的是,我对 Java 以外的知识了解不多)。
MBean 不是“设计模式”。MBean 是一种接口标准,它是 JMX 的一部分。它在 JMX 之外没有任何意义。除非 JMX 在其他语言中定义了 API 绑定,否则在其他语言中不会有直接的等价物,但它没有。
它们存在的原因是因为 JMX 定义一个通用接口标准来处理这些对象是谨慎的。
他们打算解决的问题是提供一个 JMX 可以使用的一致的标准化接口。
可能存在与 JMX 具有类似功能的其他语言绑定的 API,但它们不会使用 MBean,它们会使用那些其他 API 中定义的任何内容。
如果您不使用 JMX,那么使用 MBean 将毫无意义。事实上,如果您不使用 JMX,您可能会争辩说,即使您将某个东西称为“MBean”,它在概念上也不会是一个。