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.
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.