Middleware is computer software that connects software components or applications. The software consists
of a set of services that allows multiple processes running on one or more machines to interact across a
network. This technology evolved to provide for interoperability in support of the move to coherent
distributed architectures, which are used most often to support and simplify complex, distributed
applications. It includes web servers, application servers, and similar tools that support application
development and delivery. Middleware is especially integral to modern information technology based on
XML, SOAP, Web services, and service-oriented architecture.
Middleware sits "in the middle" between application software working on different operating systems. It is similar to the middle layer of a three-tier single system architecture, except that it is stretched across multiple systems or applications. Examples include database systems, telecommunications software, transaction monitors, and messaging-and-queueing software.
The distinction between operating system and middleware functionality is, to some extent, arbitrary. While core kernel functionality can only be provided by the operating system itself, some functionality previously provided by separately sold middleware is now integrated in operating systems. A typical example is the TCP/IP stack for telecommunications, nowadays included in virtually every operating system.
In simulation technology, middleware is generally used in the context of the high level architecture (HLA) that applies to many distributed simulations. It is a layer of software that lies between the application code and the run-time infrastructure. Middleware generally consists of a library of functions, and enables a number of applications, simulations or federates in HLA terminology to page these functions from the common library rather than re-create them for each application.