Why Do We Need Messages?

This is a perfectly valid question. If we have object-based communication schemes like CORBA and RMI available in the Java environment, why would we have to resort to passing messages, a simple but restrictive communication method, to transmit information between agents?

While message passing isn’t as sophisticated and robust as distributed objects, it’s relatively simple to implement using the java.io package. The goals of the two approaches are very different. Distributing objects extends an application across the network by making its objects appear to be spread across the hosts in our virtual machine. Message passing serves a much simpler role, defining a simple communication protocol for sending data. Passing messages over I/O streams also avoids the communication overhead involved in using most distributed object schemes, and doesn’t require any special network protocols. So message passing is a useful and sometimes necessary tool, particularly in the following situations:

  • Communication needs are relatively simple in nature

  • Transaction throughput is critical

  • The scope of the your system is limited, so that rapid implementation takes precedence over sophistication and flexibility of design

  • Special network protocols need to be avoided (e.g., parts of the system need to operate behind a firewall)

  • Remote object protocols (e.g., an applet in a browser that doesn’t support RMI or CORBA) simply aren’t available

Get Java Distributed Computing now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.