Middleware

Short description: Computer software that provides services to software applications

Middleware is a type of computer software program that provides services to software applications beyond those available from the operating system. It can be described as "software glue".[1][2]

Middleware makes it easier for software developers 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.[3]

## Contents

* 1 In distributed applications
* 2 Usage of middleware
* 3 Other examples
* 4 See also
* 5 References
* 6 External links

## In distributed applications

Software architecture: Middleware

The term is most commonly used for software that enables communication and management of data in distributed applications. 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).[4] 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 servers, application servers, content management systems, and similar tools that support application development and delivery.[5]

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."[6] 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).[7]

Database access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features.[8] Examples of database-oriented middleware include ODBC, JDBC and transaction processing monitors.[9]

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[10] and is commonly used in complex, embedded systems within telecom, defence and aerospace industries.[11]

## Usage 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:[12]

* 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 request.

## 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 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 application libraries.[13]
* 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 and RenderWare are sometimes described as middleware, because they provide many services to simplify game development.[14]
* 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.[15]
* 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.[16]
* The QNX operating system offers middleware for providing multimedia services for use in automobiles, aircraft and other environments.[17]
* Radio-frequency identification (RFID) software toolkits provide middleware to filter noisy and redundant raw data.[18]

## See also

* Language-agnostic
* Third-party software component

## References

1. ↑ "Middleware conference" (in en-us). https://middleware-conf.github.io/. "Middleware is a distributed-system software that resides between applications and underlying platforms (operating systems; databases; hardware), and/or ties together distributed applications, databases or devices. Its primary role is to coordinate and enable communication between different layers or components while isolating much of the complexity of distribution into a single, well tested and well understood system abstraction."
2. ↑ "What is Middleware?". Middleware.org. Defining Technology. 2008. http://www.middleware.org/whatis.html.
3. ↑ Gall, Nick (July 30, 2005). "Origin of the term middleware" (in en-US). http://ironick.typepad.com/ironick/2005/07/update_on_the_o.html.
4. ↑ "Home". https://www.ietf.org.
5. ↑ Etzkorn, L. H. (2017). Introduction to Middleware: Web Services, Object Components, and Cloud Computing. CRC Press. pp. 4–5. ISBN 9781498754101. https://books.google.com/books?id=AZgnDwAAQBAJ&pg=PT45.
6. ↑ Krakowiak, Sacha. "What's middleware?". ObjectWeb.org. http://middleware.objectweb.org/.
7. ↑ Luckham, D. C. (2011). Event Processing for Business: Organizing the Real-Time Enterprise. John Wiley & Sons. pp. 27–28. ISBN 9781118171851. https://books.google.com/books?id=dqWxewxhyq8C&pg=PA27.
8. ↑ Simon, A. R.; Wheeler, T. (2014). Open Client/Server Computing and Middleware. Academic Press. pp. 43–49. ISBN 9781483214276. https://books.google.com/books?id=jyOjBQAAQBAJ&pg=PA43.
9. ↑ Arregoces, M.; Portolani, M. (2003). Data Center Fundamentals. Cisco Press. pp. 92–93. ISBN 9781587140747. https://books.google.com/books?id=IcoqBXbG9IsC&pg=PA92.
10. ↑ "Service Availability Interface Specification". Service Availability Forum. 30 September 2011. http://devel.opensaf.org/SAI-Overview-B.05.03.AL.pdf.
11. ↑ Jokiaho, T.; Fryer, J. (2012). "Foreword". Service Availability: Principles and Practice. John Wiley & Sons. p. xv. ISBN 9781119941675. https://books.google.com/books?id=Ql1oHlKkHOsC&pg=PT9.
12. ↑ Gazis, Alexandros; Katsiri, Eleftheria (15 March 2022). Middleware 101: What to know now and for the future. doi:10.1145/3526211.
13. ↑ Charlie Collins, Michael Galpin and Matthias Kaeppler, Android in Practice, Manning Publications, 2011
14. ↑ Moore, M. E. (2006). Introduction to the Game Industry. Pearson Prentice Hall. p. 169. ISBN 9780131687431.
15. ↑ Becchini, R. et al. (2003). "Chapter 4: Middleware". Cooperative Environments for Distributed Systems Engineering: The Distributed Systems Environment Report. Springer. pp. 41–4. ISBN 9783540455820. https://books.google.com/books?id=2clrCQAAQBAJ&pg=PA41.
16. ↑ 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 from iEEE Distributed Systems Online
17. ↑ "QNX Software Joins Internet ITS Consortium of Japan". QNX News Releases. QNX. 6 May 2008. http://www.qnx.com/news/pr_2901_1.html.
18. ↑ Glover, B.; Bhatt, H. (2006). RFID Essentials. O'Reilly Media. pp. 38–44. ISBN 9780596009441. https://books.google.com/books?id=cKKZoH48D4cC&pg=PA38.

