Um servidor de aplicações disponibiliza um ambiente para a instalação e execução de certas aplicações, que são conhecidos como software de middleware ou apenas middleware. Ai invés de programar uma conexão com um banco de dados, onde é necessário conhecer os detalhes de conexão com o banco de dados, da rede e do sistema operacional, utilizamos o servidor de aplicação, pois nele efetuamos apenas um conjunto de configurações que o programador irá utilizar em seu sistema. Desta forma o que seriam centenas de linhas de código, se torna apenas algumas poucas configurações no servidor de aplicação.
Quando falarmos em JAVA, a especificação divide o servidor em duas partes: Contêiner EJB (Enterprise Java Beans) e Container Web. O EJB tem como objetivo fornecer um rápido e simplificado desenvolvimento de aplicações Java baseado em componentes distribuídos, transacionais, seguros e portáveis. Já o Container Web é responsável pelos módulos WEB, geralmente através de Servlets e JSP. Como dito, não é o objetivo deste manual presentar mais detalhes sobre este assunto, sendo um excelente ponto de pesquisa para quem deseja entender a fundo toda plataforma JAVA.
Devido à popularização da plataforma Java, o termo servidor de aplicação é frequentemente uma referência a um "Servidor de aplicação JEE". O servidor Weblogic Server da Oracle é servidor JEE comercial, assim como o seu principal concorrente: Websphere da IBM. Alguns servidores são de distribuição livre e muito utilizados, como Glassfish (Oracle), JBoss (Redhat), Apache Geronimo (Apache) e Apache Tomcat (Apache). Este último apesar de ser um servidor de aplicações JEE, não é servidor de EJBs, fornecendo apenas o contêiner Web. Como mencionado, a linguagem de programação destes softwares é o Java. Os módulos Web são em geral desenvolvidos através de servlets e JSP e a lógica de negócio através de EJBs. A plataforma JEE disponibiliza padrões tanto para os containers Web quanto EJB. Veja uma ilustração simplificada:
Figura 3