Middleware is a general term for software that serves to "glue together" separate, often complex and already existing, programs. Some software components that are frequently connected with middleware include enterprise applications and Web services.
Middleware often sits between the operating system and applications on different servers and simplifies the development of applications that leverage services from other applications. This allows programmers to create business applications without having to custom craft integrations for each new application.
At a basic level, middleware provides services required to connect applications together such as concurrency, transaction management, threading and messaging. More sophisticated implementations of middleware principles are baked into modern integration infrastructure such as enterprise service bus (ESB) and API management software to provide greater governance, risk management and accountability.
Some common types of middleware products include messaging middleware, database middleware and application server middleware.