Gibt WebAssembly Java- und Flash-Applets zurück?

Im letzten Artikel über WebAssembly habe ich folgende Aussage gemacht:
Einige vergleichen WebAssembly mit Java-Applets. In gewissem Sinne haben sie Recht, aber andererseits irren sie sich sehr. Irgendwie werde ich einen Artikel über die Unterschiede schreiben, aber jetzt wollen wir über die Ähnlichkeiten sprechen. In gewisser Weise ist WebAssembly eine andere Möglichkeit, um das zu erreichen, wofür die JVM gedacht war: Es ist eine gewöhnliche virtuelle Maschine für plattformübergreifende Software.
Viele Menschen haben Interesse an diesem Thema bekundet, schauen wir es uns also genauer an! In diesem Artikel vergleichen wir WebAssembly mit drei Technologien: Flash, Java-Applets und ein wenig mit PNaCL. Der Artikel konzentriert sich auch auf die Verwendung im Web , obwohl wir uns zuvor mit der Verwendung von Optionen für die Offline-Verwendung von WebAssembly befasst haben. Aber über einen solchen Vergleich werden wir später sprechen. Schließlich ähnelt dieser Artikel dem Essen von Tapas [spanischer Snack mit vielen verschiedenen Zutaten - ca. per.], hier sind ein paar kleine Abschnitte. Es scheint mir, dass es etwas kurz ist, aber gleichzeitig versuche ich zu bloggen. Wenn ich es weiter ausbaue, wird es ewig dauern, also tut es mir leid.

Ich denke, ein Vergleich mit Flash- und Java-Applets ist ganz natürlich, wenn Sie auf diese Beschreibung von WebAssembly stoßen:
WebAssembly (kurz Wasm) ist ein binäres Befehlsformat für eine gestapelte virtuelle Maschine. Wasm wurde als portable Version zum Kompilieren von Hochsprachen wie C, C ++ und Rust entwickelt, mit der Sie Client- und Serveranwendungen im Internet bereitstellen können.
Dies ist ein bisschen wie in der Vergangenheit. Es ist logisch zu vergleichen, wie sie verbunden sind, und kleine Unterschiede zwischen ihnen vorzuschlagen. WebAssembly unterscheidet sich jedoch aus mehreren Gründen erheblich.

Wasm besiegt


Der erste Grund, warum WebAssembly anders ist, ist, dass es erfolgreich war, während frühere Technologien dies nicht taten. Ich meine Sieg in einem bestimmten Sinne. Wenn Sie die Anzahl der Flash-Anwendungen und die Anzahl der WebAssembly-Anwendungen vergleichen, wird Wasm wahrscheinlich verlieren. WebAssembly-Anhänger müssen hart arbeiten, um diese Plattform zu verbreiten.

Wenn ich über den Sieg von WebAssembly spreche, meine ich, dass es Teil der Webplattform geworden ist. Flash, Java-Applets und PNaCL arbeiteten über Plugins. In gewisser Weise befanden sie sich außerhalb des Web-Ökosystems. Sie wurden nie in den Standard aufgenommen, und das ist sehr wichtig.

In gewissem Sinne ist eine solche Erklärung ausreichend. Nur auf eine Tatsache hinzuweisen, bedeutet jedoch nicht, ihre Ursachen zu erklären. Der Rest dieses Artikels wird versuchen herauszufinden, warum dies passiert ist: warum WebAssembly erfolgreich war, was andere Technologien nicht konnten. Hier hängen viele Gründe zusammen, aber ich versuche, sie vernünftigerweise in separate Punkte zu unterteilen.

Andere Technologien passten nicht in die Plattform


Erinnerst du dich daran?



Oder ist es?



Wie wäre es damit?



Ein Applet, das auf diesen Technologien basiert, ist eigentlich keine Webanwendung . Sie haben eine Webseite mit einem Ausschnitt, und Ihr Applet hat in diesem Rahmen funktioniert. Sie verlieren alle Vorteile anderer Webtechnologien: weder HTML noch CSS noch die Fähigkeit, sich in das Web zu integrieren. Diese Plattformen interagieren nicht mit dem Rest der Plattform im Browser. Technisch gesehen können sie das , aber in der Praxis wurden diese Technologien unterschiedlich eingesetzt.

