What is middleware?
Middleware is multipurpose software that provides services to applications outside of what’s offered by the operating system. Any software between the kernel and user apps can be middleware.
Analyst and system theorist Nick Gall said, "Middleware is software about software." Middleware doesn’t offer the functions of a traditional app, it connects software to other software. Middleware is plumbing for your IT infrastructure because middleware allows data to flow from one app to another. For instance, Apache Kafka is open source middleware that offers real-time data streaming capabilities for your applications.
Empire and enterprise
Ancient Rome had one of the most remarkable sanitation systems in history. The complex network of aqueducts and sewers was so important that Pliny the Elder counted them as Rome’s "most noteworthy achievement of all." Like the aqueducts of Rome carried water, enterprise middleware carries data from place to place. We’re not saying middleware is humanity’s greatest achievement, but a lot of other—perhaps more noteworthy—software can function because of middleware.
Plumbing might seem like a humble metaphor for middleware, but both are critical to operating large, complex systems—like Rome. Your enterprise is similar to a rapidly growing city: All parts of the city need water, just as all parts of your enterprise need data. Without plumbing, a city is inefficient and downright messy. Without middleware, your enterprise is the same way.
What kinds of middleware are there?
Middleware can encompass a variety of software, including:
Application programming interface (API)
APIs are sets of tools, definitions, and protocols for building application software, which lets your product or service communicate with other products and services without having to know how they’re implemented.
Platform for app development (like Red Hat® JBoss® Enterprise Application Platform). An application server is a framework that provides the functionality to create apps and a server on which to run them.
Application integration is the practice of combining data from several apps through an integration framework. The framework can limit the number of point-to-point connections across your organization that can lead to complex dependencies and potential points of failure.
Data integration is the practice of combining data from heterogeneous sources into a unified view for users to access and manipulate.
Transaction processing (TP)
TP maintains the integrity of a system (usually a database or a file system) by controlling transaction apps, enforcing business logic and rules, or pushing database updates.
Remote procedure call (RPC)
A client-server interaction that allows an application or functionality to be distributed across multiple platforms.
Message-oriented middleware (MOM)
An improvement on RPC with the addition of a queuing mechanism, which lets client-server interaction happen asynchronously in situations where a target node is slow or busy.
Object request broker (ORB)
Another client-server interaction that allows remote services to be accessed as if they were local. Server processes register with the ORB, and clients contact the ORB to locate these services.
Why care about middleware?
If data is like water in your company’s plumbing, consider how much better things would be if you didn’t have to get a bucket, travel to the water pump, fill the bucket with water, and lug it back to where you were. Without middleware, that’s what you do every time you want to work. Having data piped anywhere in your enterprise is more convenient and more efficient.
What could you accomplish with your data on demand?
When you integrate your data across applications, you can focus on creating cool new stuff for your organization instead of spending your time on manual processes. With a modern application platform, for example, developers can focus on developing app functionality instead of managing how their app integrates with the rest of the environment.
A fully certified Java™ EE 7 container that includes everything needed to build, run, manage, and integrate internal and external apps.
An intelligent, distributed data-caching solution that elastically scales apps by providing fast and reliable access to frequently used data.
An enterprise integration platform that connects environments—on premise, in the cloud, and anywhere in between.