JavaScript ist nicht die schönste Programmiersprache der Welt. Aus diesem Grund hat ein Weltklasse-Experte ein Buch über die „Quintessenz“ der Sprache geschrieben. Der Name dieses Buches lautet „Deep Digging into the Highlights of JavaScript“, weil die guten Dinge ziemlich tief vergraben sind. Dennoch entwickelt es sich schnell zu einer der beliebtesten Sprachen der Welt. Diese Popularität ist wohlverdient, denn trotz der Mängel der Sprache bietet JavaScript Entwicklern wichtige Vorteile, die andere Sprachen nicht bieten können. Es gibt einige Vorteile, die sich ergeben, nachdem sich Browserentwickler auf Javascript (naja, technisch gesehen ECMAScript) als Standard für die Websprache geeinigt haben. Der Rest ist das inhärente Programmiermodell für Webanwendungen und wurde durch keine Erweiterungen verbessert. Obwohl native Anwendungen Webanwendungen auf mobilen Geräten dominieren, verlagert sich die Dominanz von JavaScript allmählich auf mobile Geräte. Wird es irgendwann dominieren?
Beliebt, aber nicht priorisiert
In der neuesten TIOBE-Community-Liste steht JavaScript auf Platz sechs unter allen Programmiersprachen und steigt weiter an. Die Rankings der TIOBE-Methode bevorzugen tendenziell ältere, ausgereiftere Sprachen und sind weniger gut darin, Trends zu verfolgen. Im Gegensatz dazu platziert die Redmonk-Ranking-Methode JavaScript an erster Stelle. Der Redmonk-Ansatz wird in gewissem Maße auf Sprachen mit starken Open-Source-Communities ausgerichtet sein, gleichzeitig aber im Wesentlichen aktuelle Trends und Interessen widerspiegeln. Unsere eigene Developer Economy-Übersicht hat gezeigt, dass die Kombination aus HTML5 und Javascript bereits die zweitbeliebteste Sprache ist, die von mobilen Entwicklern verwendet wird, und zwar von fast 55 % von ihnen. Nur knapp 57 % der Menschen verwenden Java. Obwohl wir festgestellt haben, dass die Kombination von HTML5 und Javascript bei den Menschen die bevorzugte Wahl ist (19 %), liegt sie in diesem Bereich weit hinter Java (29 %). Dies dürfte sich in den kommenden Jahren deutlich verbessern. [Was denken Sie? Wir haben eine neue Umfrage, also schauen Sie sich diese an und teilen Sie uns Ihre Meinung mit.]
JavaScript ist in Browsern kostenlos verfügbar
Dies ist kein Standard-„Web“-Gewinn-Argument . Ich glaube nicht, dass Browser oder Webview-basierte Anwendungen irgendwann die mobilen Geräte dominieren werden. Selbst wenn es genutzt wird und wächst, wird es nicht die Norm sein. Wenn Webstandards in Zukunft tatsächlich mobile Geräte dominieren sollen, müssen sie mit dem Document Object Model (DOM) beginnen. Das DOM ist nicht die Grundlage, auf der Anwendungen aufgebaut sind, sondern Dokumente. Natürlich könnten Sie zunächst eine App für Dokumente rund um eine Plattform entwerfen, aber Sie wären nicht weitergekommen. Werfen Sie einen Blick auf die aktuellen Frameworks, mit denen Sie relativ leistungsstarke Anwendungen für mobile Browser oder Webansichten entwerfen können: React.js, Famo.us und lonic. Gemeinsam ist diesen dreien, dass sie DOM so wenig wie möglich verwenden.
Ja, es gibt zu viele WebGL (oder HTML5-Canvas-Must-have), aber das sind Low-Level-APIs. Was Sie benötigen, ist ein großes, möglicherweise mehrere Bytes umfassendes, gutes Framework, um eine hervorragende Plattform für die Entwicklung der meisten Anwendungen zu schaffen. Dies passt nicht gut zum Programmiermodell für Webanwendungen, bei dem der neueste Anwendungscode auf einem Remote-Server gehostet wird, und insbesondere nicht in einer mobilen Umgebung. Es ist wahr, dass Sie eine Hybridanwendung auf der Grundlage eines großen, schönen WebGL-Speichers erstellen können, der lokal ist, und einfach anwendungsspezifischen Code von einem Remote-Server erhalten. Aber warum einen Browser verwenden? Warum nicht einfach JavaScript andere plattformübergreifende Frameworks bei Hardware-Grafikbeschleunigern übertrifft (Hinweis: Qt bietet ein gutes Angebot). Eine High-Level-API hätte nicht so viel Aufwand für die Überbrückung zwischen Sprachen. Auch beim Zugriff auf bestimmte Funktionen kann es an Einschränkungen mangeln.
Mittlerweile gibt es mehrere sehr interessante neue Optionen, auf die diese Beschreibung passt. Reagieren Sie auf Native und NativeScript. Sie funktionieren auf unterschiedliche Weise, aber beide verwenden JavaScript, um eine Anwendung mit einer nativen Benutzeroberfläche zu erstellen. TiNext von Appcelerator könnte auch interessant sein, auch wenn im Laufe der Jahre viel darüber gesprochen wurde, ohne jemals eine Version zu veröffentlichen, also lasst uns abwarten und einen Blick darauf werfen.
JavaScript-Ausnahme
Apple hat die Dominanz von JavaScript auf Mobilgeräten wiederhergestellt. Einer der Hauptgründe, die die meisten Entwickler davon abhalten, ein agiles, webbasiertes Continuous-Delivery-Modell auf Mobilgeräten einzuführen, ist das Verbot von Code-Downloads durch Apple. Ohne diese deutliche Verlangsamung des Iterationsmodus wären Vergleichstests deutlich schwieriger. Das bedeutet eigentlich, dass Entwickler, insbesondere Anfänger, langsamer lernen. Bis vor Kurzem bestand die einzige Möglichkeit, schnellere Iterationen zu erzielen, darin, zunächst mit Android zu beginnen und eine Hybrid-App zu entwickeln, da Apple JavaScript in den Regeln zum Herunterladen von Webview-Code ausnahm. Im ersten Fall bedeutet dies, dass sich die meisten Early Adopters von der Plattform entfernen. Leider ist der UX-Kompromiss im zweiten Fall zu groß, und die meisten Entwickler gehen diesen Weg, weil Benutzeranwendungen ausfallen oder auf lokal umsteigen. In ios7 wurde jedoch die JavaScriptCore-Schnittstelle zum Ausführen von JavaScript hinzugefügt, und in den neuesten Lizenzbedingungen für das iOS-Entwicklerprogramm wurden die Regeln für Code-Download-Ausnahmen geändert, um JavaScriptCore einzubeziehen.
Dies ist aus Sicherheitsgründen sinnvoll. Apple kann seine Laufzeitumgebungen prüfen und aktualisieren. Wenn es jedoch Laufzeitumgebungen von Drittanbietern erlaubt, Code herunterzuladen, werden Sicherheitsprobleme nicht effektiv überwacht. Da JavaScript die einzige Skriptoption von Apple ist und das lokale Herunterladen von Code nicht gestattet ist, erlangt JavaScript seine privilegierte Position als einzige Option für diejenigen zurück, die schnell iterieren möchten. Die Verfügbarkeit von JavaScript hat Initiativen wie React und NativeScript ausgelöst, und Apples lockerer Umgang mit den Code-Download-Richtlinien wurde perfekt bekannt gemacht.
Wird Offenheit gewinnen?
Web-Befürworter argumentieren manchmal, dass offene, auf dem Web basierende Standards letztendlich gewinnen werden, weil Offenheit immer gewinnt. Allerdings ist Linux ein klares Beispiel für ein offenes und sich schnell entwickelndes Ökosystem ohne auf Gremien abgestimmte Standards. React: Facebook scheint sich zu einem Ökosystem von Entwicklern entwickelt zu haben, die schnell auf Open-Source-Projekten aufbauen. Es gibt bereits ein schnell wachsendes Komitee rund um React.js, was ihnen eindeutig einen Vorsprung verschafft. Da das NativeScript-Team von Telerik jedoch mit Google zusammenarbeitet, muss Angualr 2.0 nahtlos integriert werden. Google beabsichtigt, Nicht-DOM-Umgebungen zu unterstützen, unabhängig davon, ob sich Webstandards dahingehend entwickeln. Es kann lange dauern, bis Microsoft und Google die Standards unterstützen, die sie in zukünftigen Browsern implementieren werden. Aber sie arbeiten gemeinsam an TypeScript, was es einfacher macht, eine weniger komplexe Anwendung mit JavaScript zu erstellen (bewiesen, dass der Compiler beim Erkennen von Typkonflikten intelligenter als Menschen ist).
Apple hat viele ziemlich beeindruckende Tools für seine neue Swift-Sprache entwickelt, insbesondere interaktive Spielplätze. Aufgrund des sofortigen Feedbacks und der hochfrequenten On-the-Fly-Codierung hatte Facebook jedoch möglicherweise ein besseres Codierungserlebnis mit React Native. Apple wird seine Tools weiterhin iterieren und die Entwicklergemeinschaft hat jetzt diese neuen JavaScript-Umgebungstools hinzugefügt. Android ist zwar technisch gesehen Open Source, aber im Hinblick auf den Community-Aufbau ist es nicht offen. Google ist allein daran, die Plattform und Tools von Android zu verbessern. Vielleicht ist es die Open-Entwickler-Community, die gewinnen wird, und Open Source, das wirklich Community-basiert ist, kann schneller iterieren als Open Source, das auf Open-Source-Standards basiert. Zu diesem Zweck wird eine solche Plattform sicherlich nicht scheitern, wenn eine „native UX mit JavaScript erstellte“ Umgebung zum Erfolg führt. Anwendungen werden weiterhin basierend auf dem Erscheinungsbild der Plattform und unter Verwendung neuer plattformspezifischer APIs erstellt.
An diesem Punkt sieht es so aus, als ob die sehr offene JavaScript-Entwickler-Community gewinnen wird, da sie Apps erstellen, die das Aussehen, die Haptik und die Leistung der nativen Plattform haben und darüber hinaus Erfahrung in der Webentwicklung erfordern. Geschlossene Plattformen haben in der Vergangenheit immer gewonnen, weil Apps damals an ihre geschlossenen Ökosysteme angepasst werden mussten. Offene Webstandards verlieren derzeit noch an Boden. Wenn Hersteller mobiler Browser sich auf neue Standards einigen können, die den von ihnen erstellten Apps ein natives App-Erlebnis ermöglichen, werden sie mit Sicherheit gewinnen.
Womit hast du es gemacht?
Glauben Sie, dass JavaScript die Zukunft der mobilen Entwicklung bestimmen wird? Oder werden Java, Objective-C und Swift ihre Führungsposition behaupten? Wird das Backend des Internets der Dinge Node.js bestehen? Nehmen Sie an der Umfrage teil und teilen Sie uns mit, was Sie zum Erstellen Ihrer App verwenden.