Header Ads

Por que o WebAssembly é importante?

Shutterstock / Andrey Suslov

WebAssembly é um formato de instrução binária que pode ser executado em navegadores da web. Ele fornece um ambiente de execução em área restrita com desempenho quase nativo, eliminando a maioria das sobrecargas associadas ao JavaScript em páginas da web.

WebAssembly (Wasm) é um código de máquina de baixo nível executado em uma máquina virtual baseada em pilha. Isso significa que ele está muito mais próximo do seu hardware do que do JavaScript. Isso precisa ser analisado e totalmente interpretado antes de ser executado.

Criar Wasm envolve um pouco mais do que escrever JavaScript. Embora você possa codificá-lo manualmente no formato de texto Wasm, isso é de baixo nível e equivalente a escrever código assembly para execução nativa. Mais frequentemente, você escreverá em uma linguagem de programação estabelecida e compilará em Wasm. (Mais sobre isso mais tarde.)

Por que Wasm realmente importa?

Se o aumento de aplicativos ricos da web é alguma coisa a ver, os desenvolvedores, em geral, estão bastante confortáveis ​​em escrever JavaScript. Ele evoluiu consideravelmente na última década com novos recursos de sintaxe e melhorias no desempenho do navegador. Isso o elevou de scripts simples a uma linguagem que é capaz de oferecer suporte a aplicativos complexos e autocontidos. Por que o WebAssembly é necessário, então?

Wasm não substitui JavaScript. Ele é direcionado a casos de uso específicos em que o JavaScript ainda é um obstáculo e possivelmente sempre será. Desses casos, o desempenho é onde o Wasm se destaca particularmente.

Sites com muito JavaScript têm uma tendência a ficar lentos e consumir memória. Isso é especialmente perceptível em dispositivos móveis, onde os aplicativos da web ainda não têm o “ toque ” de suas contrapartes nativas.

Como o Wasm fica muito mais próximo do hardware, ele oferece um nível de desempenho que mal se distingue dos aplicativos nativos. Isso abre a web para uma nova classe de aplicativos de desempenho crítico. Se for executado em sua área de trabalho, ele pode ser executado no navegador sem nenhuma redução perceptível de desempenho.

Precisamos de mais desempenho na Web?

Sempre haverá o argumento de que alguns aplicativos são simplesmente os mais adequados para uso em desktop. A web oferece seus próprios benefícios, principalmente em torno da ampla distribuição.

Publicar seu aplicativo na web oferece a você o maior público possível. Qualquer pessoa pode acessá-lo de qualquer dispositivo que possua. Isso aumenta a conveniência para seus usuários e significa que você tem uma base de código para manter.

A verdadeira questão não é se precisamos de mais desempenho na web: em vez disso, devemos perguntar se precisamos de mais aplicativos na web. Para responder a essa pergunta, podemos olhar para sites com muitas funcionalidades que já adotaram o Wasm.

AutoCAD é um software de design auxiliado por computador para arquitetos e engenheiros. A versão mais recente da web estreou no Google I / O em 2018. Ele usa o Wasm para consumir componentes da base de código de desktop existente como está. Parte do código data de 35 anos, mas agora é executado no navegador.

Outro exemplo é o Figma, que já utilizou o subconjunto JavaScript asm. js para otimizar seu desempenho. Ao mudar para Wasm, Figma notou uma melhoria de desempenho de 3x. O Google também usa o Wasm, contando com ele para trazer o Google Earth para a web para todos.

Esses aplicativos altamente complexos não podiam existir anteriormente na web. Se o fizessem, eram executados com severas penalidades de desempenho em comparação com seus equivalentes de desktop. Wasm é a arquitetura necessária para completar a transição da web de páginas orientadas a documentos para uma plataforma de aplicativo completa. Você pode até jogar Doom 3!

Aumento da escolha do desenvolvedor

Além do desempenho, o WebAssembly é importante porque dá aos desenvolvedores mais flexibilidade e escolha. Excluindo o legado de plug-ins Flash, Java e ActiveX, o JavaScript tem sido sua única escolha ao escrever código para o navegador.

Essa situação agora foi transformada. WebAssembly é um formato de baixo nível para o qual outras linguagens são compiladas. C, C ++, C #, Java, Python, Rust e muitos outros são capazes de gerar módulos WebAssembly. Isso dá aos desenvolvedores muito mais opções ao criar código para a web.

Você ainda precisa do JavaScript para carregar seus módulos Wasm, mas isso é tudo. Você pode implementar todas as funcionalidades do seu projeto usando o idioma escolhido e, em seguida, compilá-lo em Wasm para o navegador.

Os desenvolvedores agora podem escrever para a web na linguagem que melhor se adapte a eles e a sua aplicação. Pode ser uma linguagem orientada a objetos fortemente tipada ou algo focado em programação funcional. Você não está mais restrito à digitação livre e aos protótipos de objetos do JavaScript.

Facilitando a reutilização de código

WebAssembly traz benefícios substanciais quando se trata de reutilização de código. Você pode trazer suas bibliotecas compartilhadas para a web sem reimplementá-las em JavaScript. Isso pode economizar horas, dias ou semanas de seu tempo.

Usando C # como exemplo, você pode ter uma DLL . NET que contém métodos convenientes usados ​​por seu código do lado do servidor e seu aplicativo de desktop. Anteriormente, você precisaria implementar esses métodos em JavaScript quando chegasse a hora de criar seu aplicativo da web.

Com o Wasm, você pode recompilar sua DLL usando WebAssembly como destino. O mesmo código fica acessível no navegador. O Wasm reduz o desperdício e a duplicação de engenharia, permitindo que você use o que já tem.

Historicamente, isso só foi possível se seu back-end usasse Node. js. Você poderia abstrair a lógica comum em uma biblioteca JavaScript pronta para reutilização no front-end. Agora você pode trabalhar com bibliotecas escritas em qualquer linguagem.

Isso funciona mesmo se você usar JavaScript para a maior parte do seu aplicativo da web. Você pode fazer interface com módulos Wasm por meio de JavaScript, para que ainda possa usar sua DLL de funções compartilhadas. APIs assíncronas permitem trocar dados com Wasm para que você possa chamar funções e obter seus valores de retorno.

Resumo

WebAssembly é facilmente descartado como uma tecnologia obscura com pouca relevância para os aplicativos da web de hoje. Wasm está realmente visando a web do amanhã, onde aplicativos de classe de desktop serão executados com desempenho nativo.

Também é importante olhar além dos benefícios do título. Wasm não se trata apenas de aumentos de velocidade. Ele também pode reduzir o tempo de envio para equipes de desenvolvimento, especialmente aquelas que trabalham em plataforma cruzada ou compartilham lógica entre o cliente e o servidor. Parte do entusiasmo em torno do WebAssembly deriva da transformação da web em um alvo de compilação, em vez de ser uma plataforma completamente autônoma. Construir para o navegador não significa mais escrever JavaScript.

Aqui, em 2021, a adoção do WebAssembly permanece relativamente baixa. Projetos que o usam relataram sucessos — você só precisa experimentar o Figma ou o Google Earth para apreciar o padrão de desempenho do Wasm. É provável que você veja mais do Wasm nos próximos anos, conforme os aplicativos, novos e antigos, são trazidos para o navegador.

Nenhum comentário