Interprocess communication (IPC) is a fundamental part of any enterprise system. We've long since moved beyond the day when everything—user interface, processing, and data storage—can be stored on a single machine and still be effective. Code needs to be able to communicate with processes running on other machines. IPC is what makes a distributed system, well, distributed.
Lots of different technologies could be lumped under the global category of communications. For example, database access to a remote database requires a communications layer over which to send SQL commands and receive the results. Coordinating with a distributed transaction controller (such as the EJB container or other JTA-compliant software process) requires network communication. Even simple HTTP itself is a form of communication between two endpoints. For purposes of this chapter, however, communications is the layer of software that lets my client code call into your server code for some kind of arbitrary processing authored by one or the other of us—ordering a book, checking the status of an order, filling out a corporate expense report form, and so on.