Middleware is a computer software
that provides services to software application
s beyond those available from the operating system. It can be described as "software glue".
Middleware makes it easier for software developer
s to implement communication and input/output
, so they can focus on the specific purpose of their application. It gained popularity in the 1980s as a solution to the problem of how to link newer applications to older legacy systems, although the term had been in use since 1968.
In distributed applications
The term is most commonly used for software that enables communication and management of data in distributed application
s. An IETF
workshop in 2000 defined middleware as "those services found above the transport
(i.e. over TCP/IP) layer set of services but below the application environment" (i.e. below application-level APIs
). In this more specific sense ''middleware'' can be described as the dash ("-") in ''client-server
'', or the ''-to-'' in ''peer-to-peer
''. Middleware includes web server
s, application server
s, content management system
s, and similar tools that support application development and delivery.
ObjectWeb defines middleware as: "The software layer that lies between the operating system
and applications on each side of a distributed computing system in a network." Services that can be regarded as middleware include enterprise application integration
, data integration
, message oriented middleware
(MOM), object request broker
s (ORBs), and the enterprise service bus
access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features.
Examples of database-oriented middleware include ODBC
and transaction processing
Distributed computing system middleware can loosely be divided into two categories—those that provide human-time services (such as web request servicing) and those that perform in machine-time. This latter middleware is somewhat standardized through the Service Availability Forum
and is commonly used in complex, embedded systems
within telecom, defence and aerospace
The term ''middleware'' is used in other contexts as well. ''Middleware'' is sometimes used in a similar sense to a software driver
, an abstraction layer that hides detail about hardware devices or other software from an application.
* The Android
operating system uses the Linux
kernel at its core, and also provides an application framework
that developers incorporate into their applications. In addition, Android
provides a middleware layer including libraries
that provide services such as data storage, screen display, multimedia
, and web browsing. Because the middleware libraries are compiled
to machine language
, services execute quickly. Middleware libraries also implement device-specific functions, so applications and the application framework need not concern themselves with variations between various Android devices. Android's middleware layer also contains the ART virtual machine
and its core Java
* Middleware also refers to the software that separates two or more APIs and provides services such as rate-limiting, authentication, and logging.
* Game engine
software such as Gamebryo
are sometimes described as middleware, because they provide many services to simplify game development.
* 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.
* Wireless networking developers can use middleware to meet the challenges associated with a wireless sensor network
(WSN). Implementing a middleware application allows WSN developers
to integrate operating systems and hardware with the wide variety of various applications that are currently available.
[Hadim, S. and Mohamed, N. (2006). Middleware challenges and approaches for wireless sensor networks. IEEE Distributed Systems Online vol 7. Issue 3. Retrieved March 4, 2009 fro]
iEEE Distributed Systems Online
* The QNX
operating system offers middleware for providing multimedia services for use in automobile
and other environments.
* Radio-frequency identification
(RFID) software toolkits provide middleware to filter noisy and redundant raw data.
* Third-party software component
A complete online course on Middleware Architecture