# Middleware

Middleware é o software de computador que fornece serviços para softwares aplicativos além daqueles disponíveis pelo sistema operacional. Pode ser descrito como "cola de software".
O middleware facilita aos desenvolvedores de software implementarem comunicação e entrada/saída, de forma que eles possam focar no propósito específico de sua aplicação. Ele ganhou popularidade nos anos 80 como uma solução para o problema de como ligar aplicações mais novas a sistemas legados, apesar do termo ser usado desde 1968.

## Em aplicações distribuídas

É utilizado para mover ou transportar informações e dados entre programas de diferentes protocolos de comunicação, plataformas e dependências do sistema operacional. É geralmente constituído por módulos dotados com APIs de alto nível que proporcionam a sua integração com aplicações desenvolvidas em diversas linguagens de programação e interfaces de baixo nível que permitem a sua independência relativamente ao dispositivo. Seu objetivo é mascarar a heterogeneidade e fornecer um modelo de programação mais produtivo para os programadores de aplicativos. É composto por um conjunto de processos ou objetos em um grupo de computadores, que interagem entre si de forma a implementar comunicação e oferecer suporte para compartilhamento de recursos e aplicativos distribuídos. O Middleware é a designação genérica utilizada para referir aos sistemas de software que se executam entre as aplicações e os sistemas operacionais. O objetivo do middleware é facilitar o desenvolvimento de aplicações, tipicamente as distribuídas, assim como facilitar a integração de sistemas legados ou desenvolvidos de forma não integrada automática.

## Outros exemplos

O termo middleware também é usado em outros contextos. Às vezes, o middleware é usado em um sentido semelhante a um driver de software, uma camada de abstração que oculta detalhes sobre dispositivos de hardware ou outro software de um aplicativo.
* O sistema operacional Android usa o kernel do Linux em sua essência e também fornece um framework de aplicativos que os desenvolvedores incorporam a seus aplicativos. Além disso, o Android fornece uma camada de middleware, que inclui bibliotecas que fornecem serviços como armazenamento de dados, exibição na tela, multimídia e navegação na web. Como as bibliotecas de middleware são compiladas na linguagem de máquina, os serviços são executados rapidamente. As bibliotecas de middleware também implementam funções específicas do dispositivo, portanto, os aplicativos e a estrutura do aplicativo não precisam se preocupar com variações entre vários dispositivos Android. A camada de middleware do Android também contém a máquina virtual ART e suas principais bibliotecas de aplicativos Java.
* O middleware também se refere ao software que separa duas ou mais APIs e fornece serviços como limitação de taxa, autenticação e log.
* Às vezes, softwares de mecanismos de jogos como Gamebryo e RenderWare são descritos como middleware, porque fornecem muitos serviços para simplificar o desenvolvimento de jogos.
* Em tecnologia de simulação, o middleware é geralmente usado no contexto da arquitetura de alto nível (HLA) que se aplica a muitas simulações distribuídas. É uma camada de software que fica entre o código do aplicativo e a infraestrutura de tempo de execução. O middleware geralmente consiste em uma biblioteca de funções e permite que vários aplicativos - simulações ou federados na terminologia HLA - paginem essas funções da biblioteca comum em vez de recriá-las para cada aplicativo.
* Os desenvolvedores de redes sem fio podem usar o middleware para enfrentar os desafios associados a uma rede de sensores sem fio (WSN). A implementação de um aplicativo de middleware permite que os desenvolvedores do WSN integrem sistemas operacionais e hardware com a grande variedade de aplicativos disponíveis no momento.
* O sistema operacional QNX oferece middleware para fornecer serviços de multimídia para uso em automóveis, aeronaves e outros ambientes.
* Os kits de ferramentas do software de identificação por radiofrequência (RFID) fornecem middleware para filtrar dados brutos e redundantes e ruidosos.