Back-End

18 nov, 2015

O que é WebAssembly e por que ele afeta todos os desenvolvedores web!

Publicidade

Você já ouviu alguma notícia sobre WebAssembly? Google, Microsoft, Mozilla e outros estão se unindo para lançar um novo formato binário para a web.

Vamos direcionar um olhar mais atento para o que é WebAssembly e por que seu aspecto e desenvolvimento futuro devem importar para todos.

Ele vai mudar a web. Pelo menos alguma extensão dela.

webassembly-1

JavaScript – o idioma da web

A web é baseada em vários padrões, o que é absolutamente bom. E isso faz com que a vida de construtores e criadores de código seja mais fácil. Imagine que não existisse quaisquer regra, linguagem, estrutura ou conceito sob os quais construiríamos sites e aplicações.

O padrão web que detém diversos conjuntos de informações tem um nome bem conhecido. É chamado de JavaScript.

O JavaScript é basicamente a linguagem de programação padrão para plataformas web. E como cada vez mais os softwares se tornam softwares web, o JavaScript ganhou uma imensa popularidade.

Tem havido algumas tentativas ao longo dos anos para contornar as limitações do JavaScript, o que ele definitivamente tem. Arquivos JavaScript são arquivos de texto simples. Esses arquivos são baixados do servidor e, em seguida, analisados e compilados pelo motor JavaScript no navegador.

webassembly-2

Os navegadores atualmente usam JavaScript para interpretar código e habilitar funcionalidades, como conteúdo dinâmico. Melhorias de desempenho com frameworks JavaScript também foram feitas. No entanto, os sistemas baseados em bytecode são ainda mais rápidos e mais eficientes.

Então, o que diabos é WebAssembly?

WebAssembly é uma espécie de novo código de byte. WebAssembly – ou abreviado: “wasm” – é uma nova sintaxe para código binário seguro de baixo nível. Ele é definido como “um formato portátil para execução, carregamento, verificação e exibição de modelos de código”, projetado para servir como um alvo de compilação para a web.

Isso definitivamente significa melhorias de desempenho no navegador. E nos dá acesso a um conjunto de blocos de construção de baixo nível, como uma gama de tipos e operações.

Não me interpretem mal. Ele não é anunciado e concebido como uma alternativa ao JavaScript.

E como Bjarne Stroustup declarou:

webassembly-3(Tradução: JS vai sobreviver. “Há apenas dois tipos de linguagem: aquelas sobre as quais as pessoas reclamam e aquelas que ninguém usa”.)

Ou como Eric Elliott afirmou: “Pode ser útil não pensar em WebAssembly como uma linguagem de fato. Ele é mais como uma máquina”.

De asm.js para WebAssembly?

O asm.js é ótimo para código na compilação escrito – por exemplo – em C ou C ++. O asm.js é um subconjunto do JavaScript, que pode ser usado em plataformas de baixo nível, e é uma linguagem de destino eficiente para compiladores.

A ideia do asm.js é codar o JavaScript de uma forma que os motores de compilação produzam código de máquina mais eficiente. Se você compilar C ++ para asm.js, poderá alcançar grandes melhorias de velocidade em navegadores web.

webassembly-4

O WebAssembly tem algumas vantagens sobre o asm.js que envolvem principalmente problemas de desempenho. De acordo com o FAQ do WebAssembly: “Em dispositivos móveis, grandes códigos compilados podem facilmente levar 20-40s apenas para serem analisados […] As primeiras experiências mostram que o WebAssembly pode ser carregado mais do que 20 vezes mais rapidamente, porque o trabalho de análise é mínimo”.

O que isso tem de tão incrível, afinal?

Então, provavelmente você está perguntando: por que toda essa febre sobre a notícia? O WebAssembly é definitivamente uma melhoria para o JavaScript. Mas não apenas isso. É uma grande melhoria para o navegador também.

Os navegadores vão entender o formato binário. Então você vai ser capaz de compilar pacotes binários que comprimem muito mais do que um conteúdo JavaScript.

Isso poderia trazer a “performance parecida com aplicativos” para todos os aplicativos de conteúdos da web. Parece ótimo, né? Em vez de ter que analisar o código completo, porém, que muitas vezes pode demorar um pouco (especialmente no celular), o WebAssembly pode ser decodificado significativamente mais rápido.

Veja esta conversa por Brendan Eich:

Quem já está nessa?

Google, Microsoft e Mozilla são apenas alguns nomes. Engenheiros líderes lançaram uma Comunidade WebAssembly com a missão de “promover a colaboração cross-browser em estágio inicial em formato portátil do novo, […] formato para compilação na web”.

No entanto, é necessário lembrar que a obra “acaba de começar” no WebAssembly. Então este é um estágio muito cedo do projeto e vai certamente demorar algum tempo até que o WebAssembly se torne um padrão web bem conhecido.

Por que isso afetará todos os desenvolvedores web?

Porque ele vai permitir que os desenvolvedores façam todo tipo de coisas novas que não teriam sido possíveis ou tão fáceis com JavaScript.

A comunidade W3C WebAssembly tem poucos casos de uso para o WebAssembly e como ele vai facilitar a vida dos desenvolvedores web. Aqui estão alguns:

  • A melhor forma de execução das linguagens de programação é cross-compilada para a web.
  • Para o desenvolvedor das ferramentas, dentro do navegador.
  • Cliente mais rápido para aplicações empresariais (por exemplo, bancos de dados).

O WebAssembly pode ser usado de várias maneiras. Por exemplo, pode ser utilizado em código existente JavaScript/HTML que pode ser incorporado. Por outro lado, o WebAssembly pode ser usado como o framework principal, enquanto a IU (interface de usuário) ainda é feita em JavaScript / HTML.

Menos código, melhor desempenho, menos bugs?

De acordo com o grupo WebAssembly, o simples fato de utilizar WebAssembly significa menos código-fonte. Em comparação com asm.js, isso significa uma redução de cerca de 25% no tamanho do código – embora ele seja apenas um protótipo, e os resultados variam.

Então, provavelmente você está querendo saber como manter-se atualizado sobre WebAssembly? Eu recomendo os seguintes recursos úteis para WebAssembly:

***

Thomas Peham faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://usersnap.com/blog/what-is-webassembly-for-web-developer/