Uno sguardo al futuro di JavaScript
Pubblicato: 2022-03-11Ogni mercato è governato da determinati concetti comuni e lo sviluppo di JavaScript non fa eccezione.
Il ciclo di vita del prodotto è un concetto che puoi applicare a diversi ambienti per comprenderne e prevederne il comportamento. È un concetto di business che ci aiuta a comprendere le fasi che un prodotto attraversa durante la sua vita, spiegando l'impatto di queste fasi sulla sua misura di popolarità, nella maggior parte dei casi, le vendite. Se osserviamo i modelli di comportamento del mercato, possiamo stimare lo stadio attuale di un prodotto e quindi fare alcune previsioni sulla sua popolarità.
Ci sono quattro fasi: introduzione, crescita, maturità e declino e nel grafico sopra puoi vedere l'impatto sulle vendite di prodotti previste per ciascuna fase. Ad esempio, le vendite di smartphone non stanno crescendo come cinque anni fa, in realtà è vero il contrario, quindi possiamo affermare che gli smartphone stanno entrando nella loro fase di maturità.
Negli ultimi anni abbiamo visto l'introduzione di molte nuove tecnologie in JavaScript, ma avevamo bisogno di tempo per vedere come il mercato le avrebbe adottate. Nessuno vuole essere lo specialista di un'altra tecnologia promettente che finisce con l'adozione zero. Ora, tuttavia, è il momento di dare un'altra occhiata. In questo articolo, darò un'occhiata a quanto sta diventando popolare JavaScript e ai fattori che potrebbero aver influenzato questa popolarità, e cercherò di prevedere come sarà il futuro di JavaScript.
Il futuro delle funzionalità del linguaggio JavaScript
Da quando la European Computer Manufacturers Association (ECMA) ha stabilito il ciclo di rilascio annuale per ECMAScript, una specifica JavaScript standardizzata, non abbiamo visto molte nuove funzionalità in arrivo nel linguaggio, solo alcune ogni anno. Questo potrebbe essere uno dei motivi per cui abbiamo visto un aumento dell'adozione di linguaggi che compilano in ES5 come TypeScript o ReasonML, entrambi apportando funzionalità al linguaggio molto richieste dalla comunità. Questa non è una novità: JavaScript ha già eseguito questo processo (CoffeeScript) e, alla fine, quelle funzionalità sono state fuse nello standard del linguaggio stesso, e questo è probabilmente il futuro che possiamo aspettarci anche per queste nuove funzionalità digitate.
Ma ora stiamo iniziando a vedere una svolta nel mercato del compile-to-js con la crescente disponibilità di WebAssembly nei browser. Ora possiamo usare quasi tutti i linguaggi e compilarli per funzionare a velocità quasi nativa in un browser e, cosa più importante, stiamo iniziando a vedere il supporto per funzionalità a prova di futuro come il supporto per i thread che ci consentiranno di sfruttare il multi -architettura del processore che rappresenta l'inevitabile futuro di tutti i dispositivi.
La toolchain ufficiale per WebAssembly ti aiuterà a compilare C/C++, ma ci sono molti compilatori forniti dalla community per linguaggi diversi, come Rust, Python, Java e Blazor (C#).
In particolare, la community di Rust è piuttosto attiva e abbiamo iniziato a vedere framework front-end completi come Yew e Dodrio.
Ciò offre molte nuove possibilità alle app basate su browser e devi solo testare alcune delle fantastiche app create con WebAssembly per vedere che le app quasi native basate su browser sono una realtà ora, ad esempio Sketchup o Magnum.
L'adozione di linguaggi tipizzati che vengono compilati in ES5 è abbastanza matura, i giocatori sono ben consolidati e non scompariranno (o verranno fusi con ES) nel prossimo futuro, ma vedremo un lento spostamento a favore dei linguaggi tipizzati con WebAssembly.
ragnatela
Framework di front-end
Ogni anno assistiamo a una grande battaglia nel mercato dei framework front-end per il Web e React è stato il vincitore indiscusso negli ultimi anni: dall'introduzione della loro tecnologia rivoluzionaria, il Virtual DOM, abbiamo assistito a un quasi adozione obbligata dalle loro controparti per rimanere rilevanti nella battaglia.
Alcuni anni fa, abbiamo visto l'introduzione di un approccio radicalmente nuovo allo sviluppo di applicazioni web con Svelte, il “compiler framework” che scompare in fase di compilazione lasciando codice JavaScript piccolo e altamente efficiente. Tuttavia, quella caratteristica non è stata sufficiente per convincere la community a passare a Svelte, ma con il recente lancio di Svelte 3.0, hanno introdotto una vera programmazione reattiva nel framework e la community è entusiasta, quindi forse stiamo assistendo alla prossima grande cosa davanti a noi -quadri finali.
Ispirato dall'operatore del destino:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
Svelte porta la reattività a JavaScript sovraccaricando l'uso delle istruzioni label con la reattività in fase di compilazione indicando che il codice deve essere eseguito in ordine topologico:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
Questa è un'idea radicalmente nuova che potrebbe aiutare in diversi contesti, quindi il creatore di Svelte sta lavorando anche su svelte-gl, un framework di compilazione che genererà istruzioni WebGL di basso livello direttamente da un grafico di scena 3D dichiarato in HTMLx.
Inutile dire che React, Angular e Vue.js non scompariranno dall'oggi al domani, le loro community sono enormi e rimarranno rilevanti per diversi anni a venire: non siamo nemmeno sicuri se Svelte sarà il vero successore, ma noi può essere sicuro di qualcosa: prima o poi useremo qualcosa di diverso.
WebXR e il futuro del Web immersivo
La realtà virtuale ha lottato negli ultimi 60 anni per trovare un posto nel mainstream, ma la tecnologia non era ancora pronta. Meno di dieci anni fa, quando Jon Carmack è entrato a far parte di Oculus VR (ora parte di Facebook Technologies, LLC), una nuova ondata di VR ha iniziato a crescere e da allora abbiamo visto molti nuovi dispositivi che supportano diversi tipi di VR e ovviamente la proliferazione di applicazioni compatibili con la realtà virtuale.
I fornitori di browser non volevano perdere questa opportunità, quindi si sono uniti alla specifica WebVR consentendo la creazione di mondi virtuali in JavaScript con WebGL e librerie consolidate come three.js. Tuttavia, la quota di mercato degli utenti con dispositivi 6dof era ancora insignificante per le distribuzioni Web di massa, ma il Web mobile era ancora in grado di fornire un'esperienza 3D con l'API di orientamento del dispositivo, quindi abbiamo visto una serie di esperimenti e molti video 360 per un po.
Nel 2017, con l'introduzione di ARKit e ARCore, sono state introdotte nuove funzionalità sui dispositivi mobili e su tutti i tipi di applicazioni con esperienze AR e MR.
Tuttavia, sembra ancora un po' innaturale scaricare un'app specifica per una specifica esperienza AR quando esplori il mondo che ti circonda. Se potessimo avere solo un'app per esplorare diverse esperienze... Questo suona familiare. Abbiamo risolto questo problema in passato con il browser, quindi perché non dargli un'altra possibilità?

L'anno scorso, Mozilla ha introdotto la WebXR Device API Spec (la cui ultima bozza funzionante, al momento della stesura di questo articolo, risale a due settimane fa) per portare le funzionalità AR, VR e MR (ergo XR) nel browser.
Alcuni dei più importanti fornitori di browser hanno seguito la loro implementazione, con un'importante eccezione: Safari mobile, quindi per dimostrare il loro punto, Mozilla ha rilasciato un browser compatibile con WebXR sotto la piattaforma iOS WebXR Viewer.
Ora, questo è un passo importante perché la combinazione di AR e VR porta 6dof su dispositivi mobili e visori basati su dispositivi mobili come Google Cardboard o Samsung Gear VR, come puoi vedere in questo esempio, aumentando la quota di mercato dei dispositivi 6dof di un ampio margine e consentendo la possibilità di una distribuzione web su larga scala.
Allo stesso tempo, i ragazzi di Mozilla hanno lavorato su un nuovo framework web per facilitare la creazione di mondi e applicazioni 3D chiamato A-Frame, un framework dichiarativo basato su componenti con sintassi HTML basata su three.js e WebGL, avendo appena una cosa in mente: riportare il divertimento e la facilità d'uso alla programmazione web.
Questo fa parte della loro crociata verso il web immersivo, una nuova serie di idee su come dovrebbe essere il web in futuro. Fortunatamente per noi, non sono soli e inizieremo a vedere esperienze sempre più immersive sul web.
Se vuoi fare un tentativo, scarica il WebXR Viewer e visita questo sito per vedere le possibilità del web immersivo.
Ancora una volta, le app standard basate su browser non svaniranno in un anno o due: probabilmente le avremo sempre. Ma le app 3D e le esperienze XR sono in crescita e il mercato è pronto e desideroso di averle.
Supporto nativo per ES6
Quasi tutte le tecnologie inventate in JavaScript negli ultimi dieci anni sono state create per risolvere i problemi generati dall'implementazione sottostante dei browser, ma la piattaforma stessa è maturata molto in questi ultimi anni e la maggior parte di questi problemi è scomparsa, come possiamo vedere con Lodash, che un tempo regnava nei benchmark delle prestazioni.
Lo stesso sta accadendo con il DOM, i cui problemi un tempo erano la vera ispirazione per la creazione di framework di applicazioni web. Ora, è un'API matura che puoi utilizzare senza framework per creare app, in realtà, ecco cosa sono i componenti Web. Sono il "framework" della piattaforma per creare app basate su componenti.
Un'altra parte interessante dell'evoluzione della piattaforma è il linguaggio stesso. Abbiamo utilizzato Babel.js negli ultimi anni per essere in grado di utilizzare le ultime funzionalità di ECMAScript, ma poiché lo standard stesso ha iniziato a ristagnare un po' negli ultimi anni, è stato abbastanza tempo per consentire ai fornitori di browser per implementare la maggior parte delle loro funzionalità, incluso il supporto nativo dell'istruzione di importazione statica. Quindi ora possiamo iniziare a considerare la creazione di applicazioni senza Babel.js o altri compilatori poiché abbiamo (di nuovo) il supporto delle funzionalità del linguaggio nella piattaforma stessa e poiché Node.js utilizza la stessa VM V8 di Google Chrome , abbiamo iniziato a vedere un supporto più forte di ES6 in Node.js, anche con l'istruzione di importazione statica sotto il flag Experimental-modules.
Questo non significa che smetteremo di vedere le app compilate a livello professionale, ma significa che iniziare con un'applicazione basata su browser sarà facile e divertente come una volta.
JavaScript lato server
Anche se JavaScript è iniziato con il lato server nel 1995 con Netscape Enterprise Server, è stato solo con la presentazione di Ryan Dahl nel 2009 che JavaScript ha iniziato a essere preso seriamente in considerazione per le app lato server. Molte cose sono successe negli ultimi dieci anni a Node.js. Si è evoluto e maturato molto, creando ancora una volta l'opportunità di interruzioni e nuove tecnologie.
In questo caso, viene dalla mano del suo stesso creatore, Ryan Dahl, che ha lavorato su una nuova prospettiva di app protette lato server con Deno, una piattaforma che supporta nativamente le ultime funzionalità linguistiche come async/await e anche il più popolare linguaggio compile-to-js TypeScript, mirato alle migliori prestazioni grazie alla loro implementazione in Rust e all'utilizzo di Tokio, ma soprattutto con una nuova filosofia di sicurezza che lo differenzia dalla maggior parte delle piattaforme lato server come Python, Ruby o Java). Ispirato al modello di sicurezza del browser, Deno ti consentirà di utilizzare le risorse dell'host solo dopo che l'utente ha esplicitamente concesso le autorizzazioni al processo, il che potrebbe sembrare un po' noioso all'inizio, ma potrebbe comportare molte implicazioni consentendo noi per eseguire codice non protetto in un ambiente protetto semplicemente fidandoci della piattaforma.
Node.js sarà ancora presente in futuro, ma potrebbe essere che inizieremo a vedere servizi serverless come AWS Lambda e Funzioni di Azure per fornire la funzionalità Deno come alternativa per fornire l'esecuzione di codice lato server non protetta sui loro sistemi.
Conclusione
Questi sono tempi entusiasmanti nel mondo JavaScript: molte tecnologie sono maturate abbastanza da lasciare spazio all'innovazione, la comunità attiva non ha mai smesso di stupirci con le sue idee brillanti e incredibili e ci aspettiamo molte nuove alternative a strumenti consolidati poiché i loro stadi maturi stanno arrivando rapidamente; non smetteremo di usarli poiché molti di loro sono davvero buoni e ci sono molte prove sul campo di battaglia, ma inizieranno ad emergere nuovi ed eccitanti mercati e faresti meglio a prepararti.
Rimanere aggiornati con le ultime novità nel mondo JavaScript non è facile, a causa del ritmo di sviluppo, ma ci sono alcune fonti che possono davvero aiutare. Innanzitutto, la fonte di notizie più importante, secondo me, è Echo JS, dove puoi trovare un'incredibile quantità di nuovi contenuti ogni ora. Tuttavia, se non hai tempo, la newsletter JavaScript Weekly è un eccellente riassunto della settimana in JS. Oltre a questo, è anche importante tenere d'occhio le conferenze in tutto il mondo e i canali YouTube come JSConf, React Conf e Google Chrome Developers sono straordinariamente utili.
Al contrario, se sei interessato a vedere alcune critiche costruttive su dove sta andando JavaScript, ti consiglio di leggere Come sviluppatore JS, questo è ciò che mi tiene sveglio la notte del collega sviluppatore JavaScript Justen Robertson.
Ulteriori letture sul blog di Toptal Engineering:
- TypeScript e JavaScript: la tua guida di riferimento