Hallo allerseits! Connected TestMace und wir machen Sie weiterhin mit den neuesten Nachrichten aus der Welt von JavaScript vertraut. Der nächste Schritt ist die Übersetzung eines Artikels über WASI, eine Technologie, mit der WebAssembly außerhalb von Browsern verwendet werden kann

Mozilla hat diese Woche ein Projekt namens WASI (WebAssembly System Interface) vorgestellt, um die Interaktion von WebAssembly-Code mit dem Betriebssystem zu standardisieren. Wenn das Projekt erfolgreich ist, führt es dieselben Funktionen wie die virtuelle Oracle Java-Maschine aus, jedoch viel effizienter und mit erweiterten Funktionen.
WebAssembly (WASM) ist ein binäres Befehlsformat für eine virtuelle Maschine, die auf verschiedenen Hardwarearchitekturen ausgeführt werden kann. Code, der in vielen Sprachen wie C / C ++, Go, Rust geschrieben wurde, kann in WASM-Code kompiliert werden.
Viele Webbrowser haben die Unterstützung für WebAssembly eingeführt, aber bis zu diesem Zeitpunkt gab es keinen Standard, um außerhalb des Browsers damit zu arbeiten. Und jetzt war da WASI.
"Es muss eine Möglichkeit geben, dass Code mit dem System außerhalb des Browsers interagiert, dh eine Systemschnittstelle", erklärte Mozilla-Entwickler Lin Clark in diesem Mozilla Hacks-Blogbeitrag. "Die WebAssembly-Plattform verfügt noch nicht über eine solche Methode."
WASM + WASI
Mit WASI kann WASM-Code in einem Browser oder einer anderen kompatiblen Umgebung ausgeführt werden, die eine plattformübergreifende sprachunabhängige Entwicklung ermöglicht. Während die tragbare Betriebssystemschnittstelle (POSIX) die Portabilität des Programmquellcodes zwischen UNIX-ähnlichen Betriebssystemen sicherstellen soll, soll WASI die Kompatibilität kompilierter Binärdateien auf verschiedenen Geräten und Betriebssystemen unterstützen. Der Standard bietet eine universelle Laufzeit, deren Geschwindigkeit nahezu nativ ist.
Die Java Virtual Machine (JVM) macht dasselbe, aber ein Plugin ist erforderlich, um Java-Code im Browser auszuführen. Obwohl die Flexibilität der Sprache, wie die vorgeschlagene WebAssembly-Plattform, in Java mithilfe von GraalVM erreicht werden kann , befindet sich das Java-Ökosystem aufgrund von Ereignissen im Zusammenhang mit den Behauptungen von Oracle, ihr geistiges Eigentum zu verletzen , immer noch im Hintergrund.
Das WASM-Format, das einen sicheren Zugriff auf den Speicher und eine bequeme Validierung bietet, hat einen Vorteil gegenüber Java-Applets in Bezug auf die Sicherheit, obwohl es angegriffen werden kann, um den anfänglichen Kontrollfluss des Programms zu ändern . Es kommt auch gut mit C / C ++ und Rust aus.
Der WebAssembly-Teamleiter von Mozilla, Till Schneider, erklärt den Unterschied zwischen WebAssembly und Java auf Twitter wie folgt: "WebAssembly wurde entwickelt, um von Miniaturgeräten auf große Servergruppen oder CDNs zu skalieren. Das Format ist viel sprachunabhängiger als Java und Die Implementierung ist weitaus weniger ressourcenintensiv. "
Wenn Ihnen die potenziellen Vorteile von WASI noch nicht klar sind, sagte einer der Entwickler von Docker Solomon Hykes über ihn: „Wenn WASM + WASI 2008 existiert hätte, wäre es uns nicht in den Sinn gekommen, Docker zu erstellen. Serverseitige WebAssembly ist die Zukunft dafür Computing. Uns fehlte eine standardisierte Systemschnittstelle. Ich hoffe, WASI löst dieses Problem! "
Auf dieser Welle des Optimismus veröffentlichte Fastly am Donnerstag Lucet , einen nativen Compiler und eine Umgebung zum Ausführen von WebAssembly WASM-Code in Cloud-Umgebungen. Es ergänzt Mozilla Wasmtime, eine WASM-Code-Laufzeitumgebung außerhalb des Browsers.
Natürlich ist WASI noch lange nicht ideal. WebAssembly wäre auch hilfreich, um die Möglichkeit des Zugriffs auf das Browser-DOM weiter zu verfeinern. Obwohl die Entwickler bereits hervorragende Arbeit geleistet haben, indem sie ein einziges plattformunabhängiges Binärformat bereitgestellt haben. In der Zwischenzeit wünsche ich Ihnen eine erfolgreiche Erfahrung mit Java.