Coole Tools zum Kompilieren in JavaScript

Jeder Programmierer hat eine oder zwei Lieblingssprachen. JavaScript-Liebhaber sind heutzutage am glücklichsten, weil ihre Sprache das Internet und das Internet die Welt übernimmt. Diejenigen, deren Herzen anderswo in der Welt der Programmiersprachen liegen, stecken jedoch fest. Sie können entweder am Rande bleiben und den unerbittlichen Moloch von HTML, CSS, JavaScript und Node.js verfluchen, oder sie können einen Weg finden, es zu lieben.

Glücklicherweise gibt es einen dritten Weg, mit dem Sie die Freuden Ihrer Lieblingssprache genießen und gleichzeitig Ihren Code in der ständig wachsenden Welt von JavaScript bereitstellen können: Konvertieren Sie einfach Ihren Code, was überraschend einfach sein kann. Die Leistung kann etwas leiden, aber oft viel weniger, als Sie sich vorstellen können. Anschließend können Sie Ihren Code an Browser senden und den Versuch beenden, Benutzer zur Installation ausführbarer Dateien zu bewegen.

Der Standhafte wird das Gefühl haben, dass dies eine erbärmliche Kapitulation ist, ein bitterer Rückzug von den Prinzipien, die Sie an Ihre Lieblingssyntax binden. Einige mögen sogar das Gefühl haben, es sei ein Verrat, eine Handlung, die so verräterisch ist, dass Sie sie vor Ihren Kollegen verbergen müssen. Andere werden zu Recht vorschlagen, dass es nicht so einfach ist. Es ist eine Sache, den Code zum Laufen zu bringen. Das Zusammenkleben der Teile und das Erstellen einer Benutzeroberfläche ist eine Menge zusätzlicher Arbeit.

Sie können sich gerne in Ihrem Mitleid suhlen, aber es gibt viele Rationalisierungen, die die Idee schmackhafter machen. Erstens laufen JavaScript-Engines viel, viel schneller als in der Vergangenheit. Zweitens war das Erstellen einer Web-Benutzeroberfläche dank Frameworks und umfangreichem HTML / CSS-Designtalent nie einfacher. Drittens wird JavaScript zu einer Art Verkehrssprache. Wenn Sie alle diese Sprachen in JavaScript konvertieren können und die Liste überraschend lang ist, können Sie sie auch alle miteinander verknüpfen.

Hier werfen wir einen Blick auf die Fülle kleiner Sprachen, mit denen einige der beliebtesten Programmiersprachen zu JavaScript kompiliert werden können. In einem zukünftigen Artikel wird untersucht, wie verblassende Sprachen wiedergeboren werden, indem sie in den Browser gebracht werden. Es gibt keinen Grund, sich in Mitleid oder Hass zu verlieren. Mit diesen Techniken können Sie Ihre Lieblingssprache genießen und überall dort ausführen, wo JavaScript verwendet wird.

Rubin

Es gibt eine Reihe von Optionen, mit denen Sie in einer JavaScript-Umgebung wie ein Ruby-Programmierer denken können.

RubyJS ist beispielsweise eine JavaScript-Bibliothek, die viele der Grundelemente in einem JavaScript-Objekt hinzufügt. Was Sie schreiben, ist technisch gesehen JavaScript, aber das spezielle Ruby-Objekt verhält sich die meiste Zeit wie Ruby-Code. Zeichenfolgen, Zahlen, Iteratoren und Enumeratoren warten auf Sie.

Wenn das Schreiben von JavaScript, das wie Ruby funktioniert, nicht ausreicht, übersetzt Opal den Ruby-Quellcode direkt in JavaScript. Es verhält sich oft wie eine Ruby-VM, aber manchmal nicht. Rubys veränderbare Strings werden beispielsweise direkt in unveränderliche JavaScript-Strings konvertiert, was für einige Anwendungen kein Problem sein sollte, aber einige Leute in den Wahnsinn treiben könnte. Andere kleine Effekte wie dieser können in Randfällen zu groben Überraschungen führen.

Für diejenigen, die mehr wollen, bietet HotRuby eine umfassendere Lösung, eine virtuelle JavaScript-Maschine, die Ruby-Op-Codes durchläuft. Die Codebasis wird etwas alt, bietet aber echten Gläubigen eine weitere Option.

Java

Es ist schwer zu wissen, was Google dazu inspiriert hat, das Google Web Toolkit zu erstellen, einen Präprozessor, der Java in JavaScript konvertiert. Vielleicht liebte der Manager Java und wollte nicht, dass es stirbt. Vielleicht saßen zusätzliche Java-Genies herum und warteten darauf, das Web zu betreiben.

