J2SE is the most common, probably RMI or raw sockets.
J2EE uses a messaging bus that all (servers and clients) subscribe to, which are very different from rmi-style solutions (although at the lowest level, an implementation can still rely on RMI). This helps automate redundancy and fault tolerance. If you need this functionality, I believe that it can also be used in SE.
I have not used J2EE for a long time, so this may have changed, but I doubt it. The messaging system was a core component of J2EE.
Bill k
source share