The messages passed over HTTP were actual Java objects, serialized using the 1.1 serialization mechanism. The interesting thing about this communications implementation is that it's hidden within ObservableList , which is the client data structure that contains the actual list of whiteboard objects to be displayed. As far as the whiteboard is concerned, it doesn't matter whether we're using RMI, Berkeley sockets, or HTTP to effect communications. In fact, the servlet-based communications layer was substituted in place of a similar one using RMI, which in turn replaced a layer that used sockets. Sockets and HTTP have the advantage of being simple, flexible, and fast.
Sockets allow realtime communication.
HTTP solves the problem of communicating through firewalls. In fact, you must provide a messaging protocol as well as the message transport. RMI provides this, and hides the mechanics of it from the developer. We'll cover only the core ones here. The ORB keeps track of the location of remote server objects and makes local objects available remotely as servers.