Wie unterstützt das Web ein Ökosystem, das sich nicht in dieses integriert? Das wird niemals passieren. Und die Benutzer lehnten dies letztendlich entschieden ab. Zusätzlich zu Spielen hassten Benutzer Flash und Java-Applets waren schwer und langsam. Diese Technologien sind in der Webplattform nicht verankert.

WebAssembly hingegen ist JavaScript viel näher. Tatsächlich nimmt Wasm Ihnen keinen Teil des Bildschirms weg. Er erschafft keine eigene kleine geschlossene Welt. Jetzt mit JavaScript und in Zukunft allein kann es mit der Umgebung interagieren. Er passt einfach ... hinein.

Andere Technologie von Unternehmen


Java gehörte Sun Microsystems, Flash Adobe. Warum ist das wichtig?

Der Einfluss von Unternehmen auf das Internet ist ein komplexes Thema. Im Allgemeinen arbeitet das Web nach einem Pseudokonsensmodell. Java und Flash hingegen wurden von ihren jeweiligen Unternehmen kontrolliert. Sie haben eine starke Motivation, Gewinn zu machen, nicht das Internet zu verbessern. Dies führte teilweise zu der oben genannten Situation: Diesen Unternehmen war es nicht wichtig, sich ordnungsgemäß in den Rest der Plattform zu integrieren. Warum brauchen sie es? Für Unternehmen ist es viel besser, ihre Plattform zu blockieren und den Rest des Internets vollständig aufzugeben. Die Motivation ist völlig verzerrt.

WebAssembly ist eine gemeinsame Initiative von Mozilla, Google, Apple, Microsoft und anderen. Es fördert nicht die spezifische Plattform einer Person, sondern vertritt die gemeinsamen Interessen einer Vielzahl von Stakeholdern, sowohl von Unternehmen als auch von Einzelpersonen.

WebAssembly folgte dem Webprozess


Unternehmenszugehörigkeit bedeutet auch , dass diese Technologien nie dem Prozess gefolgt sind, den wir zur Standardisierung des Webs verwenden. Der Prozess der Übernahme von Webstandards ist gut etabliert, aber diese Technologien waren zu groß und funktionierten etwas anders. Im Gegensatz dazu folgte WebAssembly dem Standardverfahren für Webtechnologien.

Asm.js wurde zuerst als Beweis dafür erstellt, dass wir mit dem Web beeindruckende Dinge tun können. Die Ausführung erwies sich als recht hochwertig und demonstrierte die Fähigkeiten der Technologie, obwohl es dort nichts Fantastisches gibt. Der Haupttrumpf von asm.js war, dass es sich nur um JavaScript-Code handelte: Es ist vollständig kompatibel mit dem vorhandenen Ökosystem. "Das Internet nicht brechen" ist eine sehr, sehr wichtige Regel für Browser-Entwickler.

WebAssembly war eine verbesserte Version von asm.js Nachdem wir uns über asm.js kamen alle zusammen, um WebAssembly Wirklichkeit werden zu lassen. Da dies nicht nur JavaScript ist, hätte er den gesamten Prozess zur Implementierung in Browsern durchlaufen und ihn bestehen müssen. Dies ist jetzt die W3C-Spezifikation, die den Webstandards entspricht, diesen jedoch nicht widerspricht.

Folge: Andere Technologien waren zu groß und instabil


Ein weiterer Grund, warum Wasm erfolgreich war: Es ist winzig. Wasm verfolgt den Ansatz anderer Webtechnologien: Fangen Sie klein an und werden Sie auf dieser Basis größer. Abwärtskompatibel halten. Auch frühere Technologien folgten nicht dieser besonderen sozialen Konvention. Für Flash- und Java-Applets wurde eine bestimmte Laufzeit geladen, sodass keine Kompatibilität erforderlich war. PNaCl basiert auf dem vollständig instabilen LLVM-IR-Code. Sie würden es zu einer stabilen Teilmenge machen, aber wenn sich LLVM ändern würde, würde es eine Diskrepanz geben, die nicht sehr gut ist.

Diese Technologien sind auch zu umständlich, um jemals auf eine Stabilisierung zu hoffen. Können Sie sich vorstellen, dass vier Browserhersteller die JVM-Spezifikationen vollständig definieren und diese Semantik dann für immer akzeptieren? Was ist für ActionScript an sich eine ähnliche, aber unterschiedliche Version von ECMAScript? Für alles LLVM-IR?

Große Technologien stellen ein inakzeptables Risiko für die Situation dar. Dies ist ein Alles-oder-Nichts-Geschäft, und hier ist eine sichere "Nichts" -Wette. WebAssembly hingegen macht fast nichts. Dies ist hauptsächlich Mathematik und ein JavaScript-Aufruf. Das heißt, es ist viel einfacher, hier zuzustimmen.

Folgerung: Andere Technologien erfordern eine separate virtuelle Maschine


In diesem Artikel habe ich Dart nicht erwähnt, aber es passt auch hierher. Der Satz "Lassen Sie uns einfach die JVM in jeden Browser einfügen" ist das Hauptproblem, dass der Browser bereits eine JavaScript-Laufzeit hat. Selbst eine Laufzeit ist schwer zu pflegen, ganz zu schweigen von zwei. Und wie integrieren Sie sie?

WebAssembly hingegen ist als kleine Erweiterung vorhandener virtueller JavaScript-Maschinen konzipiert. Sie können zwar Ihre eigene virtuelle WebAssembly-Maschine implementieren - dies geschieht häufig mit WebAssembly offline, aber für Browser sind die Wartungskosten sehr viel niedriger.

Andere Technologien sind zu spezifisch.


WebAssembly ist grundsätzlich sprachunabhängig. Flash- und Java-Applets wurden hauptsächlich zum Ausführen von ActionScript und Java entwickelt. Sie sind tief mit ihrer relativen Semantik verbunden. Sogar PNaCl leidet in gewissem Maße darunter: LLVM ist wirklich für C-ähnliche Sprachen geeignet, wenn auch nicht ganz in gleichem Maße.

Wollen wir wirklich eine Sprache für das gesamte Internet auswählen? Wir haben bereits JavaScript. Hast du dir jemals eine dritte Sprache vorgestellt? Viertens? Ein unabhängiger Ansatz ist auf lange Sicht viel besser.

Wasm verfolgt einen strengen Sicherheitsansatz


Java-Applets und Flash waren ein wahrer Sicherheitsalptraum. Selbst wenn versucht wurde, sie zu schützen, traten in Wirklichkeit ständig Probleme auf.

Auf der anderen Seite erhielt WebAssembly erneut Boni von der JavaScript-VM: Alle Bemühungen, die Sandbox zu isolieren, gelten auch für Wasm. Hier fehlen einige Funktionen des üblichen Assemblers, was zu Schwachstellen wie der Stapelzerstörung führen kann. Wasm arbeitet sicher mit dem Gedächtnis, was sehr wichtig ist!

Darüber hinaus wurde WebAssembly ursprünglich mit dem Gedanken der Validierung entwickelt : Es ist vollständig typisiert und Programme können überprüft werden, ohne dass Code ausgeführt wird. Die Spezifikationen enthalten Anweisungen zur Durchführung einer solchen Validierung. Das ist sehr nützlich!

Fazit


Zu diesem Artikel möchte ich folgendes sagen: Er ist aus Sicht des Entwicklers geschrieben . Entwickler sind jedoch wichtig, weil sie das Web steuern. Technologie muss mit ihren Zielen übereinstimmen - dies ist ebenso wichtig wie die Bequemlichkeit für Endbenutzer. In einem zukünftigen Artikel werde ich versuchen, die Probleme aus Sicht der Benutzer zu analysieren. Muss viel schreiben!

Zusammenfassend:

  • Andere Technologien wurden nicht in die Webplattform integriert, was durch kommerzielle Interessen behindert wurde.
  • Andere Technologien erforderten zu viel: Viele mussten bei der Implementierung Opfer bringen.
  • Wasm hat eine wirklich gute Sandbox-Isolierung und -Validierung, die andere einfach nicht hatten.

Source: https://habr.com/ru/post/de418653/


All Articles