Middleware is a software layer situated between applications and operating systems. Middleware is typically used in distributed systems where it simplifies software development by doing the following:
Hides the intricacies of distributed applications
Hides the heterogeneity of hardware, operating systems and protocols
Provides uniform and high-level interfaces used to make interoperable, reusable and portable applications
Provides a set of common services that minimizes duplication of efforts and enhances collaboration between applications