O que é um framework de desenvolvimento web?

Durante este período (meu penúltimo) do curso de Engenharia da Computação, no Centro de Informática da UFPE, cursei três disciplinas que exigiam a utilização de um framework de desenvolvimento web. A intenção em nenhuma delas era ensinar algo sobre desenvolvimento web. Os frameworks foram utilizados apenas como meio de pôr em prática os conceitos aprendidos em sala, criando uma aplicação funcional, mas sem gastar tanto esforço em detalhes que já aprendemos em disciplinas anteriores.

As disciplinas foram:

Tópicos Avançados em Engenharia de Software (Prof. Paulo Borba)
Framework utilizado: Grails


Análise de Projetos e Sistemas (Prof. Augusto Sampaio)
Framework utilizado: Play


Engenharia de Software Educativo  *é preciso ter uma conta no Redu e permissão para acessar a página (Prof. Alex Sandro Gomes)
Framework utilizado: Ruby on Rails



Antes de cursar estas disciplinas, eu já havia mexido com o framework Django, então ao utilizar os outros três, não tive um choque tão grande quanto outros alunos sem esta experiência.



Eis então que, sem nunca ter sido um desenvolvedor web experiente, acabei tendo contato com quatro frameworks diferentes. Continuo me considerando amador nesta área, no entanto, ao menos consegui responder o que era um framework de desenvolvimento web, quando meus colegas de disciplina perguntavam.

Pequena história do desenvolvimento Web

Nos primórdios (anos 90) da popularização da WWW, a interação do usuário com as páginas era simplesmente baixar páginas estáticas, com links para outras páginas e em alguns momentos preencher algum formulário, ou fazer upload de um arquivo pela página.

Os servidores Web funcionavam praticamente como servidores de arquivos, servindo páginas através do protocolo HTTP, sem realizar muito processamento ou execução de programas por baixo dos panos.

Já nos anos 0x (~2004 em diante),  os servidores Web começaram a trabalhar mais. Os usuários passaram a ter cadastro nas páginas, e o conteúdo de cada uma delas dependia do usuário que estava logado. Nessa época o Orkut estava dando seus primeiros passos.

Os sites mais atuais deixaram de ser simplesmente um conjunto de páginas .html e passaram a ser Aplicações Web. Não eram mais arquivos de texto com hiperlinks, e sim um software rodando no servidor Web, que interagia com o usuário através do browser, via Internet.

Naturalmente, o desenvolvimento dessas páginas tornou-se muito mais complicado. Criar uma página .html estática dos anos 90 era tão fácil, que crianças de 11 anos curiosas tinham as suas. Bastava conhecer o Microsoft FrontPage (vinha junto com o pacote Office), se cadastrar num host grátis como Xoom, Geocities, HpG, iG e enviar seus arquivos para lá. Criar uma página era quase tão fácil quanto editar um documento do Word. Para ter uma ideia de como as páginas eram, viste este site. Nostálgico para alguns!

O desenvolvimento da Web 2.0 (como passaram a chamar), passou a exigir conhecimentos de programação, e não mais utilizar um FrontPage ou editar um HTML. Além disso, era muito provável que fosse necessário persistir os dados em algum banco. Ou seja, também era preciso conhecer algo de SQL e modelagem de bases de dados.

As trocas de arquivos entre o servidor Web e os usuários também mudou. Antes, o mesmo arquivo .html que o pirralho de 11 anos enviava para o servidor Web era aquele que seria "baixado" (visualizado) por todos os visitantes do seu site amador. Esta era a forma de o pirralho atualizar seu site.
Agora, o desenvolvedor (não mais um pirralho de 11 anos), passa a enviar programas ao servidor Web. E aí, quando os visitantes acessam um endereço, não é baixado o arquivo que o desenvolvedor enviou, e sim executado o programa. O que o visitante visualiza é exatamente o resultado da execução daquele programa. O código-fonte dos sites passou a ser "secreto".

A linguagem mais popular era a PHP. Através desta linguagem, você pode tratar as requisições do usuário, fazendo consultas no banco de dados se necessário, e exibindo os resultados através do velho HTML. Pro usuário, as páginas continuavam a mesma coisa, sendo exibidas pelo browser. A diferença era que o conteúdo era personalizado. Pro desenvolvedor, tudo mudou. HTML passou a ser um detalhe do desenvolvimento, fazendo parte do chamado Front-End. O restante do programa (não relacionado à visualização) que antes não existia, chamou-se Back-End. Hoje temos até programadores Web especializados em Front-End (mais próximos à area de Design), e outros especializados apenas em Back-End (mais próximos à area de computação)!

Com o tempo, percebeu-se que algumas partes do desenvolvimento Web eram extremamente repetitivas, como o armazenamento e consulta de dados no banco e interface entre código executável e exibição das páginas. Foi aí que algumas pessoas tiveram uma ideia de automatizar parte desse desenvolvimento, e criaram os Frameworks de Desenvolvimento Web.

O que esses frameworks fazem?


É possível programar aplicações web em praticamente qualquer linguagem de programação, como PHP, Python, Java, Perl e até C/C++. Basta que o servidor web seja capaz de fornecer as entradas do usuário (cliques ou dados de formulários) ao programa, executá-lo e exibir a saída (página resultante) de volta ao browser do usuário.


Para algumas dessas linguagens foram criadas ferramentas que auxiliam o desenvolvimento web de várias formas. Por exemplo, para a linguagem Python, criaram o Django. Com ele, utilizando apenas um comando, você pode criar todas as tabelas do banco de dados a partir do código das classes Python que você criou. O Django também traz pronto o código de comunicação HTTP para envio de páginas e recebimento de dados de formulários, código de comunicação com o banco de dados, e até o código que separa as regras de negócio/dados (conteúdo) da exibição (formatação).

O mesmo acontece com Ruby on Rails (criado para quem quer programar em Ruby), Play (para Java) e Grails (para Groovy), entre vários outros. Com o advento desses frameworks, desenvolvimento Web utilizando PHP puro ficou fora de moda e já é encarado como ultrapassado por muitos. É importante salientar que PHP continua sendo usado, inclusive pelo Facebook. A vantagem destes frameworks é agilidade de desenvolvimento e não necessariamente performance (ponto crítico para o Facebook e qualquer aplicação massiva como esta). Como a maioria das aplicações não possuem mais que algumas centenas de usuários simultâneos, utilizar estes frameworks é quase sempre uma excelente ideia.