Um olhar sobre o futuro do JavaScript
Publicados: 2022-03-11Todo mercado é regido por certos conceitos comuns, e o desenvolvimento de JavaScript não é exceção.
O ciclo de vida do produto é um conceito que você pode aplicar a vários ambientes diferentes para entender e prever seu comportamento. É um conceito de negócios que nos ajuda a entender os estágios pelos quais um produto passa durante sua vida, explicando o impacto desses estágios em sua medida de popularidade – na maioria dos casos, vendas. Se observarmos os padrões de comportamento do mercado, podemos estimar o estágio atual de um produto e, portanto, fazer algumas previsões sobre sua popularidade.
Existem quatro estágios: introdução, crescimento, maturidade e declínio e, no gráfico acima, você pode ver o impacto nas vendas de produtos esperadas para cada estágio. Por exemplo, as vendas de smartphones não estão crescendo como há cinco anos – na verdade, o oposto é verdadeiro – então podemos dizer com justiça que os smartphones estão entrando em seu estágio de maturidade.
Nos últimos anos, vimos a introdução de muitas novas tecnologias em JavaScript, mas precisávamos de tempo para ver como o mercado iria adotá-las. Ninguém quer ser o especialista em outra tecnologia promissora que termina com adoção zero. Agora, no entanto, é a hora de dar uma outra olhada. Neste artigo, darei uma olhada em como o JavaScript está se tornando popular e os fatores que podem ter afetado essa popularidade, e tentarei prever como será o futuro do JavaScript.
O futuro dos recursos da linguagem JavaScript
Desde que a European Computer Manufacturers Association (ECMA) estabeleceu o ciclo de lançamento anual para ECMAScript, uma especificação JavaScript padronizada, não vimos muitos recursos novos chegando à linguagem - apenas alguns a cada ano. Esse pode ser um dos motivos pelo qual vimos um aumento na adoção de linguagens que compilam para ES5 como TypeScript ou ReasonML, ambos trazendo recursos para a linguagem que são altamente solicitados pela comunidade. Isso não é novidade—JavaScript passou por esse processo antes (CoffeeScript) e, no final, esses recursos acabaram sendo mesclados no próprio padrão da linguagem, e esse é provavelmente o futuro que podemos esperar para esses novos recursos tipados também.
Mas agora estamos começando a ver uma mudança de jogo no mercado de compilação para js com a crescente disponibilidade do WebAssembly nos navegadores. Agora, podemos usar quase qualquer idioma e compilá-lo para rodar quase na velocidade nativa em um navegador e, mais importante, estamos começando a ver suporte para recursos à prova de futuro, como suporte a threads, que nos permitirão aproveitar o multi -arquitetura de processador que representa o futuro inevitável de todos os dispositivos.
A cadeia de ferramentas oficial do WebAssembly o ajudará a compilar C/C++, mas há muitos compiladores fornecidos pela comunidade para diferentes linguagens, como Rust, Python, Java e Blazor (C#).
Particularmente, a comunidade Rust é bastante ativa e começamos a ver frameworks front-end completos como Yew e Dodrio.
Isso traz muitas novas possibilidades para aplicativos baseados em navegador, e você só precisa testar alguns dos ótimos aplicativos criados com WebAssembly para ver que aplicativos baseados em navegador quase nativos são uma realidade agora, por exemplo, Sketchup ou Magnum.
A adoção de linguagens tipadas que compilam para ES5 é madura o suficiente, os players estão bem estabelecidos e não desaparecerão (ou serão fundidos com ES) em um futuro próximo, mas veremos uma mudança lenta em favor de linguagens tipadas com WebAssemb.
Rede
Estruturas front-end
Todos os anos, vemos uma grande luta no mercado de frameworks front-end para a web, e o React tem sido o vencedor indiscutível nos últimos anos - desde a introdução de sua tecnologia revolucionária, o Virtual DOM, vimos quase adoção obrigatória de seus homólogos, a fim de permanecer relevante na batalha.
Alguns anos atrás, vimos a introdução de uma nova abordagem radical para o desenvolvimento de aplicativos da Web com o Svelte, o “framework do compilador” que desaparece em tempo de compilação deixando um código JavaScript pequeno e altamente eficiente. No entanto, esse recurso não foi suficiente para convencer a comunidade a migrar para o Svelte, mas com o recente lançamento do Svelte 3.0, eles introduziram programação reativa real no framework e a comunidade está empolgada, então talvez estejamos testemunhando a próxima grande coisa pela frente -end estruturas.
Inspirado no operador destino:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
O Svelte traz reatividade ao JavaScript sobrecarregando o uso de declarações de rótulo com reatividade em tempo de compilação, instruindo o código a ser executado em ordem topológica:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
Esta é uma nova ideia radical que pode ajudar em diferentes contextos, então o criador do Svelte também está trabalhando no svelte-gl, um framework compilador que irá gerar instruções WebGL de baixo nível diretamente de um grafo de cena 3D declarado em HTMLx.
Desnecessário dizer que React, Angular e Vue.js não desaparecerão da noite para o dia, suas comunidades são enormes e permanecerão relevantes por vários anos - nem temos certeza se o Svelte será o sucessor real, mas nós pode ter certeza de algo: Usaremos algo diferente mais cedo ou mais tarde.
WebXR e o futuro da Web imersiva
A realidade virtual tem lutado nos últimos 60 anos para encontrar um lugar no mainstream, mas a tecnologia ainda não estava pronta. Menos de dez anos atrás, quando Jon Carmack ingressou na Oculus VR (agora parte da Facebook Technologies, LLC), uma nova onda de VR começou a surgir e, desde então, vimos muitos novos dispositivos que suportam diferentes tipos de VR e é claro, a proliferação de aplicativos compatíveis com VR.
Os fornecedores de navegadores não queriam perder essa oportunidade, então aderiram à especificação WebVR permitindo a criação de mundos virtuais em JavaScript com WebGL e bibliotecas bem estabelecidas como three.js. No entanto, a participação de mercado de usuários com dispositivos 6dof ainda era insignificante para implantações massivas da web, mas a web móvel ainda era capaz de fornecer uma experiência 3D com a API de orientação do dispositivo, então vimos vários experimentos e muitos vídeos 360 para Um tempo.
Em 2017, com a introdução do ARKit e ARCore, novos recursos foram trazidos para dispositivos móveis e todos os tipos de aplicativos com experiências de AR e MR.
No entanto, ainda parece um pouco antinatural baixar um aplicativo específico para uma experiência de AR específica quando você está explorando o mundo ao seu redor. Se pudéssemos ter apenas um aplicativo para explorar diferentes experiências... Isso soa familiar. Resolvemos esse problema no passado com o navegador, então por que não tentar outra vez?

No ano passado, a Mozilla introduziu o WebXR Device API Spec (cujo último rascunho de trabalho, no momento da redação deste artigo, é de duas semanas atrás) para trazer recursos de AR, VR e MR (ergo XR) para o navegador.
Alguns dos fornecedores de navegadores mais importantes seguiram com sua implementação, com uma exceção importante: Safari mobile, então para provar seu ponto, a Mozilla lançou um navegador compatível com WebXR sob a plataforma iOS WebXR Viewer.
Agora, este é um passo importante porque a combinação de AR e VR traz 6dof para dispositivos móveis e fones de ouvido baseados em dispositivos móveis como o Google Cardboard ou o Samsung Gear VR, como você pode ver neste exemplo, aumentando a participação de mercado de dispositivos de 6dof em uma grande margem e permitindo a possibilidade de uma implantação web em larga escala.
Ao mesmo tempo, o pessoal da Mozilla vem trabalhando em um novo framework web para facilitar a criação de mundos e aplicações 3D chamado A-Frame, um framework declarativo baseado em componentes com sintaxe HTML baseada em three.js e WebGL, tendo acabado de uma coisa em mente - trazer de volta a diversão e a facilidade de uso para a programação web.
Isso faz parte de sua cruzada pela web imersiva, um novo conjunto de ideias sobre como a web deve ser no futuro. Felizmente para nós, eles não estão sozinhos, e começaremos a ver cada vez mais experiências imersivas na web.
Se você quiser experimentá-lo, faça o download do WebXR Viewer e visite este site para ver as possibilidades da web imersiva.
Mais uma vez, os aplicativos padrão baseados em navegador não desaparecerão em um ano ou dois - provavelmente sempre os teremos. Mas os aplicativos 3D e as experiências XR estão crescendo e o mercado está pronto e ansioso para tê-los.
Suporte nativo para ES6
Quase todas as tecnologias inventadas em JavaScript na última década foram criadas para resolver problemas gerados pela implementação subjacente dos navegadores, mas a própria plataforma amadureceu muito nos últimos anos, e a maioria desses problemas desapareceu, como podemos ver com Lodash, que uma vez reinou os benchmarks de desempenho.
O mesmo está acontecendo com o DOM, cujos problemas já foram a verdadeira inspiração para a criação de frameworks de aplicações web. Agora, é uma API madura que você pode usar sem estruturas para criar aplicativos - na verdade, é isso que são componentes da web. Eles são a “estrutura” da plataforma para criar aplicativos baseados em componentes.
Outra parte interessante da evolução da plataforma é a própria linguagem. Temos usado Babel.js nos últimos anos para poder usar os recursos mais recentes do ECMAScript, mas como o próprio padrão começou a estagnar um pouco nos últimos anos, foi tempo suficiente para permitir que os fornecedores de navegadores para implementar a maioria de seus recursos, incluindo suporte nativo da instrução de importação estática. Então, agora, podemos começar a considerar a criação de aplicativos sem Babel.js ou outros compiladores, já que temos (novamente) o suporte dos recursos da linguagem na própria plataforma e como o Node.js usa a mesma VM V8 do Google Chrome , começamos a ver um suporte mais forte ao ES6 no Node.js, mesmo com a instrução de importação estática no sinalizador experimental-modules.
Isso não significa que deixaremos de ver aplicativos sendo compilados em nível profissional, mas significa que começar com um aplicativo baseado em navegador será fácil e divertido como antes.
JavaScript do lado do servidor
Embora o JavaScript tenha começado com o lado do servidor em 1995 com o Netscape Enterprise Server, não foi até a apresentação de Ryan Dahl em 2009 que o JavaScript começou a ser seriamente considerado para aplicativos do lado do servidor. Muitas coisas aconteceram na última década com o Node.js. Evoluiu e amadureceu muito, criando mais uma vez a oportunidade de disrupção e novas tecnologias.
Neste caso, vem da mão de seu próprio criador, Ryan Dahl, que vem trabalhando em uma nova perspectiva de aplicativos seguros do lado do servidor com Deno, uma plataforma que suporta nativamente os recursos de linguagem mais recentes como async/await, e também a linguagem de compilação para js mais popular TypeScript, visando o melhor desempenho graças à sua implementação em Rust e ao uso de Tokio, mas mais importante com uma nova filosofia de segurança que a diferencia da maioria das plataformas do lado do servidor como Python, Ruby ou Java). Inspirado no modelo de segurança do navegador, o Deno permitirá que você use os recursos do host somente após o usuário conceder explicitamente as permissões ao processo, o que pode parecer um pouco tedioso no início, mas pode resultar em muitas implicações ao permitir para executar código não seguro em um ambiente seguro apenas confiando na plataforma.
Node.js ainda estará lá no futuro, mas pode ser que comecemos a ver serviços sem servidor como AWS Lambda e Azure Functions para fornecer a funcionalidade Deno como uma alternativa para fornecer execução de código do lado do servidor não segura em seus sistemas.
Conclusão
Estes são tempos emocionantes no mundo JavaScript - muitas tecnologias amadureceram o suficiente para deixar espaço para inovação, a comunidade ativa nunca parou para nos surpreender com suas ideias brilhantes e incríveis, e esperamos muitas novas alternativas para ferramentas bem estabelecidas já que seus estágios maduros estão chegando rapidamente; não vamos parar de usá-los, pois muitos deles são realmente bons e há muitas provas no campo de batalha, mas novos e empolgantes mercados começarão a surgir, e é melhor você estar preparado.
Manter-se atualizado com o que há de mais recente no mundo JavaScript não é fácil, devido ao ritmo de desenvolvimento, mas existem algumas fontes que podem realmente ajudar. Primeiro, a fonte de notícias mais importante, na minha opinião, é o Echo JS, onde você pode obter uma quantidade incrível de novos conteúdos a cada hora. No entanto, se você não tiver tempo, o boletim JavaScript Weekly é um excelente resumo da semana em JS. Além disso, também é importante ficar de olho nas conferências ao redor do mundo, e canais do YouTube como JSConf, React Conf e Google Chrome Developers são muito úteis.
Por outro lado, se você estiver interessado em ver algumas críticas construtivas sobre o rumo do JavaScript, recomendo a leitura Como um desenvolvedor JS, é isso que me mantém acordado à noite , do colega desenvolvedor JavaScript Justen Robertson.
Leitura adicional no Blog da Toptal Engineering:
- TypeScript vs. JavaScript: seu guia básico