Ein Blick in die Zukunft von JavaScript
Veröffentlicht: 2022-03-11Jeder Markt wird von bestimmten gemeinsamen Konzepten beherrscht, und die JavaScript-Entwicklung ist da keine Ausnahme.
Der Produktlebenszyklus ist ein Konzept, das Sie auf verschiedene Umgebungen anwenden können, um deren Verhalten zu verstehen und vorherzusagen. Es ist ein Geschäftskonzept, das uns hilft, die Phasen zu verstehen, die ein Produkt während seiner Lebensdauer durchläuft, und die Auswirkungen dieser Phasen auf seine Beliebtheitsmessung – in den meisten Fällen den Umsatz – erklärt. Wenn wir Marktverhaltensmuster beobachten, können wir den aktuellen Stand eines Produkts abschätzen und daher einige Vorhersagen über seine Beliebtheit treffen.
Es gibt vier Phasen: Einführung, Wachstum, Reife und Niedergang, und in der obigen Grafik können Sie die Auswirkungen auf die erwarteten Produktverkäufe für jede Phase sehen. Zum Beispiel wächst der Verkauf von Smartphones nicht mehr so wie vor fünf Jahren – eigentlich ist das Gegenteil der Fall – also können wir mit Fug und Recht sagen, dass Smartphones in ihre Reifephase kommen.
In den letzten Jahren haben wir die Einführung vieler neuer Technologien in JavaScript erlebt, aber wir brauchten Zeit, um zu sehen, wie der Markt sie annehmen würde. Niemand möchte der Spezialist für eine andere vielversprechende Technologie sein, die ohne Akzeptanz endet. Jetzt ist es jedoch an der Zeit, einen weiteren Blick darauf zu werfen. In diesem Artikel werde ich einen Blick darauf werfen, wie beliebt JavaScript wird und welche Faktoren diese Popularität beeinflusst haben, und ich werde versuchen, vorherzusagen, wie die Zukunft von JavaScript aussehen wird.
Die Zukunft der JavaScript-Sprachfunktionen
Seit die European Computer Manufacturers Association (ECMA) den jährlichen Veröffentlichungszyklus für ECMAScript, eine standardisierte JavaScript-Spezifikation, eingeführt hat, haben wir nicht viele neue Funktionen in der Sprache gesehen – nur ein paar pro Jahr. Dies könnte einer der Gründe dafür sein, dass wir eine zunehmende Akzeptanz von Sprachen beobachten, die für ES5 kompiliert werden, wie TypeScript oder ReasonML, die beide Funktionen in die Sprache einbringen, die von der Community stark nachgefragt werden. Das ist nicht neu – JavaScript hat diesen Prozess schon einmal durchlaufen (CoffeeScript) und am Ende wurden diese Funktionen in den Sprachstandard selbst integriert, und das ist wahrscheinlich die Zukunft, die wir auch für diese neuen typisierten Funktionen erwarten können.
Aber jetzt sehen wir mit der zunehmenden Verfügbarkeit von WebAssembly in den Browsern einen Wendepunkt auf dem Compile-to-js-Markt. Jetzt können wir fast jede Sprache verwenden und sie so kompilieren, dass sie in einem Browser mit nahezu nativer Geschwindigkeit ausgeführt wird, und, was noch wichtiger ist, wir beginnen, Unterstützung für zukunftssichere Funktionen wie die Unterstützung von Threads zu sehen, die es uns ermöglichen, die Vorteile von Multi zu nutzen -Prozessorarchitektur, die die unvermeidliche Zukunft aller Geräte darstellt.
Die offizielle Toolchain für WebAssembly hilft Ihnen beim Kompilieren von C/C++, aber es gibt viele von der Community bereitgestellte Compiler für verschiedene Sprachen, wie Rust, Python, Java und Blazor (C#).
Insbesondere die Rust-Community ist ziemlich aktiv und wir begannen, vollständige Front-End-Frameworks wie Yew und Dodrio zu sehen.
Dies bringt viele neue Möglichkeiten für browserbasierte Apps, und Sie müssen nur einige der großartigen Apps testen, die mit WebAssembly erstellt wurden, um zu sehen, dass nahezu native browserbasierte Apps jetzt Realität sind, z. B. Sketchup oder Magnum.
Die Annahme von typisierten Sprachen, die zu ES5 kompiliert werden, ist ausgereift genug, die Spieler sind gut etabliert und sie werden in naher Zukunft nicht verschwinden (oder mit ES fusioniert werden), aber wir werden eine langsame Verschiebung zugunsten von typisierten Sprachen mit sehen WebAssembly.
Netz
Frontend-Frameworks
Jedes Jahr sehen wir einen großen Kampf auf dem Markt für Front-End-Frameworks für das Web, und React war in den letzten Jahren der unbestreitbare Gewinner – seit der Einführung ihrer bahnbrechenden Technologie, dem Virtual DOM, haben wir einen fast gesehen verpflichtete Adoption von ihren Kollegen, um im Kampf relevant zu bleiben.
Vor einigen Jahren sahen wir die Einführung eines radikal neuen Ansatzes für die Entwicklung von Webanwendungen mit Svelte, dem „Compiler-Framework“, das zur Kompilierzeit verschwindet und einen kleinen und hocheffizienten JavaScript-Code hinterlässt. Diese Funktion reichte jedoch nicht aus, um die Community davon zu überzeugen, zu Svelte zu wechseln, aber mit der kürzlichen Einführung von Svelte 3.0 haben sie eine echte reaktive Programmierung in das Framework eingeführt, und die Community ist begeistert, also erleben wir vielleicht das nächste große Ding vor uns -Ende Frameworks.
Inspiriert vom Schicksalsoperator:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
Svelte bringt Reaktivität in JavaScript, indem die Verwendung von Label-Anweisungen zur Kompilierzeit mit Reaktivität überladen wird, indem der Code angewiesen wird, in topologischer Reihenfolge ausgeführt zu werden:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
Dies ist eine radikal neue Idee, die in verschiedenen Kontexten hilfreich sein könnte, daher arbeitet der Schöpfer von Svelte auch an svelte-gl, einem Compiler-Framework, das Low-Level-WebGL-Anweisungen direkt aus einem in HTMLx deklarierten 3D-Szenendiagramm generiert.
Natürlich werden React, Angular und Vue.js nicht über Nacht verschwinden, ihre Communitys sind riesig und sie werden noch einige Jahre relevant bleiben – wir sind nicht einmal sicher, ob Svelte der tatsächliche Nachfolger sein wird, aber wir können sicher sein: Wir werden früher oder später etwas anderes verwenden.
WebXR und die Zukunft des immersiven Webs
Virtual Reality hat in den letzten 60 Jahren darum gekämpft, einen Platz im Mainstream zu finden, aber die Technologie war einfach noch nicht bereit. Vor weniger als zehn Jahren, als Jon Carmack zu Oculus VR (jetzt Teil von Facebook Technologies, LLC) kam, begann eine neue VR-Welle aufzusteigen, und seitdem haben wir viele neue Geräte gesehen, die verschiedene Arten von VR unterstützen und natürlich die Verbreitung von VR-fähigen Anwendungen.
Browserhersteller wollten diese Gelegenheit nicht verpassen und schlossen sich der WebVR-Spezifikation an, die die Erstellung virtueller Welten in JavaScript mit WebGL und etablierten Bibliotheken wie three.js ermöglicht. Der Marktanteil von Benutzern mit 6dof-Geräten war jedoch für massive Webbereitstellungen immer noch unbedeutend, aber das mobile Web konnte mit der Geräteorientierungs-API immer noch ein 3D-Erlebnis bieten, sodass wir eine Reihe von Experimenten und viele 360-Grad-Videos für gesehen haben längere Zeit.
Im Jahr 2017 wurden mit der Einführung von ARKit und ARCore neue Funktionen für mobile Geräte und alle Arten von Anwendungen mit AR- und MR-Erfahrungen bereitgestellt.

Es fühlt sich jedoch immer noch ein wenig unnatürlich an, eine bestimmte App für ein bestimmtes AR-Erlebnis herunterzuladen, wenn Sie Ihre Welt um sich herum erkunden. Wenn wir nur eine App haben könnten, um verschiedene Erfahrungen zu machen … Das kommt uns bekannt vor. Wir haben dieses Problem in der Vergangenheit mit dem Browser gelöst, also warum versuchen Sie es nicht noch einmal?
Letztes Jahr hat Mozilla die WebXR Device API Spec eingeführt (deren letzter Arbeitsentwurf zum Zeitpunkt des Schreibens dieses Artikels von vor zwei Wochen stammt), um AR-, VR- und MR-Funktionen (also XR) in den Browser zu bringen.
Einige der wichtigsten Browser-Anbieter folgten mit ihrer Implementierung, mit einer wichtigen Ausnahme: Safari Mobile, um ihren Standpunkt zu beweisen, veröffentlichte Mozilla einen WebXR-fähigen Browser unter der iOS-Plattform WebXR Viewer.
Dies ist nun ein wichtiger Schritt, denn die Kombination von AR und VR bringt 6dof auf Mobilgeräte und auf Mobilgeräten basierende Headsets wie Google Cardboard oder die Samsung Gear VR, wie Sie in diesem Beispiel sehen können, und erhöht den Marktanteil von 6dof-Geräten um einen großen Spielraum und die Möglichkeit einer groß angelegten Webbereitstellung.
Gleichzeitig haben die Jungs von Mozilla an einem neuen Web-Framework gearbeitet, um die Erstellung von 3D-Welten und -Anwendungen namens A-Frame zu erleichtern, einem komponentenbasierten deklarativen Framework mit HTML-Syntax, das auf three.js und WebGL basiert Eines im Hinterkopf – den Spaß und die Benutzerfreundlichkeit der Webprogrammierung zurückzubringen.
Dies ist Teil ihres Kreuzzugs zum immersiven Web, einer neuen Reihe von Ideen, wie das Web in Zukunft aussehen sollte. Zum Glück für uns sind sie nicht allein und wir werden mehr und mehr immersive Erfahrungen im Internet sehen.
Wenn Sie es ausprobieren möchten, laden Sie den WebXR Viewer herunter und besuchen Sie diese Website, um die Möglichkeiten des immersiven Webs zu sehen.
Noch einmal, standardmäßige browserbasierte Apps werden in ein oder zwei Jahren nicht verblassen – wir werden sie wahrscheinlich immer haben. Aber 3D-Apps und XR-Erfahrungen nehmen zu und der Markt ist bereit und begierig darauf, sie zu haben.
Native Unterstützung für ES6
Fast jede in den letzten zehn Jahren in JavaScript erfundene Technologie wurde entwickelt, um Probleme zu lösen, die durch die zugrunde liegende Implementierung der Browser verursacht wurden, aber die Plattform selbst ist in den letzten Jahren stark gereift, und die meisten dieser Probleme sind verschwunden, wie wir sehen können mit Lodash, das einst die Leistungsbenchmarks regierte.
Dasselbe passiert mit dem DOM, dessen Probleme einst die eigentliche Inspiration für die Erstellung von Webanwendungs-Frameworks waren. Jetzt ist es eine ausgereifte API, die Sie ohne Frameworks verwenden können, um Apps zu erstellen – eigentlich sind das Webkomponenten. Sie sind das „Framework“ der Plattform, um komponentenbasierte Apps zu erstellen.
Ein weiterer interessanter Teil der Plattformentwicklung ist die Sprache selbst. Wir haben Babel.js in den letzten Jahren verwendet, um die neuesten Funktionen von ECMAScript nutzen zu können, aber da der Standard selbst in den letzten Jahren etwas zu stagnieren begann, war das genug Zeit, um die Browserhersteller zuzulassen um die meisten ihrer Funktionen zu implementieren, einschließlich der nativen Unterstützung der statischen Importanweisung. Jetzt können wir also anfangen, über die Erstellung von Anwendungen ohne Babel.js oder andere Compiler nachzudenken, da wir (wieder) die Unterstützung der Sprachfunktionen in der Plattform selbst haben und da Node.js dieselbe V8-VM wie Google Chrome verwendet , haben wir begonnen, eine stärkere Unterstützung von ES6 in Node.js zu sehen, sogar mit der statischen Importanweisung unter dem Flag „experimental-modules“.
Das bedeutet nicht, dass wir aufhören werden, Apps auf professionellem Niveau zu kompilieren, aber es bedeutet, dass der Start mit einer browserbasierten Anwendung so einfach und unterhaltsam sein wird wie früher.
Serverseitiges JavaScript
Obwohl JavaScript 1995 mit dem Netscape Enterprise Server serverseitig begann, wurde JavaScript erst mit Ryans Dahl-Präsentation im Jahr 2009 ernsthaft für serverseitige Anwendungen in Betracht gezogen. In den letzten zehn Jahren ist mit Node.js viel passiert. Es hat sich stark weiterentwickelt und gereift und hat wieder einmal die Möglichkeit für Disruption und neue Technologien geschaffen.
In diesem Fall stammt es aus der Hand seines eigenen Schöpfers Ryan Dahl, der mit Deno an einer neuen Perspektive serverseitig gesicherter Apps gearbeitet hat, einer Plattform, die nativ die neuesten Sprachfunktionen als async/await unterstützt, und auch die beliebteste Compiler-to-js-Sprache TypeScript, die dank ihrer Implementierung in Rust und der Verwendung von Tokio auf die beste Leistung abzielt, aber vor allem mit einer neuen Sicherheitsphilosophie, die sie von den meisten serverseitigen Plattformen wie Python unterscheidet, Rubin oder Java). Inspiriert vom Browser-Sicherheitsmodell lässt Deno Sie die Ressourcen des Hosts erst nutzen, nachdem der Benutzer dem Prozess ausdrücklich die Berechtigungen erteilt hat, was am Anfang etwas mühsam klingen mag, aber durch das Zulassen viele Auswirkungen haben kann uns, ungesicherten Code in einer gesicherten Umgebung auszuführen, indem wir einfach der Plattform vertrauen.
Node.js wird es auch in Zukunft geben, aber vielleicht werden wir beginnen, serverlose Dienste wie AWS Lambda und Azure Functions zu sehen, um die Deno-Funktionalität als Alternative zur Bereitstellung einer ungesicherten serverseitigen Codeausführung auf ihren Systemen bereitzustellen.
Fazit
Dies sind aufregende Zeiten in der JavaScript-Welt – viele Technologien sind ausgereift genug, um Raum für Innovationen zu lassen, die aktive Community hat nie aufgehört, uns mit ihren brillanten und unglaublichen Ideen zu überraschen, und wir erwarten viele neue Alternativen zu etablierten Tools da ihre reifen Stadien schnell eintreffen; Wir werden nicht aufhören, sie zu verwenden, da viele von ihnen wirklich gut sind und es viele Beweise auf dem Schlachtfeld gibt, aber neue und aufregende Märkte werden entstehen, und Sie sollten besser vorbereitet sein.
Auf dem neuesten Stand der JavaScript-Welt zu bleiben, ist aufgrund des Tempos der Entwicklung nicht einfach, aber es gibt einige Quellen, die wirklich helfen können. Erstens ist die meiner Meinung nach wichtigste Nachrichtenquelle Echo JS, wo Sie stündlich unglaublich viele neue Inhalte finden können. Wenn Sie jedoch keine Zeit haben, ist der JavaScript Weekly-Newsletter eine hervorragende Zusammenfassung der Woche in JS. Außerdem ist es wichtig, die Konferenzen auf der ganzen Welt im Auge zu behalten, und YouTube-Kanäle wie JSConf, React Conf und Google Chrome Developers sind wunderbar hilfreich.
Umgekehrt, wenn Sie daran interessiert sind, konstruktive Kritik darüber zu sehen, wohin sich JavaScript entwickelt, empfehle ich die Lektüre von As a JS Developer, This Is What Keeps Me Up at Night von seinem JavaScript-Entwicklerkollegen Justen Robertson.
Weiterführende Literatur im Toptal Engineering Blog:
- TypeScript vs. JavaScript: Ihr Leitfaden