Communication is a concept that has been around forever. Everything needs to communicate by exchanging some kind of information, and yes, you read that right, I mean everything. If you think about it, even the ads that you find on the side of a bus or in the grocery store are trying to tell or sell you something, right?
In the computer world, devices (mouse, monitor, keyboard, etc.) communicate with each other by exchanging bits of information. If we consider applications, then we are talking about components, functions, classes, etc., that need to communicate with each other or expose some functionality ...