Esta thread no GUJ me deixou pensando um pouco sobre o papel dos browsers hoje em dia. Será que um browser é um ambiente bom para uma interface de um sistema de transações utilizado diariamente por um profissional (”aplicação comercial”), o que seria melhor que isso?
Há alguns anos atrás (uns 7 anos) eu programava em linguagens desktop como VisualBasic, Delphi e o bom C-zão, mas comecei a estudar tecnologias web. Primeiro o desastre de CGI com PERL, depois ASP/PHP/ColdFusion e só fui largar definitivamente esta vida ingrata com Java, 4 anos depois.
Outro dia eu estava vendo um velho computador do vizinho que eu usei muito por algum tempo (lembro que meu modem queimou minha placa-mãe e fiquei sem computador quase um ano neste período) e achei uns textos antigos que eu usava para marketing dos meus serviços de freelancer (emprego com 15-16 anos só de freela mesmo). Em todos eles eu defendia a praticidade e facilidade de uma aplicação rodando num browser.
Hoje em dia eu tenho minhas dúvidas. HTML é uma grande porcaria para aplicações (é muito legal para sites publicitários, portais, jornais on-line e outras publicações, mas não aplicações). HTTP é uma grande porcaria para aplicações (protocolo sem estado cheio de gambiarras para contornar isso, impossibilidade do cliente deixar um callback para o servidor, request/response apenas). Mas porque esta dobradinha é tão importante até hoje?
É onipresente. Todo mundo tem um browser.
É simples. É fácil. É portável. Você não precisa aprender 30 biblitoecas diferentes para fazer interfaces, se você conhece HTML pode projetar interfaces para CGI, PHP, Java, Ruby on Rails ou qualquer outra coisa. No máximo você tem que cuidar dos 2 ou 3 browsers mais populares.
É extensível. Toda vez que alguém acha dificuldades em fazer uma aplicação cria alguma coisa nova: ActiveX, Flash, AJAX, SVG, Applets, blablabla… em vez de partir para outra alternativa.
E assim o bom o velho dueto HTTP+HTML sobreviveu, inclusive gerando híbridos estranhos. WebServices são guiados por HTTP, mas misturado à um dos sabores de RPC em XML. Algumas pessoas rodam aplicações em HTML (quase) sem HTTP, com páginas estáticas ou geradas por algum script. O próprio fato de muitos sistemas instalarem um servidor web na máquina do cliente mostra que tem algo errado.
Mas voltemos ao tema central do post… HTTP+HTML envolve o uso de um browser. Do antigo MOSAIC que apenas gerava uma visualização gráfica do HTML até hoje, os browsers evoluíram muito.
Todos os browsers modernos possuem uma arquitetura de plugins. Vamos analisar o Firefox. Este browser permite que se escrevam extensões em JavaScript, uma linguagem simples e que todo mundo conhece um pouquinho, e a linguagem de templates XUL. Se você quiser algo mais leve pode ainda utilizar uma extensão chamada Greasemonkey que permite que você rode scripts nas páginas visitadas.
Utilizando estes recursos você pode construir uma aplicação dentro do browser. Não, não é uma aplicação HTML, é uma aplicação dentro do browser (claro que funcionaria apenas no Firefox/Mozilla, ao contrário de HTML puro que teoricamente rodaria em qualquer browser).
O browser se tornou um Servidor de Aplicações para a Camada Física do cliente. Leve, portável, nativo, gratuito e amplamente disponível. Ele oferece serviços a suas aplicações que você teria que implementar sozinho, sua aplicação roda dentro dele.
Isso é bem legal, mas não resolve os problemas originais. Browsers foram feitos para HTTP e HTML, e estes protocolos não foram feitos para aplicações, mas para hipertexto.
O que eu gostaria de ver era algo funcional que oferecesse as mesmas facilidades que alguém tem ao desenvolver uma aplicação no servidor no cliente. Para isso existem alguns problemas:
Protocolo:
Tem que ser algo simples, independente de plataforma e que resolva os problemas mais comuns do HTTP
Linguagem de Templates:
Tão simples quanto HTML, mas poderoso e extensível para criação de widgets novos e manipulação destes
E o principal:
Vencer HTML+HTTP:
Difícil. Milhões de aplicações elgadas, milhões de dólares de investimento anual, milhões de opções para servidores, linguagens, browsers, e tudo mais…
Quando será que nos livraremos da gambiarra?

