BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Melhorando a performance de aplicações Web com o Google Native Client

Melhorando a performance de aplicações Web com o Google Native Client

Com o intuito de melhorar a performance de aplicações web que consumem bastante CPU, o Google está desenvolvendo o Native Client(Cliente Nativo) , um tecnologia para browsers utilizada para rodar código nativo. Diferentemente do Netscape's NPAPI ou do Microsoft ActiveX, o Native Client é executado uma sandbox dupla, proibindo o acesso ao total ao sistema operacional.

Uma das formas de melhorar a performance de aplicações web é fazer com que os browsers rodem aplicações nativos. Ao invés de rodar código Javascript, rodamos código nativo que é  normalmente mais rápido do que seu JS correspondente. O problema é que com código nativo surgem sérios problemas de segurança , como acesso aos dados ou criação de conexões na rede. Esses eram os principais problemas do NPAPI e do ActiveX. O Native Cliente pretende resolver esse problema, rodando a aplicação nativa em uma sandbox especial, não dando permissão para o acesso a base do sistema operacional. Aplicações nativas apenas terão permissão para usar a CPU e se comunidade com o ambiente do Native Client.

Aplicações nativas irão rodas uma sandbox dupla: por fora será uma sanbox padrão, como as já utilizas hojepelos browsers, por dentro será uma sanbox baseada na teoria da Base de Isolação de Falhas(Based Fault Isolarion) e utilizando uma segmentação de memória x86 o que  força o código nativo a respeitar  o limite da memória que está alocada.

O Native Client, de acordo com o paper Portable Native Client Executables (PDF), possiu os seguintes objetivos:

  1. Disponibilizar um formato ISA neutro para compilar os módulos NaCl, suportando uma grande variedade de plataformas sem a necessidade de recompilação do código.
  2. Fazer com que desenvolvedores NaCl construam, testem e façam deploy de módulos portáveis e executáveis.
  3. Suportar x86-32, x86-64 e ARM inicialmente, porém fazer com que seja simples suportar outros tipos de CPU no futuro.
  4. Preservar a segurança e a propriedades de desempenho

Para facilitar a vida dos desenvolvedores, os módulos do Native Client serão escritos em qualquer linguagem então compiladas para bytecodes LLVM(Low Level Virtual Machine - Máquina virtual de baixo nível). O LLVM é uma infra estrutura de compilador que provê ISA com neutralidade, ou seja, não é necessário portar o código original para diferentes plataformas. O bytecode é mais otimizado e então é salvo em um arquivo. Se a página web contém a tag <object> cujo tipo é o Native Client, o browser criará o ambiente correspondendo e então irá fazer o download do arquivo LLVM. O bytecode é então traduzido para código nativo e analisado para ter certeza de que ele não está tentando executar nenhuma operação ilegal. Depois disso, basta executar as supostas operações intensas no CPU. O desenvolvedor apenas precisa escrever uma vez e fazer deploy em diversas arquiteturas, e a camada intermediária da LLVM faz com que seja possível executar o módulo mesmo em arquiteturas novas que não existem na época em que o código foi escrito, estendendo assim, o código da aplicação.

O Google criou pacotes do Native Client para Windows, Mac OS X, e Linux para x86-32, x86-64 e ARM, e está aberto para enviar qualquer arquitetura de seu interesse. Os benchmarks(PDF) mostram que aplicações com o  Native Cliente executam em 97% da velocidade de uma aplicação não modificada, ambas em x86 e ARM. O Native Client funciona no Firefox, Safari, Opera, e Google Chrome. Exemplos de aplicações rodando no Native Cliente são: Quake, um game clássico, XaoS, um visualizador de imagens fractais interativo, e Lua - uma engine de scripts.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT