SlideShare uma empresa Scribd logo
Web Assembly
JavaScript
● Criado por Brendan Eich em 1995, feito em 10 dias
● Objetivo primário: Controlar o DOM e trazer dinamicidade a páginas até
então estáticas
● Interpretado - erros em runtime
● Preocupação com perfomance: Nenhuma
● Feito em 10 dias
V8 - Google
● Surgimento do Ajax
○ Necessidade do código ser processado no browser
○ Aplicações mais dinâmicas (gmail. google maps e afins)
○ Necessidade de perfomance
● Surgimento da Engine V8
● JIT - Just in Time Compilation - Compilação de código JavaScript para
Bytecode
Como JIT/V8 funciona?
● Após o JavaScript ser carregado ele é transformado em uma estrutura em
árvore chamada Abstract Syntax Tree ou AST
● Se um trecho do código for interpretado muitas vezes ele se torna warm. Ele
passa pelo baseline compiler que, dependendo do SO/plataforma, gera uma
versão compilada do trecho com uma certa otimização, reduzindo o tempo de
interpretação.
● Se esse código warm for executado muitas vezes ele se torna hot e entra em
ação o optimizer compiler, usando algumas coisas como premissa
● Se uma dessas premissas for quebradas iniciasse a fase de deoptimization
● Temos ainda um garbage colector para limpar a memória quando algo não é
mais usado
Como JIT funciona?
JavaScript
● Criado por Brendan Eich em 1995, feito em 10 dias
● Objetivo primário: Controlar o DOM e trazer dinamicidade a páginas até
então estáticas. Fazer aplicações robustas e rodar em qualquer lugar
● Interpretado. Compilado em tempo real
● Preocupação com perfomance: Muita!
Web Assembly - O próximo salto de perfomance
“Web Assembly will change the way we think of Web
Apps”. Jay Phelps. Software Engineer on Netflix.
Web Assembly o que é??
● WebAssembly (WASM) é um Compiler Target (o código
que o compilador gera) de formato binário, que roda
códigos como C, C++ e Rust no navegador com uma
performance bem próxima a de um código nativo.
● Permite rodar esses códigos de outras linguagens ao lado
de JavaScript - inclusive compartilhando funcionalidade
Etapas no browser
● O bundle menor, decodificação antes mesmo do JS
parsear, otimizações na pré-compilação e compilação em
stream
Resumo
● Pode ser de 10% a 800% mais rápido que um código JS - Depende da
engine que irá rodar
● Podemos importar código WASM no NodeJS ou Browser
● Roda apenas 20% mais lento que código nativo.
● Compartilhamento de código entre JavaScript e outras linguagens
● Acesso as APIs Web disponibilizadas pelo environment (browser ou Node)
Futuro?
● Binarios Everywhere
● Utilização para Jogos na web
● Mais e mais linguagens compilando para WASM
● Garbage Collector
● Wasi

Mais conteúdo relacionado

PPTX
9 erros que desenvolvedores Node.js cometem
PPTX
Escalabilidade com docker - ASP.NET Conference 2016
PPT
GWT - RIA baseada em AJAX
PPTX
ASP.NET Core - iMasters - Março/2016
PPTX
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
PPTX
.NET Core Internals. O que é o .NET Platform Standard?
PPTX
MVP Week 2020 - Aplicações Modernas com Blazor WASM
PPTX
Middlewares ASP.NET
9 erros que desenvolvedores Node.js cometem
Escalabilidade com docker - ASP.NET Conference 2016
GWT - RIA baseada em AJAX
ASP.NET Core - iMasters - Março/2016
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
.NET Core Internals. O que é o .NET Platform Standard?
MVP Week 2020 - Aplicações Modernas com Blazor WASM
Middlewares ASP.NET

Mais procurados (20)

PDF
Por que Node JS?
PPTX
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
PPTX
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
PPTX
ASP.NET MVC Core
PDF
TDC2016SP - Trilha Frameworks JavaScript
PPTX
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
PPTX
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
PPTX
Fullstack C# com Blazor
ODP
Boas práticas no desenvolvimento de uma RESTful API
PPTX
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
PPTX
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
PPTX
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
PPTX
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
PPTX
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
PPTX
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
PPTX
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
PDF
Meetup #17
PPTX
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
PPTX
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
PPTX
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Por que Node JS?
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
ASP.NET MVC Core
TDC2016SP - Trilha Frameworks JavaScript
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
Fullstack C# com Blazor
Boas práticas no desenvolvimento de uma RESTful API
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
Meetup #17
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
ASP.NET Core e Linux: Explorando novas fronteiras - Araras Dev - Julho/2017
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Anúncio

Semelhante a Web assembly (20)