## External links

* v
* t
* e

Computer science

Note: This template roughly follows the 2012 ACM Computing Classification System.

Hardware|

* Printed circuit board
* Peripheral
* Integrated circuit
* Very Large Scale Integration
* Systems on Chip (SoCs)
* Energy consumption (Green computing)
* Electronic design automation
* Hardware acceleration

Computer systems
organization|

* Computer architecture
* Embedded system
* Real-time computing
* Dependability

Networks|

* Network architecture
* Network protocol
* Network components
* Network scheduler
* Network performance evaluation
* Network service

Software organization|

* Interpreter
* Middleware
* Virtual machine
* Operating system
* Software quality

Software notations
and tools|

* Programming paradigm
* Programming language
* Compiler
* Domain-specific language
* Modeling language
* Software framework
* Integrated development environment
* Software configuration management
* Software library
* Software repository

Software development|

* Software development process
* Requirements analysis
* Software design
* Software construction
* Software deployment
* Software maintenance
* Programming team
* Open-source model

Theory of computation|

* Model of computation
* Formal language
* Automata theory
* Computational complexity theory
* Logic
* Semantics

Algorithms|

* Algorithm design
* Analysis of algorithms
* Algorithmic efficiency
* Randomized algorithm
* Computational geometry

Mathematics
of computing|

* Discrete mathematics
* Probability
* Statistics
* Mathematical software
* Information theory
* Mathematical analysis
* Numerical analysis

Information
systems|

* Database management system
* Information storage systems
* Enterprise information system
* Social information systems
* Geographic information system
* Decision support system
* Process control system
* Multimedia information system
* Data mining
* Digital library
* Computing platform
* Digital marketing
* World Wide Web
* Information retrieval

Security|

* Cryptography
* Formal methods
* Security services
* Intrusion detection system
* Hardware security
* Network security
* Information security
* Application security

Human–computer
interaction|

* Interaction design
* Social computing
* Ubiquitous computing
* Visualization
* Accessibility

Concurrency|

* Concurrent computing
* Parallel computing
* Distributed computing
* Multithreading
* Multiprocessing

Artificial
intelligence|

* Natural language processing
* Knowledge representation and reasoning
* Computer vision
* Automated planning and scheduling
* Search methodology
* Control method
* Philosophy of artificial intelligence
* Distributed artificial intelligence

Machine learning|

* Supervised learning
* Unsupervised learning
* Reinforcement learning
* Multi-task learning
* Cross-validation

Graphics|

* Animation
* Rendering
* Image manipulation
* Graphics processing unit
* Mixed reality
* Virtual reality
* Image compression
* Solid modeling

Applied
computing|

* E-commerce
* Enterprise software
* Computational mathematics
* Computational physics
* Computational chemistry
* Computational biology
* Computational social science
* Computational engineering
* Computational healthcare
* Digital art
* Electronic publishing
* Cyberwarfare
* Electronic voting
* Video games
* Word processing
* Operations research
* Educational technology
* Document management

* Book
* Category
* Outline
* WikiProject
* Commons

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Middleware. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Middleware&oldid=263489"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template