Qual é a diferença entre JavaScript e ECMAScript?

Qual a diferença entre o ECMAScript e o JavaScript? Pelo que eu deduzi, ECMAScript é o padrão e JavaScript é a implementação. Isso está correto?

ECMAScript é a linguagem, enquanto JavaScript, JScript e até mesmo o ActionScript 3 são chamados de “dialetos”. A Wikipedia lança alguma luz sobre isso.

Eu acho que uma pequena lição de história é devida.

JavaScript foi originalmente chamado Mocha e mudou para Livescript, mas acabou se tornando JavaScript.

É importante observar que o JavaScript veio antes do ECMAscript e o histórico mostrará o motivo.

Para começar desde o começo, JavaScript derivou seu nome de Java e inicialmente Brendan Eich (o criador de JS) foi convidado a desenvolver uma linguagem que se assemelhava a Java para a Web para o Netscape.

Eich, no entanto, decidiu que o Java era muito complicado com todas as suas regras e assim se propôs a criar uma linguagem mais simples que até mesmo um iniciante pudesse codificar. Isso é evidente em coisas como o relaxamento da necessidade de ter um ponto e vírgula.

Depois que a linguagem foi concluída, a equipe de marketing da Netscape solicitou à Sun que permitisse que ela nomeasse JavaScript como um truque de marketing e, portanto, a razão pela qual a maioria das pessoas que nunca usaram JavaScript acha que está relacionada a Java.

Cerca de um ano ou dois após o lançamento do JavaScript no navegador, o IE da Microsoft pegou a linguagem e começou a fazer suas próprias implementações, como o JScript. Ao mesmo tempo, o IE estava dominando o mercado e não muito tempo depois que a Netscape teve que fechar seu projeto.

Antes do Netscape cair, eles decidiram iniciar um padrão que guiaria o caminho do JavaScript, chamado ECMAScript.

O ECMAScript teve alguns lançamentos e em 1999 eles lançaram sua última versão (ECMAScript 3) antes de entrarem em hibernação pelos próximos 10 anos. Durante esses 10 anos, a Microsoft dominou as cenas, mas ao mesmo tempo eles não estavam aprimorando seus produtos e, portanto, o Firefox nasceu (liderado por Eich) e um monte de outros navegadores, como Chrome, Opera.

ECMAScript lançou sua 5ª edição em 2009 (a 4ª edição foi abandonada) com resources como o modo estrito. Desde então, o ECMAScript ganhou muito impulso e está programado para lançar sua 6ª edição daqui a alguns meses, com as maiores mudanças que teve até agora.

Você pode usar uma lista de resources do ECMAScript 6 aqui http://kangax.github.io/es5-compat-table/es6/ e também o suporte ao navegador. Você pode até começar a escrever o Ecmascript 6 como você faz com o CoffeeScript e usar um compilador para compilar no Ecmascript 5.

Se ECMAScript é a linguagem e JavaScript é um dialeto é argumentável, mas não é importante. Se você continuar pensando assim, pode confundir você. Não existe nenhum compilador que execute o ECMAScript, e acredito que o JavaScript seja considerado a linguagem que implementa um padrão chamado ECMAScript.

Há também outras linguagens visíveis que implementam o ECMAScript, como o ActionScript (usado para Flash).

ECMAScript = ES:

  • ECMAScript é um padrão para linguagens de script.

  • Idiomas como Javascript são baseados no padrão ECMAScript.

  • O ECMA Standard é baseado em várias tecnologias originárias, sendo as mais conhecidas JavaScript (Netscape) e JScript (Microsoft).

  • ECMA significa Associação Européia de Fabricantes de Computadores

JavaScript = JS:

  • JavaScript é a implementação mais popular do padrão ECMAScript.

  • Os principais resources do Javascript são baseados no padrão ECMAScript, mas o Javascript também possui outros resources adicionais que não estão nas especificações / padrão do ECMA.

  • ActionScript e JScript são outras linguagens que implementam o ECMAScript.

  • O JavaScript foi submetido ao ECMA para padronização, mas devido a problemas de marca registrada com o nome Javascript, o padrão passou a ser chamado de ECMAScript.

  • Todo navegador tem um intérprete de JavaScript.

ES5 = ECMAScript 5:

  • ES5 é uma versão do ECMAScript (antigo / atual).

  • ES5 é o JavaScript que você conhece e usa no navegador hoje.

  • O ES5 não requer uma etapa de criação (transpilers) para transformá-lo em algo que será executado nos navegadores atuais.

  • A versão 5 do ECMAScript foi concluída em dezembro de 2009, e as versões mais recentes de todos os principais navegadores (Chrome, Safari, Firefox e IE) implementaram a versão 5.

  • A versão 5.1 foi concluída em junho de 2011.

ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:

  • ES2015 é uma versão do ECMAScript (novo / futuro).

  • Oficialmente, o nome ES2015 deve ser usado em vez do ES6.

  • O ES6 abordará muitas das principais deficiências de linguagem abordadas em TypeScript e CoffeeScript.

  • O ES6 é a próxima iteração do JavaScript, mas não é executado nos navegadores atuais.

  • Existem alguns transpilers que exportarão o ES5 para rodar em navegadores.

BabelJS:

  • O BabelJS é o transpilador mais popular que transforma o novo JavaScript ES6 em Old JavaScript ES5.

  • O BabelJS torna possível escrever a próxima geração de JavaScript hoje (significa ES2015).

  • O BabelJS simplesmente pega o arquivo ES2015 e o transforma em arquivo ES5.

  • As versões atuais dos navegadores agora podem entender o novo código JavaScript (ES2015), mesmo que ainda não o suportem.

TypeScript e CoffeeScript:

  • Ambos fornecem o açúcar sintático sobre o ES5 e, em seguida, são transcompilados em JavaScript compatível com ES5.

  • Você escreve TypeScript ou CoffeeScript, então o transpiler o transforma em JavaScript ES5.

Tecnicamente, o ECMAScript é a linguagem que todos estão usando e implementando – é a especificação criada há muitos anos quando o Netscape e a Microsoft se sentaram e tentaram padronizar os scripts entre JavaScript (linguagem de script do Netscape) e JScript (Microsoft).

Subsequentemente, todos esses mecanismos estão implementando o ECMAScript, no entanto o JavaScript (o nome) agora está disponível por razões tradicionais de nomenclatura e como um termo de marketing da Mozilla para suas várias extensões não padrão (que eles querem realmente “versão”). )

JavaScript = ECMAScript + API do DOM ;

  • O ECMAScript® Language Specification define toda a lógica para criar e editar objects, matrizes, números, etc …

  • A API DOM possibilita a comunicação com documentos HTML / XML (por exemplo, document.getElementById('id'); ).

História da nomenclatura JavaScript:

Mocha ► LiveScript ► JavaScript ► (parte do JS resultou em) ECMA-262 ► ECMAScript ► JavaScript (consiste em ECMAScript + API DOM)

O que é ECMAScript, ou seja, ES?

ECMAScript é um padrão para uma linguagem de script, e a linguagem Javascript é baseada no padrão ECMAScript.

O Javascript é exatamente o mesmo que o ECMAScript?

  • Não, o Javascript não é exatamente equivalente ao ECMAScript.
  • Os principais resources do Javascript são baseados no padrão ECMAScript, mas o Javascript também possui outros resources adicionais que não estão nas especificações / padrão do ECMA.

JavaScript = ECMAScript + API do DOM;

API DOM como: document.getElementById('id');

Outras línguas usam o padrão ECMAScript?

  • Sim, existem outros idiomas além do JavaScript que também implementam o ECMAScript Standard como seu núcleo.
  • ActionScript (usado pelo Adobe Flash) e JScript (usado pela Microsoft) são os dois idiomas que implementam o padrão ECMAScript.

Por que é chamado ECMAScript?

  • O Javascript foi originalmente criado no Netscape e eles queriam padronizar o idioma. Por isso, submeteram a linguagem à Associação de Fabricantes de Computadores Eupinosos (ECMA) para padronização.
  • Mas, havia problemas de marca registrada com o nome Javascript, e o padrão se tornou ECMAScript, que é o nome que ele mantém hoje também.
  • Por causa de problemas de marca registrada, a versão da linguagem da Microsoft é chamada de JScript – embora o JScript seja, na essência, o mesmo idioma do Javascript.

< Update: > Para aqueles que se preocupam com a história

  • 1995: Originalmente chamado Mocha e alterado para Livescript
  • 1997: o padrão ECMAScript é estabelecido
  • 1999: ES3 sai e IE5 é toda a raiva
  • 2000–2005: XMLHttpRequest, também conhecido como AJAX, ganha popularidade em aplicativos como o Outlook Web Access (2000) e Oddpost (2002), Gmail (2004) e Google Maps (2005).
  • 2009: o ES5 é lançado (é o que a maioria de nós usa agora) com forEach, Object.keys, Object.create (especialmente para Douglas Crockford) e JSON padrão
  • 2015: ES6 / ECMAScript2015 sai; tem principalmente açúcar sintático, porque as pessoas não foram capazes de concordar com algo mais inovador (ES7?)

Várias versões de JavaScript são implementações do padrão ECMAScript.

Eu sei que este é um post antigo, mas espero que isso ajude alguém.

Nos anos 90 diferentes versões do js começaram a aparecer como o javascript do netscape, script Js da Microsoft. Então o ecmascript foi introduzido como padrão. Mas o ecmascript forma apenas uma parte do javascript que especifica sua syntax central, tipos, objects etc. Provavelmente isso explica as implementações inconsistentes do javascript em diff. navegadores

Referência – Wrox (Javascript profissional para desenvolvedores da Web)

No meu entendimento, o ECMAScript é a “Teoria” ou “Especificação”, e o Javascript é “Prático” ou “Implementação”.

JavaScript é uma linguagem ECMAScript.

O ECMAScript não é necessariamente JavaScript.

As respostas existentes parafraseando o ponto principal muito bem.

O ponto principal é que o ECMAScript é a linguagem abstrata, sem extensões específicas do domínio, é inútil em si. A especificação define apenas a linguagem e os objects principais dela.

Enquanto o JavaScript, o ActionScript e outros dialetos adicionam a biblioteca específica do domínio a ele, você pode usá-lo para algo significativo.

Existem muitos mecanismos ECMAScript , alguns deles são de código aberto, outros são proprietários. Você pode vinculá-los ao seu programa, em seguida, adicionar suas funções nativas ao object global para que seu programa se torne programável. Embora na maioria das vezes eles são usados ​​em navegadores.

Javascript era o nome original, destinado a capitalizar sobre a popularidade do java. O ECMA é o órgão de normas que supervisiona o padrão que acabou sendo posto em prática para que os nomes sejam aproximadamente equivalentes.

Implementações têm outros nomes, como V8 ou Rhino, etc.

Eu duvido que usemos a palavra “ECMAScript” se não for pelo fato de que o nome “JavaScript” é de propriedade da Sun. Para todos os efeitos, a linguagem é JavaScript. Você não vai à livraria procurando livros ECMAScript, não é?

É um pouco simples demais dizer que “JavaScript” é a implementação. JScript é a implementação da Microsoft.

JavaScript é um ramo de línguas formado em torno do padrão ECMAScript. Eu acredito que a ECMA é a Associação Européia de Fabricantes de Computadores, não que isso seja realmente relevante ou algo assim.

Não esqueça que outra linguagem popular formada em torno do padrão ECMA Script é o ActionScript, usado no Adobe Flash / Flex.

ECMAScript é um padrão para JavaScrip t, veja estas declarações do MDN :

insira a descrição da imagem aqui

JavaScript

JavaScript (JS) é uma linguagem de programação leve interpretada ou compilada por JIT com funções de primeira class. Embora seja mais conhecida como linguagem de script para páginas da Web, muitos ambientes que não são de navegador também a utilizam, como node.js, Apache CouchDB e Adobe Acrobat. JavaScript é uma linguagem dinâmica, multi-paradigmática e baseada em protótipos, que suporta estilos orientados a objects, imperativos e declarativos (por exemplo, functional programming). Leia mais sobre JavaScript.


ECMAScript

O padrão para JavaScript é o ECMAScript . A partir de 2012, todos os navegadores modernos suportam totalmente o ECMAScript 5.1. Os navegadores mais antigos suportam pelo menos ECMAScript 3. Em 17 de junho de 2015, a ECMA International publicou a sexta versão principal do ECMAScript, que é oficialmente chamado ECMAScript 2015, e foi inicialmente referido como ECMAScript 6 ou ES6. Desde então, os padrões ECMAScript estão em ciclos anuais de lançamento. Esta documentação refere-se à última versão do rascunho, que atualmente é o ECMAScript 2018.

Para mais informações, visite aqui

ECMAScript não é nada, mas um padrão ou especificação definida para criar linguagens de script diferentes e uma delas é JavaScript. Foi criado com o único propósito de compatibilidade entre navegadores

Um padrão garante que, se alguém escrever um código seguindo as regras do padrão, o código rodará bem em um navegador (no caso de javascript) se o navegador implementar o mesmo padrão.

Por que precisamos de um padrão?

Quando o JavaScript foi criado pela Netscape, houve uma guerra entre todos os fornecedores de navegadores do mercado. A Microsoft implementou sua própria versão do javascript no Internet Explorer. Da mesma forma, outros fornecedores de navegadores implementaram suas próprias versões.

Tudo isso criou um enorme problema para os desenvolvedores. Um código funcionou bem no Netscape, mas foi um desperdício total no Internet Explorer. Para resolver a compatibilidade entre navegadores, o Javascript foi padronizado pela ECMA international; daí o nome ECMAscript.

Todos os produtores concordaram em implementar o ECMAscript (embora demorasse muito tempo).

O resultado é que agora o mesmo código é executado bem em todos os navegadores.

A exceção é DOM (Document object model). O DOM ainda é interpretado de diferentes maneiras em diferentes navegadores. No entanto, há boas notícias. Lentamente todos os navegadores estão aderindo ao mesmo padrão DOM.

Aqui estão minhas descobertas:

JavaScript: The Definitive Guide , escrito por David Flanagan fornece uma explicação muito concisa:

O JavaScript foi criado na Netscape nos primeiros dias da Web e, tecnicamente, “JavaScript” é uma marca comercial licenciada da Sun Microsystems (agora Oracle) usada para descrever a implementação da linguagem da Netscape (agora da Mozilla). A Netscape submeteu a linguagem para padronização ao ECMA e, devido a problemas de marca registrada, a versão padronizada do idioma ficou presa ao nome estranho “ECMAScript”. Pelos mesmos motivos comerciais, a versão da Microsoft da linguagem é formalmente conhecida como “JScript”. Na prática, quase todo mundo chama a linguagem JavaScript.

Um post de blog da Microsoft parece concordar com o que Flanagan explica dizendo:

ECMAScript é o nome oficial da linguagem JavaScript que todos conhecemos e amamos.

.. o que me faz pensar que todas as ocorrências de JavaScript neste post de referência (pela Microsoft novamente) devem ser substituídas pelo ECMASCript . Eles realmente parecem ter cuidado com o uso do ECMAScript somente nesta página de documentação mais recente e mais técnica.

w3schools.com parece concordar com as definições acima:

JavaScript foi inventado por Brendan Eich em 1995, e tornou-se um padrão ECMA em 1997. ECMA-262 é o nome oficial do padrão. ECMAScript é o nome oficial do idioma.

A chave aqui é: o nome oficial da língua .

Se você verificar as páginas da versão JavaScript do Mozilla , você encontrará a seguinte declaração:

Descontinuada. A versão explícita e o opt-in dos resources de linguagem eram específicos do Mozilla e estão em processo de serem removidos. O Firefox 4 foi a última versão que se referiu a uma versão em JavaScript (1.8.5). Com os novos padrões ECMA, os resources de linguagem JavaScript são agora frequentemente mencionados com sua definição inicial nas edições ECMA-262, como o ECMAScript 2015.

e quando você vir as notas de lançamento recentes, sempre verá referências aos padrões ECMAScript, como:

  • A propriedade ES2015 Symbol.toStringTag foi implementada (bug 1114580).

  • Os methods ES2015 TypedArray.prototype.toString () e TypedArray.prototype.toLocaleString () foram implementados (bug 1121938).

O Mozilla Web Docs também possui uma página que explica a diferença entre o ECMAScript e o JavaScript:

No entanto, o termo genérico “JavaScript”, conforme entendido em um contexto de navegador da Web, contém vários elementos muito diferentes. Uma delas é a linguagem principal (ECMAScript), outra é a coleção das APIs da Web, incluindo o DOM (Document Object Model).

Conclusão

No meu entender, as pessoas usam a palavra JavaScript de maneira um tanto liberal para se referir à especificação central do ECMAScript.

Eu diria que todas as implementações modernas de JavaScript (ou JavaScript Engines) são de fato implementações do ECMAScript. Verifique a definição do motor V8 do Google, por exemplo:

O V8 é o mecanismo JavaScript de código aberto de alto desempenho do Google, escrito em C ++ e usado no Google Chrome, no navegador de código aberto do Google e no Node.js, entre outros. Implementa o ECMAScript conforme especificado na ECMA-262.

Eles parecem usar a palavra JavaScript e ECMAScript de forma intercambiável, e eu diria que é realmente um mecanismo ECMAScript?

Portanto, a maioria dos mecanismos JavaScript está realmente implementando o padrão ECMAScript, mas em vez de chamá-los de mecanismos ECMAScript, eles chamam a si mesmos de JavaScript Engines. Esta resposta também suporta a maneira como vejo a situação.

Intereting Posts