title: What is middleware in distributed systems?
body: <p>I am taking a class on distributed systems right now and I can't grasp the idea of middleware. I understand that it is a software layer that provides a level of abstraction between the application and the actual communication over the network, but I need concrete examples. I know CORBA and Java RMI are examples of middleware, but those dont really make sense to me.</p>
  
  <p>When I write a client-server program in Java that communicates over DatagramSockets() is that middleware? If so why not? The Java DatagramSocket() method provides a level of abstraction from my application to the actual communication over the network.</p>