Uma breve história do JavaScript
(deno.com)- Neste ano, no 30º aniversário do JavaScript, a Deno fez um breve resumo de sua trajetória
- O JavaScript começou como uma linguagem de script desenvolvida em 10 dias e hoje se consolidou como a linguagem mais popular do mundo
- Veja alguns momentos históricos importantes que mostram como o JavaScript evoluiu e para onde está caminhando
A brief history of JavaScript (1994-2025)
[1994]
-
Lançamento do Netscape Navigator 1.0
- Em dezembro de 1994, foi lançado o Netscape Navigator 1.0
- Sua velocidade e interface gráfica, superiores às dos navegadores anteriores, foram fatores de popularidade
- Com suporte ao HTML 2.0, criou-se a base para que o JavaScript viesse a rodar nesse navegador
[1995]
-
Nascimento do JavaScript
- Em maio de 1995, Brendan Eich desenvolveu o rascunho inicial do JavaScript em 10 dias
- Foi criado em resposta ao pedido por uma linguagem de script com sintaxe semelhante à do então popular Java
- O nome foi definido como JavaScript por razões de marketing
-
Anúncio oficial da Netscape e da Sun
- Em dezembro de 1995, o JavaScript foi apresentado como uma “linguagem leve de script orientada a objetos para a web”
- O anúncio contou com o apoio de 28 empresas de tecnologia e posicionou a linguagem também para ambientes corporativos
[1996]
-
Resposta da Microsoft
- Em março de 1996, a Microsoft incluiu o JScript no Internet Explorer 3
- O JScript podia se integrar ao ActiveX para controlar aplicativos como o Excel
-
Lançamento do Navigator 2.0 com JavaScript 1.0
- No mesmo março, o JavaScript 1.0 fez sua estreia oficial no Netscape Navigator 2.0
- O conceito de DOM (Document Object Model) começou nesse momento
[1997]
-
Proposta de padronização na ECMA
- Em junho de 1997, a Netscape propôs a padronização do JavaScript na ECMA International
- O objetivo era resolver problemas de compatibilidade com o JScript da Microsoft
- Foi criada a especificação ECMA-262, e o nome definido foi ECMAScript
- O comitê TC39 foi formado para gerir a evolução da linguagem
[1998]
-
Início do projeto Mozilla
- Em janeiro de 1998, para responder ao monopólio da Microsoft no mercado de navegadores, a Netscape abriu seu código-fonte
- O projeto recebeu o nome de “Mozilla” e mais tarde levaria a resultados importantes de código aberto, como Firefox e Rust
-
Anúncio do ECMAScript 2
- Em setembro de 1998, foi lançado oficialmente o ECMAScript 2
- Não trouxe novos recursos, mas teve como foco principal a consistência da especificação e uma documentação mais refinada
[1999]
-
IE5 e introdução do XMLHttpRequest
- Em março de 1999, o IE5 introduziu o
XMLHttpRequest - Isso se tornaria a base da tecnologia AJAX
- Em março de 1999, o IE5 introduziu o
-
Surgimento do JSDoc
- Em abril de 1999, foi introduzido o JSDoc para documentação de JavaScript
- Influenciado pelo Javadoc do Java, ele ainda é usado como ferramenta de geração de documentação
-
Anúncio do ECMAScript 3
- Em dezembro de 1999, foi lançado oficialmente o ECMAScript 3
- Com adições como
do-while, expressões regulares, métodos de string e tratamento de exceções, criou a base para o crescimento efetivo da linguagem - Depois disso, foi usado por mais de 10 anos como padrão de fato do JavaScript na web
[2001]
-
Primeira aparição do JSON
- A primeira mensagem JSON foi transmitida
- Em scripts dentro de páginas web, usou-se uma estrutura de objeto no formato
{ to, do, text } - Como formato leve de mensagens baseado em JavaScript, mais tarde se tornou padrão na comunicação de APIs web
[2002]
-
Introdução do JSLint
- Douglas Crockford apresentou o JSLint, ferramenta de análise estática de sintaxe
- O objetivo era melhorar a qualidade do código JavaScript, o que mais tarde se conectaria ao seu livro “JavaScript: The Good Parts”
-
Lançamento do Phoenix 0.1, precursor do Firefox
- A comunidade Mozilla desenvolveu o Phoenix, um navegador leve, em reação ao peso da linha de produtos existente
- Trouxe recursos inovadores como navegação por abas e bloqueio de pop-ups → mais tarde evoluiu para o Firefox
[2003]
-
Anúncio do Safari e do WebKit pela Apple
- A introdução do navegador Safari e do motor WebKit ajudou o Mac a reduzir sua dependência da Microsoft
- Mais tarde, isso serviria de base para o Mobile Safari no iPhone
[2004]
-
Gmail e AJAX
- Com a interface do Gmail baseada em AJAX, foi definido um novo padrão de UX para web apps
- Troca de dados com o servidor sem recarregar a página inteira → início da era Web 2.0
[2005]
-
Consolidação do termo AJAX
- Jesse James Garrett formalizou o conceito de “AJAX”
- A combinação de JavaScript + XML consolidou uma estrutura de comunicação assíncrona com o servidor
-
Surgimento do Mozilla DevMo → evolução para MDN
- Teve início o MDN, hub de documentação de JavaScript baseado em padrões
- Passou a oferecer uma referência unificada para documentos fragmentados de suporte a navegadores
[2006]
-
Surgimento do jQuery
- John Resig iniciou o projeto jQuery
- Contribuiu fortemente para resolver problemas de compatibilidade entre navegadores em manipulação de DOM, eventos, AJAX e mais
- Sua API concisa levou a uma disseminação explosiva
[2007]
-
Lançamento do iPhone e ausência de suporte a Flash
- A Apple anunciou o iPhone, e o Safari não tinha suporte a Flash
- Isso acelerou a transição, no ambiente mobile, para conteúdos baseados em HTML + JavaScript
[2008]
-
Encerramento oficial do Netscape Navigator
- A AOL encerrou o desenvolvimento do Netscape, marcando o fim da primeira guerra dos navegadores
- O domínio do IE pela Microsoft levaria a processos antitruste
-
Publicação de JavaScript: The Good Parts
- O livro de Crockford ajudou a reavaliar o JavaScript como linguagem de desenvolvimento profissional
-
Anúncio do Google Chrome e do motor V8
- Junto com o lançamento do Chrome, foi apresentado o motor JavaScript V8
- Compilação JIT e otimização do garbage collection trouxeram grande ganho de desempenho
- Depois disso, abriu-se a base para expansões server-side como o Node.js
[2009]
-
Surgimento do CommonJS
- Houve uma tentativa de padronizar o uso de código JS modularizado fora do navegador, como em servidores
- Isso mais tarde se tornou a base da estrutura de módulos do ecossistema Node.js
-
Início do projeto Node.js
- Ryan Dahl começou a desenvolver o Node.js
- Isso permitiu executar JavaScript em ambiente de servidor, expandindo-o como linguagem full stack
-
Aquisição da Sun Microsystems pela Oracle
- Junto com Java, a marca registrada JavaScript também foi transferida para a Oracle
- Isso gerou questões de trademark em torno do nome JavaScript
-
Surgimento do Express.js
- Primeiro commit do Express.js, um framework web baseado em Node.js
- Propôs uma estrutura de middleware voltada à construção de APIs REST
-
Anúncio do ECMAScript 5
- Recursos como strict mode, suporte a
JSONe novos métodos deArrayorganizaram a base do JavaScript moderno
- Recursos como strict mode, suporte a
-
Surgimento do CoffeeScript
- Experimentou melhorias de sintaxe antes do ES6, como sintaxe concisa, arrow functions e desestruturação
- Mais tarde, influenciou indiretamente a evolução da sintaxe do JavaScript
[2010]
-
Lançamento do npm 1.0
- O npm, gerenciador de pacotes para JavaScript, foi lançado oficialmente, iniciando a padronização do compartilhamento e reutilização de código
- Hoje, tornou-se o maior registro de código aberto do mundo, com mais de 3 milhões de pacotes
-
Lançamento do WebStorm 1.0
- A JetBrains lançou a primeira IDE dedicada a JavaScript
- Oferecia de forma integrada recursos de análise estática, detecção de erros, autocompletar e depuração
-
Surgimento do AngularJS & Backbone.js
- Início do boom dos frameworks SPA
- Angular era centrado em declaratividade/injeção de dependência, enquanto Backbone era centrado em proceduralidade/concisão
- A partir desse período, passou a surgir o fenômeno de aparecimento e desaparecimento frequente de frameworks ("Framework churn")
[2011]
-
Port do Node.js para Windows
- Graças à colaboração entre Joyent e Microsoft, o Node.js passou a funcionar também no Windows
- Desenvolvimento da biblioteca libuv → forneceu uma plataforma unificada de I/O assíncrona
- Foi o início da trajetória open source da MS, que depois se estenderia a TypeScript, VSCode, Azure e outras estratégias
[2012]
-
Surgimento do Webpack
- Como ferramenta de bundling de assets web, expandiu o sistema de módulos para o cliente
- Depois foi adotado como sistema central de build em React, Angular, Vue e outros
-
Lançamento do TypeScript 0.8
- A Microsoft apresentou um superset de JavaScript com tipagem estática
- Ofereceu uma estrutura adequada para projetos de grande escala e depois influenciou o padrão ES
[2013]
-
Início do Atom Shell, precursor do Electron
- Tornou possível desenvolver aplicativos desktop com HTML/CSS/JS
- Ao ser adotado por Slack, Visual Studio Code e outros, mudou a forma de desenvolvimento desktop
-
Lançamento do asm.js
- Permitiu computação de alto desempenho no navegador ao converter código C/C++ em JS
- Depois evoluiu para WebAssembly
-
Definição da stack MEAN
- Nome dado à combinação MongoDB + Express + Angular + Node.js
- Disseminação do desenvolvimento full stack baseado em JavaScript
-
Lançamento do React
- Depois de uso interno no Facebook, foi lançado como open source
- Consolidou o paradigma de desenvolvimento de UI baseada em componentes
-
Início do desenvolvimento do ESLint
- Ferramenta de lint extensível iniciada por Nicholas C. Zakas
- Espalhou-se rapidamente por oferecer mais possibilidades de customização do que os linters existentes
-
Lançamento do Gulp
- Diferente do Grunt, centrado em configuração, era uma ferramenta de build baseada em código e streaming
- Formou uma tendência de automatização de tarefas de build com JavaScript
[2014]
-
Lançamento do Vue.js
- Framework de UI progressivo apresentado por Evan You
- Fez um meio-termo entre a UI declarativa do React e os recursos de template do Angular
-
Aquisição do Express.js
- A StrongLoop adquiriu o Express.js → depois foi adquirida pela IBM
- Questionamentos sobre a independência da comunidade levaram ao surgimento de frameworks posteriores, como o Koa
-
Início do Babel.js (antigo 6to5)
- Tornou possível executar a sintaxe mais recente de JS em navegadores antigos
- Consolidou-se como o transpiler padrão de todos os frameworks
-
Lançamento do Meteor 1.0
- Ganhou destaque como ferramenta para desenvolvimento de webapps em tempo real e de stack única
- Depois influenciou tecnologias em tempo real como GraphQL e Firebase
-
Lançamento do Flow pelo Facebook
- Ferramenta de verificação de tipos estáticos para detectar erros de JS antecipadamente
- Depois, seu uso caiu com o crescimento do TypeScript
-
Anúncio do AWS Lambda
- Introduziu a computação serverless baseada em JavaScript(Node.js)
- Tornou possível implementar backends sem gerenciar infraestrutura por meio da execução de funções orientadas a eventos
-
Fork do io.js
- A comunidade criou o fork io.js em reação ao ritmo lento de releases do Node.js pela Joyent
- Depois, em 2015, foi reintegrado ao Node.js
[2015]
-
Surgimento do termo Jamstack
- Ênfase na combinação JavaScript + API + Markup
- Com a valorização de SSR e SSG, houve a ascensão dos geradores de sites estáticos
-
Fundação da Node.js Foundation
- Reorganização da governança da comunidade, incluindo a integração com o io.js
- Participação de grandes empresas como IBM e Microsoft
-
Lançamento do GraphQL
- Linguagem de consulta para APIs desenvolvida pelo Facebook
- Caracteriza-se por abordagem declarativa, design fortemente tipado e minimização de requisições ao servidor
-
Lançamento do Redux
- Contêiner de estado previsível para gerenciamento de estado no React
- Depois também foi adotado em Vue, Angular e outros
-
Anúncio do WebAssembly
- Tornou possível executar código de alto desempenho, como C/C++, no navegador
- Como sucessor do asm.js, consolidou-se como ambiente de execução universal da web
-
Lançamento do Atom 1.0
- Editor de texto hackeável baseado em Electron criado pelo GitHub
- Influenciou diretamente o VSCode
-
Anúncio oficial do ECMAScript 6 (ES2015)
- Grandes melhorias de sintaxe como
import/export,let/const,Promiseefetch - Versão que se tornou a base do JavaScript moderno
- Grandes melhorias de sintaxe como
-
Integração entre Node.js e io.js
- Com o anúncio do Node.js v4.0, os dois projetos foram reunificados em um só
- Estabelecimento de suporte de longo prazo (LTS) e de uma política de versionamento significativa
[2016]
-
Microsoft open source o motor Chakra
- Abertura do código-fonte do Chakra, motor de JS do navegador Edge
- Recebeu atenção da comunidade de desenvolvedores, mas depois foi descontinuado diante da predominância do V8
-
Incidente do Leftpad
- A remoção do módulo
left-padcausou um grande colapso de dependências de pacotes - Serviu de gatilho para mudanças na política do npm
- A remoção do módulo
-
Lançamento do VSCode 1.0
- IDE leve baseada em Electron e TypeScript
- Ganhou popularidade rapidamente por sua velocidade, extensibilidade e excelente suporte a JS/TS
-
Anúncio do ECMAScript 2016
- Pequena atualização com recursos como o operador
**earray.includes()
- Pequena atualização com recursos como o operador
-
Anúncio do Angular2
- Arquitetura de componentes baseada em TypeScript completamente diferente do AngularJS
- Com compilação AOT e reforço de segurança, surgiu como opção para o mercado enterprise
-
Lançamento do Next.js 1.0
- Framework de renderização no lado do servidor baseado em React
- Impulsionou a padronização do desenvolvimento full stack com React voltado para SEO e performance
[2017]
-
Commit inicial da proposta Temporal
- Proposta da API Temporal para resolver os problemas do objeto
Date - Em 2021, foi aprovada para inclusão no padrão ECMAScript, mas atualmente só é suportada em alguns ambientes
- Proposta da API Temporal para resolver os problemas do objeto
-
Lançamento do Prettier 1.0
- Formatador que aplica automaticamente um estilo de código consistente
- Também influenciou o surgimento de formatadores como o Black do Python e os do Rust
-
Lançamento do ECMAScript 2017
- Introduziu recursos modernos de JS como
async/await,Object.entries()eObject.values() - Generalização do uso de
fetch()
- Introduziu recursos modernos de JS como
-
Lançamento do Yarn
- Gerenciador de pacotes para resolver a lentidão e os conflitos do npm
- Introduziu recursos inovadores como
yarn.lock, instalação paralela e cache
-
Lançamento do Cloudflare Workers
- Início da era da edge computing
- Possibilitou que código serverless fosse executado de forma distribuída no mundo todo
[2018]
-
Lançamento do Puppeteer 1.0
- Ferramenta de automação de navegador baseada em Chrome headless
- Ofereceu simplicidade em comparação ao Selenium com uma API amigável para Node.js
-
Lançamento do TensorFlow.js
- Tornou possível executar machine learning no navegador
- Implementação de apps de IA em tempo real com base em WebGL/WebGPU
-
Smooshgate
- Devido a um conflito de nomenclatura com
Array.flatten, o nome foi alterado paraflat() - A origem do problema foi uma incompatibilidade com o MooTools
- Devido a um conflito de nomenclatura com
-
Ryan Dahl anuncia o Deno
- Com uma retrospectiva sobre os problemas do Node, fez a apresentação inicial do runtime Deno
-
Lançamento do ECMAScript 2018
- Introdução de
promise.finally(),async iteratione rest/spread de objetos
- Introdução de
[2019]
-
Criação da OpenJS Foundation
- Integração da Node.js Foundation com a JavaScript Foundation
- Integração da governança de projetos de servidor e cliente
-
Node.js v12: início do suporte experimental a ESM
- Introdução experimental de módulos ES por meio de
.mjs,type: modulee outros
- Introdução experimental de módulos ES por meio de
-
ECMAScript 2019 lançado
- Adicionados
Object.fromEntries(),String.prototype.trimStart()e outros
- Adicionados
-
Node.js v13.2: ESM oficialmente estabilizado
[2020]
-
SpaceX Dragon, ida ao espaço com JS
- Uso de JavaScript na interface de tela sensível ao toque baseada no Chrome
-
Lançamento do Deno 1.0
- Abordagem inovadora com suporte nativo a TypeScript, modelo de permissões, HTTP import e mais
-
Encerramento oficial do Adobe Flash
- Consolidação de um ambiente multimídia web centrado em JS
[2022]
-
Deno entra para o TC39
- Declaração de participação na padronização do JavaScript
-
Fim do suporte ao IE11
- Conclusão da transição para um ecossistema web baseado em padrões
-
ECMAScript 2022 anunciado
- Adicionados
top-level await, blocos estáticos de classe e outros
- Adicionados
[2023]
-
Lançamento do Bun 1.0
- Runtime substituto ultrarrápido do Node.js implementado em Zig
- Compatível com npm, com ferramentas de build integradas
[2024]
-
Escolhido o mascote Rocket Turtle do Node.js
- Personagem final definido por meio de um concurso da comunidade
-
ECMAScript 2024 lançado
- Reforço no tratamento de Unicode com
toWellFormed()e outros
- Reforço no tratamento de Unicode com
-
Lançamento do registro JSR
- Registro dedicado a módulos modernos de ECMAScript da equipe do Deno
- Compatível com TypeScript, Deno, Bun e Cloudflare Workers
-
Início do movimento FreeJavaScript
- Campanha pedindo que a Oracle devolva a marca JavaScript
- Assinada por figuras importantes como Brendan Eich
-
Lançamento do Deno 2
- Melhoria na compatibilidade com Node e até campanha publicitária, marcando a intensificação da guerra dos runtimes
[2025]
-
Anunciado o port de TypeScript para Go
- Projeto
tsgoem andamento com meta de desempenho mais de 10 vezes superior - Adoção oficial prevista a partir do TypeScript 7.0
- Projeto
-
Anunciada a abertura do código do Copilot Chat
- Microsoft anuncia estratégia para transformar o VSCode em um IDE de desenvolvimento de IA open source
[Encerramento]
- O JavaScript começou como uma simples linguagem de script e evoluiu para uma linguagem de desenvolvimento de propósito geral que abrange frontend web, backend, machine learning, aeroespacial e IDEs de desenvolvimento de IA
- A comunidade open source, a evolução contínua da linguagem e a inovação nos runtimes impulsionaram esse crescimento, e no futuro ele deve ir além da web e se expandir para áreas ainda mais amplas com ferramentas mais rápidas e mais inteligentes
10 comentários
Agora virou um padrão de implementação, não mais uma linguagem... querendo ou não, acho que acabou se tornando uma sintaxe que precisa carregar até o legado.
Obrigado pelo ótimo material.
A versão 3 do IE era praticamente um lixo. O Netscape 3 era quase o padrão na época, mas quando o IE 4 saiu a situação se inverteu. Além disso, o IE 4 vinha instalado por padrão no Windows.
O Netscape 4 até saiu, mas não era bom o suficiente para virar o jogo. Então a participação do IE continuou aumentando.
Quando o Netscape virou open source, surgiu o projeto Mozilla e saiu a versão beta do Phoenix; foi aí que os usuários começaram a sentir que algo realmente tinha mudado. Eu inclusive. Por causa de problemas de marca registrada, o nome mudou para Firefox, e foi a partir daí que o Firefox passou a se firmar como um concorrente de verdade do IE.
O nome deve ter mudado assim: Phoenix -> Firebird -> Firefox. Provavelmente foi por já existir um banco de dados chamado Firebird.
Estou lendo tudo de uma vez e, no meio, comecei a ficar emocionado.
Parece algo super recente, mas ao mesmo tempo também parece muito antigo...
O texto original está extremamente bem organizado. Até os screenshots e os códigos nostálgicos...! Espero que o Deno também evolua ainda mais. haha
Parece que a evolução do JavaScript se divide em antes e depois do lançamento do Node.js.
Concordo.
Junto com a Java, a marca registrada JavaScript também foi transferida para a Oracle. Essa parte eu descobri agora.
Originalmente, a marca registrada de JS pertencia à Sun, mas quando a Sun foi adquirida, a marca registrada de JS (assim como o MySQL etc.) também foi transferida para a Oracle.
O post original tem muitas imagens e vários trechos de código, então vale a pena conferir também.