JMX 1.2 defined all changes to the JMX specification needed to support remote API.
Imagine a situation where a client needs to contact a remote MBeanServer, to invoke operations on it and
to receive the result of such invocations.
In order for this situation to be possible, the JMX specification needed several changes such as
specifying the serialVersionUID of serializable classes that can be exchanged between the client and
the remote MBeanServer (for example
javax.management.MBeanInfo), specifying
details of MBeanServer's classloading to support classloading from remote locations, and the possibility
for the client to invoke operations on an MBeanServer-like interface that supports remote invocation
(for example that throws IOException if the connection with the remote MBeanServer is broken).
The MBeanServer interface cannot be used directly by clients that need to contact a remote MBeanServer.
The reason is that this interface does not list, in its method's throws clause,
java.io.IOException as a possible exception being thrown.
Furthermore, the MBeanServer interface has some method (like registerMBean(), deserialize(),
getClassLoader(), etc.) that have no meaning in the remote case.
The
javax.management.MBeanServerConnection interface has been defined as the
portion of the MBeanServer interface that can be used by client to contact a remote MBeanServer, and
is MBeanServer's parent interface.