Cross-Plattform-Entwicklung: NativeScript soll auch unter iOS V8 verwenden
Die an Googles JavaScript-Engine angepasste Laufzeitumgebung soll die konsistente Entwicklung fĂĽr iOS und Android vereinfachen.
Progress plant einen Austausch der JavaScript-Engine fĂĽr die NativeScript-Laufzeitumgebung unter iOS: V8 soll das bisher verwendete JavaScriptCore ersetzen. Die zweigleisige Entwicklung ist historisch gewachsen und erschwert offenbar die Wartung der Runtimes fĂĽr die mobilen Zielplattformen. Durch V8 erhalten die mit dem Cross-Plattform-Framework erstellten Anwendungen unter iOS kĂĽnftig dieselbe Basis wie die Android-Laufzeitumgebung.
Aus Entwicklersicht dürfte sich damit wenig ändern, und ihr Code sollte auf beiden Plattformen laufen wie bisher. Grund für den Wechsel ist in erster Linie die Wartbarkeit der zugrunde liegenden Engine, die eng mit dem restlichen System verknüpft ist. Durch den Wechsel muss das NativeScript-Team Neuerungen jeweils nur für V8 anpassen.
Auf gleicher Augenhöhe
Auch lassen sich mit dem bisherigen Ansatz nicht alle Features fĂĽr beide Plattformen umsetzen. Unter anderem optimiert NativeScript mit Snapshots die Startzeiten. Dabei handelt es sich um eine Funktion von V8, die in JavaScriptCore nicht vorhanden ist. AuĂźerdem ist letztere Engine im Gegensatz zu V8 nicht auf das Einbetten in andere Applikationen ausgelegt.
Der im März 2019 eingeführten JIT-less-Mode, der auf den Just-in-Time-Compiler verzichtet, hat die Engine für die iOS-Plattform geöffnet, da er keine Ausführungsberechtigungen mehr für den verwalteten Speicher mehr benötigt. Diese verweigert iOS für reguläre Apps ohne zusätzliche Rechte.
Erste Gehversuche
Derzeit befindet sich die Umstellung der iOS-Runtime noch in der Alpha-Phase. Googles V8-Team hat Progress bei der Umstellung unterstĂĽtzt. Ein GroĂźteil der bisherigen Tests ist wohl auf der neuen Laufzeitumgebung fĂĽr iOS erfolgreich gelaufen, und die Performance kann laut dem NativeScript-Team mit der offiziellen JavaScriptCore-Runtime mithalten, obwohl bisher noch keine Snapshots zum Einsatz kommen.
Interessierte Entwickler können die Neuerung bereits in der Alpha-Version testen, indem sie die V8-basierte iOS-Laufzeitumgebung mit tns platform add ios@alpha-v8
ihrem Projekt hinzufĂĽgen.
Siehe dazu auf heise Developer:
- Flutter, React Native und NativeScript: Kopf an Kopf im Cross-Plattform-Rennen
- Mit JavaScript wie hausgemacht: NativeScript
(rme)