The role of middleware is to make application development easier, by providing common programming abstractions, by masking the heterogeneity and the distribution of the under lying hardware and operating systems, and by hiding low-level programming details.