# Servidor de aplicação

Um servidor de aplicação (em inglês, application server), é um servidor que disponibiliza um ambiente para a instalação e execução de aplicações de informática, centralizando e dispensando a instalação em computadores clientes. Os servidores de aplicação também são conhecidos por middleware.
O objetivo do servidor de aplicação é disponibilizar uma plataforma que separe do desenvolvedor de software algumas das complexidades de um sistema computacional. No desenvolvimento de aplicações comerciais, por exemplo, o foco dos desenvolvedores deve ser a resolução de problemas relacionados ao negócio da empresa, e não em questões de infraestrutura de software. O servidor de aplicações responde a algumas questões comuns a todas as aplicações, como segurança, garantia de disponibilidade, balanceamento de carga e tratamento de exceções.

## História

No final da década de 1990, pensou-se que seria interessante mover as aplicações para um modelo mais centralizado, e que o PC desktop seria substituído por computador de rede (network computer). Isto seria o retorno ao velho modelo de computação utilizado na década de 1960, baseado em computadores centrais grandes e caros, que eram acessados por muitos usuários utilizando terminais com pouca capacidade de processamento. A diferença então, seria o uso disseminado de interfaces gráficas (GUI). Porém, esta mudança não ocorreu na escala prevista, e o trabalho de disponibilizar aplicações de interfaces gráficas em redes lentas apresentou um grande número de desafios técnicos que não foram inteiramente resolvidos.
Posteriormente, as soluções baseadas na Internet, onde um navegador busca as páginas geradas dinamicamente em um servidor, deram força no movimento de centralização de aplicações. Neste contexto surgiram os servidores de aplicação para Web.

## J2EE

Devido a popularização da plataforma Java, o termo servidor de aplicação é frequentemente uma referência a "Servidor de aplicação J2EE". O servidor WebSphere Application Server da IBM e o WebLogic Server da Oracle são dois dos mais conhecidos servidores JEE comerciais. Alguns servidores de software livre também são muito utilizados, como Glassfish, JBoss, Apache Geronimo e Apache Tomcat. Este último apesar de ser um servidor de aplicações JEE, não é servidor de EJBs. O Tomcat é um exemplo de container software livre que hospeda aplicações Web. Como mencionado, a linguagem de programação destes softwares é Java. Os módulos Web são em geral implementados através de frameworks como Spring ou Struts, ou via servlets e JSP, e a lógica de negócio através de EJBs ou beans na tecnologia Spring. A plataforma JEE disponibiliza padrões para os containers Web e EJB. Servidor é muito comum quando desenvolvemos microsserviços.

## .NET

Na plataforma Microsoft .NET, o servidor de aplicação não é visto como um elemento separado. O sistema operacional Windows 2003 contém a infraestrutura necessária para servir aplicações, como o IIS, COM+ e Framework .NET.

## Zope

Muitas tarefas de administração de um servidor Zope podem ser realizadas através de uma interface Web. Os objetos que o Zope publica na Web são escritos em linguagem Python, e tipicamente armazenados num banco de dados orientado a objetos, o ZODB, que é integrado ao sistema. Objetos básicos, tais como documentos, imagens e templates (modelos de páginas) podem ser criados ou modificados via web. Objetos especializados, tais como wikis, blogs e galerias de fotos estão disponíveis como componentes adicionais (chamados products); e existe uma comunidade pujante de pequenas empresas criando aplicações web como produtos.