PPTX
Blazor, web assembly e o futuro do browser
PPTX
Desenvolvimento web - conceitos, tecnologia e tendências.
PPTX
MSP Tech Days Online 2018 - SPA além do JavaScript com Blazor
PPTX
BrazilJS 2012
PDF
WebAssembly além da Web - Casos de Uso em IoT
PPTX
HTML5 - William Dias - Davi Reine - XVII SACOMP
PPTX
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ODP
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
PPTX
Canal Coding Night - Sua primeira aplicação com Blazor
PPTX
JS Experience 2017 - WebAssembly na Prática
PDF
JavaScript: uma visão geral da linguagem e seu ecossistema
PPTX
Introdução ao Desenvolvimento front-end (2019)
PDF
Java script
PPTX
SPA's com Blazor e .NET Core
PDF
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
PDF
Aula 05 - Java Script Básico
PPT
ODP
Aula09 - Java Script
PDF
Desenvolvimento Web com Java Script Full Stack
PPT
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Blazor, web assembly e o futuro do browser
Desenvolvimento web - conceitos, tecnologia e tendências.
MSP Tech Days Online 2018 - SPA além do JavaScript com Blazor
BrazilJS 2012
WebAssembly além da Web - Casos de Uso em IoT
HTML5 - William Dias - Davi Reine - XVII SACOMP
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Canal Coding Night - Sua primeira aplicação com Blazor
JS Experience 2017 - WebAssembly na Prática
JavaScript: uma visão geral da linguagem e seu ecossistema
Introdução ao Desenvolvimento front-end (2019)
Java script
SPA's com Blazor e .NET Core
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Aula 05 - Java Script Básico
Aula09 - Java Script
Desenvolvimento Web com Java Script Full Stack
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Anúncio

Mais de Adrian Caetano (9)

PPTX
Java script
PPTX
Typescript
PPTX
Electron
PPTX
Protobuff
PPTX
PPTX
Frontend training
PPTX
Puppeteer
PPTX
Bff and GraphQL
PDF
Treinamento frontend
Java script
Typescript
Electron
Protobuff
Frontend training
Puppeteer
Bff and GraphQL
Treinamento frontend

Último (7)

DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
apresentacao introducao computacao ead.pdf
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PPTX
Mapeamento de Objeto para Tabela Relacional
PPTX
Curso de Windows 11 resumido na prática.pptx
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
apresentacao introducao computacao ead.pdf
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
Mapeamento de Objeto para Tabela Relacional
Curso de Windows 11 resumido na prática.pptx

Web assembly

  • 2. JavaScript ● Criado por Brendan Eich em 1995, feito em 10 dias ● Objetivo primário: Controlar o DOM e trazer dinamicidade a páginas até então estáticas ● Interpretado - erros em runtime ● Preocupação com perfomance: Nenhuma ● Feito em 10 dias
  • 3. V8 - Google ● Surgimento do Ajax ○ Necessidade do código ser processado no browser ○ Aplicações mais dinâmicas (gmail. google maps e afins) ○ Necessidade de perfomance ● Surgimento da Engine V8 ● JIT - Just in Time Compilation - Compilação de código JavaScript para Bytecode
  • 4. Como JIT/V8 funciona? ● Após o JavaScript ser carregado ele é transformado em uma estrutura em árvore chamada Abstract Syntax Tree ou AST ● Se um trecho do código for interpretado muitas vezes ele se torna warm. Ele passa pelo baseline compiler que, dependendo do SO/plataforma, gera uma versão compilada do trecho com uma certa otimização, reduzindo o tempo de interpretação. ● Se esse código warm for executado muitas vezes ele se torna hot e entra em ação o optimizer compiler, usando algumas coisas como premissa ● Se uma dessas premissas for quebradas iniciasse a fase de deoptimization ● Temos ainda um garbage colector para limpar a memória quando algo não é mais usado
  • 6. JavaScript ● Criado por Brendan Eich em 1995, feito em 10 dias ● Objetivo primário: Controlar o DOM e trazer dinamicidade a páginas até então estáticas. Fazer aplicações robustas e rodar em qualquer lugar ● Interpretado. Compilado em tempo real ● Preocupação com perfomance: Muita!
  • 7. Web Assembly - O próximo salto de perfomance
  • 8. “Web Assembly will change the way we think of Web Apps”. Jay Phelps. Software Engineer on Netflix.
  • 9. Web Assembly o que é?? ● WebAssembly (WASM) é um Compiler Target (o código que o compilador gera) de formato binário, que roda códigos como C, C++ e Rust no navegador com uma performance bem próxima a de um código nativo. ● Permite rodar esses códigos de outras linguagens ao lado de JavaScript - inclusive compartilhando funcionalidade
  • 10. Etapas no browser ● O bundle menor, decodificação antes mesmo do JS parsear, otimizações na pré-compilação e compilação em stream
  • 11. Resumo ● Pode ser de 10% a 800% mais rápido que um código JS - Depende da engine que irá rodar ● Podemos importar código WASM no NodeJS ou Browser ● Roda apenas 20% mais lento que código nativo. ● Compartilhamento de código entre JavaScript e outras linguagens ● Acesso as APIs Web disponibilizadas pelo environment (browser ou Node)
  • 12. Futuro? ● Binarios Everywhere ● Utilização para Jogos na web ● Mais e mais linguagens compilando para WASM ● Garbage Collector ● Wasi

Notas do Editor

  • #5: 4 - Basicamente a versão otimizada é jogada fora e o trecho volta a ser executado com a versão baseline ou até interpretada.
  • #11: Náo tem Garbage Collector ainda
  • #12: os 20% é importante pois ele roda em uma sandbox, que implementa uma série de restrições e medidas de segurança forçadas pelo browser.