terça-feira, 24 de fevereiro de 2009

Uma breve consideração sobre "Browsers"

A Web mudou muito desde o seu surgimento, recursos, como os mecanismos javascript, possibilitaram que aplicações web "tomassem ares" de aplicações “desktop”.

Ultimamente tenho visto uma nova leva de browsers surgindo, como novos recursos de segurança, compiladores JIT para código javascript, gerenciamento de tabs, etc.

Achei o novo browser produzido belo Google (Chrome) fantástico, ainda, como todo novo aplicativo, um pouco instável e com falhas, mas implementou recursos muito interessantes e possibilitou novas discussões a respeito dos novos browsers. O que mais me chamou a atenção foi a execução de cada tab como um novo processo, claro que isto implica em um consumo maior de memória, mas evita que problemas em uma tab influenciem no funcionamento de todas as outras, além de permitir uma melhor execução em processadores multinucleares (dual, quad, etc.). Como os aplicativos do google são muito simples e leves cada tab consome pouquíssima memória.


Para o teste acima foi aberto o Firefox 3.0.6 e acessada a página do Terra (www.terra.com.br) , o mesmo foi realizado com o Chrome (utilizando uma única tab). Notem que foram criados três processos para o Chrome e apenas um para o Firefox, porém a soma de todos os processos do Chrome ainda é menor do que a memória total consumida pelo Firefox (Sei do GoogleUpdate, porém ele é executado ao entrar no SO, sendo assim ele gera impacto na execução de ambos os browsers, logo será desconsiderado).

Chome (KB)

Firefox (KB)

~88.848

~89.448

Mas eis a pergunta que não quer calar, porque a execução de três processos para uma única tab?! O Chrome utiliza um processo para gerenciar as tabs, outro processo é a própria tab com o processador de Javascript, CSS, HTML, etc. e o outro é responsável pela execução do plugin do Flash (que é utilizado na página do Terra para mostrar as propagandas). Em processadores multinucleares a eficiência do Chrome seria muito maior do que a do Firefox, já que os processos poderiam ser executados em núcleos distintos, diferente do Firefox que sobrecarregaria um único núcleo, podendo levar mais ciclos de CPU para realizar a mesma tarefa do Chrome.

A Microsoft soltou um documento com o conceito de OS Browsers (princípios de um S.O. para a construção de Web Browsers) a publicação prevê a construção do Gazelle Web Browser, que possui, como características básicas, um Browser Kernel que utiliza IPC para a comunicação entre as tab (outros processos), sendo que esta comunicação deve, obrigatoriamente, passar pelo Kernel Browser, permitindo a centralização da segurança em um único local, e somente o Kernel Browser teria acesso as funções nativas do sistema operacional. O documento aborda, principalmente, questões de segurança no desenvolvimento do Browser e faz considerações muito interessantes. O modelo de segurança utilizado pelo Gazelle, prevê a unificação do tratamento SOP (same origin policy, ) para todos os recursos do browser. Os processos são protegidos uns dos outros separando os recursos dentro de “hardware-isolated protection domain”. Qualquer compartilhamento entre os processos deverá ser explicitado utilizando o IPC, sempre mediado pelo Kernel Browser. (Não entrarei em muitos detalhes, devido a extensão do documento, mas quem tiver curiosidade, recomendo a leitura.)

Pode ser que este seja apenas um documento acadêmico que aponta um “punhado” de coisas que nunca serão implementadas, mas considero pertinentes as considerações, claro que segurança e performance são inversamente proporcionais, talvez o consumo de CPU seja absurdo, talvez uma implementação para mais alguns anos a frente, talvez um sistema operacional enxuto com um tremendo Browser que executará todos os nossos aplicativos online (nas nuvens).

O pessoal do Mozilla Labs tem uma série de conceitos e discussões sobre um novo Browser que indicam este tipo de direção para os aplicativos, com alto nível de interatividade, compartilhamento de informações, comunicação, organização e agrupamento de informações acessadas, compartilhamento de históricos entre os usuários (os vídeos da série dão uma boa noção sobre as idéias do pessoal, recomendo que assistam).

Com isto pode-se perceber que as aplicações Web vieram para ficar e a cada dia tomam proporções nunca antes imaginadas. Uma tremenda fonte para inovações.


Nenhum comentário: