ECMAScript 2015: a nova versão do JavaScript

Este artigo não pretende mais do que apenas introduzir e clarificar alguns conceitos. Tecnicamente há muito para falarmos e, quem sabe, não estará na hora de programarmos juntos (em futuras edições da “nossa” revista)… Entretanto, se o leitor é programador de JavaScript, chegou a altura de dedicar algum do seu tempo à nova versão do ECMAScript, caso ainda não o tenha feito.

Afinal o que é o ECMAScript 2015?

A linguagem de programação JavaScript segue um padrão definido pela ECMA sob o nome de ECMAScript. Por outra perspetiva, podemos afirmar que o ECMAScript é o nome “apropriado”, ou formal, para a linguagem usualmente referida como JavaScript. Objetivamente, sem grandes contextualizações históricas, o ECMAScript 2015 é a nova versão da especificação da linguagem JavaScript. É, muitas das vezes, também referido como ECMAScript 6, abreviadamente ES6, ou “Harmony”.

As principais características da linguagem JavaScript são definidos pela norma ECMA-262 que está na 6ª versão e data, em versão final, do mês de junho. Esta última versão representa a maior mudança para o JavaScript, observada desde a criação do mesmo. Neste contexto, confesso-vos que alterei este artigo porque, quando iniciei a redação do mesmo (15 de junho), a referida norma, na sua 6ª versão, existia apenas em versão draft, com a data de 13 de abril último, sendo que no dia 17 de junho sou agradavelmente surpreendido com o lançamento da versão final do ECMAScript 2015 (nome dado à norma ECMA-262 na sua 6ª Edição).

As versões anteriores do ECMAScript são as 1,2,3 e 5. A omissão do 4 é factual e não um erro. O ES5 teve o seu lançamento em 2009, sendo que o ES6 (ou ES2015) é trabalhado desde então.

Consultar versões draft do ECMAScript:
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

Versão final do ECMAScript 2015:
http://www.ecma-international.org/ecma-262/6.0/index.html

Com tantas designações para, aparentemente, a mesma coisa, deixo abaixo uma tabela com o intuito de dissipar qualquer dúvida que ainda permaneça no leitor, focando-me no essencial.

ECMAScript 2015 Especificação em que o JavaScript se baseia
JavaScript Implementação da especificação ECMAScript
ES6 Versão do ECMAScript (old style)
ES2015 Versão do ECMAScript (new style)

O JavaScript

Já com 20 anos de existência, quantos de nós já utilizaram o JavaScript para a definição de algumas variáveis, para cálculos simples, para controlo do UI (User Interface) ou para a validação de formulários? Muitos, senão todos… Mas este tipo de utilização da linguagem era típica dos seus inícios e efetivamente restringia-se a isso e pouco mais. A evolução, até aos dias de hoje foi tremenda e, atualmente, o JavaScript passou o seu foco para a construção de aplicações robustas, quer do lado do cliente, quer do lado do servidor. Por via do dinamismo de uma comunidade de verdadeiros devotos à linguagem e devido à capacidade de ser executado em plataformas distintas, o seu crescimento e consequente notoriedade são evidentes. Há, ainda, quem considere que o JavaScript não dispõem das caraterísticas mais adequadas à boa produtividade de um programador e não facilita a produção de código de fácil manutenção. O surgimento do ES2015 também tem o intuito de colmatar algumas dessas falhas, colocando a linguagem a um outro nível.

Há duas vantagens factuais na utilização do JavaScript:

Ubiquidade:
Podemos encontrá-lo em qualquer dispositivo, desde os smartphones até qualquer computador atual. Qualquer programador que já tenha desenvolvido para a web, se não o utilizou, pelo menos pensou na sua utilização. Embora, neste particular, nem consiga sequer conceber o desenvolvimento para a web sem o recurso ao JavaScript.

Poder:
A linguagem revela-se extremamente capaz especialmente em dar resposta à, de cada vez maior, necessidade aplicacional de comunicações assíncronas (caso estas sejam necessárias).

Nós, programadores, já percebemos que o browser é a forma que temos disponível para, de forma eficaz, criar interfaces de utilizador para a partilha de dados e que de cada vez mais a nossa atividade tende a ser para a construção de aplicações web, em detrimento das GUI clássicas. O JavaScript é peça chave desta mudança de paradigma. Em reforço disto, um browser – e, portanto, o JavaScript – pode ser executado numa vastíssima gama de dispositivos, desde telemóveis com CPUs eventualmente com pouca capacidade de processamento, até computadores poderosos com enorme capacidade de processamento.

Curiosamente, no mesmo mês do lançamento do ES2015, a palavra JavaScript passou a fazer parte do dicionário. Por agora ainda não faz parte do português, foi um dicionário de língua inglesa de referência, o Oxford English Dictionary, que o incluiu na listagem das novas palavras.

Atualizações ao referido dicionário:
http://public.oed.com/the-oed-today/recent-updates-to-the-oed/june-2015-update/new-words-list-june-2015/

Podemos utilizar o ES2015 desde já?

Com entusiasmo diria, no imediato: “claro que sim”.

Muitas das especificidades do ES2015 já são disponibilizadas pelos browsers Firefox e Chrome (consultar https://kangax.github.io/compat-table/es6/). No caso deste último poderá ser necessária a ativação da opção Ativar JavaScript Experimental (Enable Experimental JavaScript) acessível nas configurações através do acesso a chrome://flags (na barra de endereço do browser).

Numa abordagem muito pouco técnica, mas elucidativa, o ES2015 atualiza o JavaScript. Neste contexto, imagine-se o cenário em que temos uma aplicação estável com funcionalidades suportadas pelo JavaScript (exclusivamente ES5, no caso). Na realidade temos disponível, para programar sobre um browser atual e atualizado, tudo o que sabemos da especificação da linguagem definida pelo ES5, somada a melhorias desta última, mais as novidades trazidas pelo ES6. Então como proceder? Recomendaria a programação em ES2015 testando, sempre, o código em diferentes browsers, de resto como é prática comum nos programadores de aplicações web.

Em suma, o desafio traduz-se em utilizar o ES2015 gradualmente nos nossos projetos, aproveitando as melhorias/atualizações do que já existia no ES5 e tirando partido das novidades trazidas pela nova versão. E não esqueçam que, hoje, as nossas aplicações em JavaScript são executadas em browsers que já suportam o ES2015.

Indo um pouco mais longe, existem transpilers (source-to-source compilers) que traduzem o código integralmente escrito em ES2015 para a versão anterior, a ES5, integralmente suportada pelos browsers atuais. Neste contexto refiro o Babel (disponível em https://babeljs.io/) que, à data, é considerado o melhor transpiler de JS pela comunidade. Em suma, com o Babel corretamente instalado, podemos produzir aplicações integralmente escritas em ES2015 sem ter qualquer preocupação de compatibilidade com os browsers.

Como diz o slogan utilizado no site do Babel: Use next generation JavaScript, today. Subscrevo.

Conclusão

O ECMAScript2015 mudará (já muda) a forma como se programa em JavaScript.

Em contexto de produção, neste momento, deparamo-nos com um problema que devemos ter em consideração: o suporte nas várias plataformas disponíveis. Com efeito, o ES2015 ainda não é integralmente suportado pelos browsers, embora se assista a constantes e rápidas evoluções nesse sentido.

Na minha opinião, não faz grande sentido intervir numa aplicação terminada e já em produção e migrá-la para a nova versão do JavaScript. O mesmo se aplica a uma aplicação num estágio de desenvolvimento já avançado. No entanto, já faz todo o sentido a utilização do ES2015, no momento em que é iniciado um novo desenvolvimento aplicacional. Sempre de considerar é o suporte (ou a falta dele) por parte dos browsers.  

Concluindo e clarificando, enquanto programadores de JavaScript, não temos a necessidade de aprender um JavaScript “novo”. Podemos continuar a programar utilizando todo o nosso conhecimento e sintaxe aprendida até então, tirando partido das melhorias, do que já existia, agora introduzidas pelo ECMAScript 2015 e, sempre que necessário, tirar partido do que o referido standard nos traz de novo.

Como referido na introdução gostaria de voltar com, pelo menos, a apresentação do que, na prática, o ES2015 nos proporciona. A ver vamos… Se for caso disso um “até já” e foi um prazer escrever para vocês.

Publicado na edição 51 (PDF) da Revista PROGRAMAR.