Middleware is a type of computer
software
Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work.
...
that provides services to
software applications beyond those available from the operating system. It can be described as "software glue".
Middleware makes it easier for
software developers to implement communication and
input/output
In computing, input/output (I/O, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, possibly a human or another information processing system. Inputs are the signals ...
, 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
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
s. An
IETF
The Internet Engineering Task Force (IETF) is a standards organization for the Internet and is responsible for the technical standards that make up the Internet protocol suite (TCP/IP). It has no formal membership roster or requirements and ...
workshop in 2000 defined middleware as "those services found above the
transport
Transport (in British English), or transportation (in American English), is the intentional movement of humans, animals, and goods from one location to another. Modes of transport include air, land ( rail and road), water, cable, pipel ...
(i.e. over TCP/IP) layer set of services but below the application environment" (i.e. below application-level
APIs
Apis or APIS may refer to:
* Apis (deity), an ancient Egyptian god
* Apis (Greek mythology), several different figures in Greek mythology
* Apis (city), an ancient seaport town on the northern coast of Africa
**Kom el-Hisn, a different Egyptian ci ...
). In this more specific sense ''middleware'' can be described as the dash ("-") in ''
client-server'', or the ''-to-'' in ''
peer-to-peer
Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network. They are said to form a peer-to-peer ...
''. Middleware includes
web servers,
application servers,
content management system
A content management system (CMS) is computer software used to manage the creation and modification of digital content ( content management).''Managing Enterprise Content: A Unified Content Strategy''. Ann Rockley, Pamela Kostur, Steve Manning. New ...
s, and similar tools that support application development and delivery.
ObjectWeb defines middleware as: "The software layer that lies between the
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
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 brokers (ORBs), and the
enterprise service bus (ESB).
Database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases spa ...
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,
JDBC and
transaction processing monitors.
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
Aerospace is a term used to collectively refer to the atmosphere and outer space. Aerospace activity is very diverse, with a multitude of commercial, industrial and military applications. Aerospace engineering consists of aeronautics and astrona ...
industries.
Types of middleware
Many definitions exist regarding the categorization of middleware specifying either on the field that it is used or the application module it serves. In recent bibliography, the main categories of middleware are the following:
*Transactional: Processing of multiple synchronous/ asynchronous transactions, serving as a cluster of associated requests from distributed systems such as bank transactions or credit card payments.
*Message-oriented: Message queue and message passing architectures, which support synchronous/asynchronous communication.
*Procedural: Remote and local architectures to connect, pass, and retrieve software responses of asynchronous systems communications such as a call operation.
*Object-oriented: Similar to procedural middleware, however, this type of middleware incorporates object-oriented programming design principles. Analytically, its software component encompasses object references, exceptions, and inheritance of properties via distributed object requests.
Other examples
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
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
operating system uses the
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
kernel at its core, and also provides an
application framework that developers incorporate into their applications. In addition,
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
provides a middleware layer including
libraries that provide services such as data storage, screen display,
multimedia
Multimedia is a form of communication that uses a combination of different content forms such as text, audio, images, animations, or video into a single interactive presentation, in contrast to tradi ...
, 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
In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized har ...
and its core
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
application libraries.
* Middleware also refers to the software that separates two or more APIs and provides services such as rate-limiting, authentication, and logging.
*
Game engine
A game engine is a software framework primarily designed for the development of video games and generally includes relevant libraries and support programs. The "engine" terminology is similar to the term " software engine" used in the softwar ...
software such as
Gamebryo and
RenderWare 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
A car or automobile is a motor vehicle with wheels. Most definitions of ''cars'' say that they run primarily on roads, seat one to eight people, have four wheels, and mainly transport people instead of goods.
The year 1886 is regarded ...
s,
aircraft
An aircraft is a vehicle that is able to fly by gaining support from the air. It counters the force of gravity by using either static lift or by using the dynamic lift of an airfoil, or in a few cases the downward thrust from jet engines. ...
and other environments.
*
Radio-frequency identification
Radio-frequency identification (RFID) uses electromagnetic fields to automatically identify and track tags attached to objects. An RFID system consists of a tiny radio transponder, a radio receiver and transmitter. When triggered by an electrom ...
(RFID) software toolkits provide middleware to filter noisy and redundant raw data.
See also
*
Language-agnostic
*
Third-party software component
References
External links
*
{{Authority control
Systems engineering