Was auch immer der Grund sein mag, sie haben es getan und verwenden es oft für ihre anspruchsvollsten Webprodukte. Es ist ein großartiges Geschenk für alle, die einen Stapel Java haben und keine Zeit haben, ihn neu zu schreiben. Die Eingeweide der Sprache sind alle da, aber einige der weniger verbreiteten Klassen wie BigInteger fehlen; Das heißt, Sie können normalerweise einen Weg finden, sie hinzuzufügen. Das Framework für die Benutzeroberfläche wurde größtenteils von Swing übernommen, sodass sich Swing-Entwickler wie zu Hause fühlen. Anderen fällt es nicht schwer zu lernen.

Google Web Toolkit ist bei weitem nicht die einzige Wahl für Java-Programmierer. Java2Script ist vollständig in Eclipse integriert, und GrooScript konvertiert Javas küssenden Cousin Groovy.

Es gibt verschiedene Tools, die JVM-Bytecode mit JavaScript ausführen. Diese clevere Idee ermöglicht es Ihnen, JAR-Dateien auch dann bereitzustellen, wenn Sie nicht über die Java-Quelle verfügen. Einige, wie Doppio und Node-jvm, sind Dolmetscher; Andere, wie TeaVM oder Dragome, konvertieren den Bytecode dauerhaft in JavaScript.

Erlang

Erlang-Liebhaber haben mehrere Möglichkeiten. Eine Lösung besteht darin, Erjang zu verwenden, ein Tool, mit dem Erlang auf der JVM ausgeführt wird. Anschließend wird Java-Bytecode mit einer der oben genannten Java-Optionen ausgeführt. Es klingt einfach, oder?

Shen ist ein Compiler, der Erlang und seine Cousins ​​wie Elixir, Joxa und Lol in JavaScript konvertiert. Wenn Sie diesen Code in Node.js ausführen möchten, gibt es auch ein Paket erlang-shen-js.

Eine dritte Option ist die Verwendung von LuvvieScript, einer strengen Teilmenge von Erlang, die Hooks für den Zugriff auf alle DOM-Objekte erhalten hat. Sie verwenden die Erlang-Struktur, die Sie lieben, und sie übersetzt Ihre Anweisungen in etwas, das das DOM versteht. Es ist nicht genau das gleiche, aber es wird reichen.

C.

Viele Menschen sind überrascht, dass sie mit JavaScript C- oder C-ähnliche Sprachen verwenden können. Sicher, die grundlegende JavaScript-Syntax ist C ziemlich ähnlich, aber die Eingeweide sind unterschiedlich. Mit C können Sie den Speicher direkt berühren, aber JavaScript verbirgt all diese Details. Mit C können Sie Zeiger manipulieren, aber JavaScript schützt Sie vor ihrer gefährlichen Kraft. Diese Unterschiede können jedoch mit ein wenig cleverem Hacken überwunden werden.

Es mag nicht fair sein, LLJS als eine Version von C zu bezeichnen, aber diese Version von JavaScript bietet statisch typisierte Variablen und Programmiersteuerung des Speichers - also nicht den Speicher an sich, sondern eine JavaScript-Version davon. Die Dokumentation verspricht gerne eine pausenfreie Ausführung, da es keine Speicherbereinigung gibt.

Wenn Sie mit Standard C arbeiten möchten, konvertiert Clue C in JavaScript und eine Vielzahl anderer Skriptsprachen wie Perl oder Lua. Die Entwickler behaupten sogar, dass ein Teil des Codes in der JIT für diese dynamischen Sprachen tatsächlich schneller ausgeführt wird als beim Kompilieren in native Binärdateien. Das Geheimnis ist, dass die JITs zur Laufzeit Dinge bemerken können, die die Basis-Compiler nicht konnten, weil sie die Programmausführung beobachten können.

Der größte Name ist möglicherweise Emscripten, eine modifizierte Version von LLVM, die neu verkabelt wird, um Anweisungen für asm.js anstelle von Maschinencode auszuspucken. Das Geheimnis ist, dass asm.js eine schmale Teilmenge von JavaScript ist, die von den neuesten JavaScript-Engines wie SpiderMonkey problemlos optimiert werden kann. Die Ergebnisse sind beeindruckend und einige der besten Beweise stammen aus der Gaming-Community. Sowohl die Unity- als auch die Unreal-Engine können Spiele in HTML5-kompatiblen Browsern ausführen.

Python

Python ist eine weitere beliebte dynamische Sprache, die sich problemlos auf JavaScript abbilden lässt. Viele der internen Funktionen sind ähnlich, und einige der größten Unterschiede liegen in der Syntax.

Einfachere Optionen wie RapydScript und PyvaScript bieten lediglich eine Python-ähnliche Syntax, die ziemlich direkt in JavaScript übersetzt wird. Sie führen einige Transformationen durch, z. B. das Einfügen von geschweiften Klammern, um den mit Leerzeichen eingerückten Blöcken zu entsprechen, und voilà - es wird in einem Browser ausgeführt. Diese sind eher für Programmierer gedacht, die in JavaScript denken, aber Pythonisch tippen möchten, wie die Sprachliebhaber sagen.

Komplexere Versionen wie PYXC-PJ und Pyjs konvertieren Python aktiv in JavaScript und erstellen häufig etwas, das gut lesbar ist - oder zumindest so gut lesbar wie der Originalcode. Pyjs wird außerdem mit einem Widget-Toolkit geliefert, das dem Google Web Toolkit ziemlich ähnlich ist.

Am meisten Spaß macht jedoch PyPy, eine unglaubliche Leistung der Softwareentwicklung mit fast Rube Goldbergschen Proportionen. Python geht hinein und läuft auf einem Python-Interpreter, der in RPython geschrieben ist, einer Teilmenge von Python, die einfach zu kompilieren ist. Dieses RPython wird dann zu etwas kompiliert, das wie C aussieht und in Emscripten eingespeist werden kann. Die Entwickler behaupten, dass sie einige Python-Benchmarks anzeigen können, die in SpiderMonkey schneller laufen als in CPython.

Wenn sie das mit Python und C können, können Sie das auch.

JavaScript in einem anderen Kostüm

Selbst wenn es um JavaScript geht, haben Sie natürlich Alternativen. Schließlich mögen manche Leute Satzzeichen und andere nicht. CoffeeScript ist für Leute, die es nicht tun. Wenn Sie in JavaScript programmieren müssen, aber nicht so viele Semikolons oder geschweifte Klammern eingeben möchten, ist CoffeeScript genau das Richtige für Sie.

Die Eingeweide von CoffeeScript sind die gleichen wie bei JavaScript, da es sich nicht wirklich um eine Sprache handelt. Es ist ein Präprozessor, der Semikolons und geschweifte Klammern hinzufügt, sodass Sie dies nicht tun müssen. Sie tippen Ihr Programm in Ruby-ähnlicher Einfachheit aus und CoffeeScript konvertiert es in eine minimierte Version von JavaScript.

Dies ist nicht dasselbe wie das Programmieren in einer anderen Sprache, da sich die von Ihnen definierten Variablen und Funktionen weiterhin wie JavaScript-Variablen und -Funktionen verhalten. Die Variablen werden weiterhin dynamisch typisiert, und all die kleinen Verschlimmerungen bleiben bestehen. Das mathematische und eichhörnchenhafte, überladene Verhalten des Plus-Operators wird Sie immer noch zermürben, aber Sie sparen Zeit beim Tippen.

Die CoffeeScript-Welt ist bemerkenswert vielfältig. Als die Welt erkannte, dass sie ihren Code vorverarbeiten konnte, kamen viele ins Spiel. Iced CoffeeScript zum Beispiel ähnelt normalem CoffeeScript, enthält jedoch einige zusätzliche Konstrukte, mit denen asynchrone Aufrufe sauberer und einfacher zu tippen und zu lesen sind. Möglicherweise gibt es mindestens ein Dutzend Cousins, die anbieten, Ihren speziellen Programmierstil zu vereinfachen.

Zum Thema passende Artikel

  • 7 Gründe, warum Frameworks die neuen Programmiersprachen sind
  • 7 zeitlose Lektionen zum Programmieren von 'Graubärten'
  • 9 innovative Sprachen, die es wert sind, jetzt gelernt zu werden
  • Download: Der Business Survival Guide des professionellen Programmierers
  • Download: Technologie des Jahres 2015 Awards
  • Download: 29 Tipps für den Erfolg als unabhängiger Entwickler
  • Rückblick: Die vier großen Java-IDEs verglichen
  • Download: Praktisch mit 10 JavaScript-Editoren und IDEs
  • 10 Kämpfe toben um die Herzen und Gedanken der Entwickler
  • Angriff der Ein-Buchstaben-Programmiersprachen
  • PHP vs Node.js: Ein epischer Kampf um Entwickler
  • 15 Technologien verändern die Arbeitsweise von Entwicklern
  • 12 Vorhersagen für die Zukunft der Programmierung
  • 15 heiße Programmtrends - und 15 werden kalt
  • Entwicklung: Begrüßung von 19 Generationen von Computerprogrammierern
  • 10 Funktionen, die wir in HTML6 sehen wollen