{"id":1938,"date":"2013-06-23T20:00:13","date_gmt":"2013-06-23T18:00:13","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1938"},"modified":"2013-06-23T20:00:13","modified_gmt":"2013-06-23T18:00:13","slug":"javascript-rhino-und-nashorn","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/06\/javascript-rhino-und-nashorn\/","title":{"rendered":"JavaScript, Rhino und Nashorn"},"content":{"rendered":"<p>Java ist zwar eine tolle Allround-Programmiersprache, aber die explizite Typisierung und der Zwang, Klassen und Methoden zu deklarieren, machen Java nicht wirklich attraktiv f\u00fcr Skripte, wo eher die Kompaktheit z\u00e4hlt und wo keine lang zu pflegenden Programme entstehen. Um die JVM und die Java-Bibliotheken auch zur Automatisierung von Abl\u00e4ufen einzusetzen, l\u00e4sst sich neben der Java-Syntax auch alternative Programmiersprachen einsetzen.<\/p>\n<p>JavaScript ist eine flexible interessante Programmiersprache, die mittlerweile auch au\u00dferhalb von Browsern popul\u00e4r ist, serverseitig eingesetzt wird und auch f\u00fcr die Entwicklung von Desktop-Anwendung \u2013 siehe Gnome 3, WinRT, Chrome Apps oder FirefoxOS.<\/p>\n<p>Das Oracle JDK\/OpenJDK bzw. das JRE<a href=\"file:\/\/\/C:\/Users\/Christian\/Dropbox\/Insel\/2\/#_ftn1_8057\" name=\"_ftnref1_8057\">[1]<\/a> bringt ab Java 6 neben dem Java-Compiler eine JavaScript-Engine und ein Kommandozeilentool mit, das Sprite ausf\u00fchrt. So l\u00e4sst sich JavaScript als alternative Programmiersprache einsetzen \u2013 die Sprache ist also auswechselbar und steht versinnbildlicht auf den Bibliotheken und der Laufzeitumgebung. Auch l\u00e4sst sich die JavaScript-Umgebung in eigene Java-Programme einbetten und integrieren.<\/p>\n<p>Die Java-Distribution liefert eine JavaScript-Engine aus, die sich allerdings von Java 6 auf Java 8 ver\u00e4ndert hat.<\/p>\n<p>\u00b7 Java 6, Java 7: Rhino (https:\/\/developer.mozilla.org\/en-US\/docs\/Rhino). Die JavaScript-Engine \u2013 in Java programmiert \u2013 kommt von Mozilla und basiert auf einer Implementierung von Netscape, die ihren Browser damals komplett in Java schreiben wollten. Die Browser-Implementierung \u201eJavagator\u201c wurde zwar eingestellt, doch die JavaScript-Umgebung lebte weiter und Sun lizenzierte die Technologie und bettete sie (minimal ver\u00e4ndert) in Java 6 und Java 7 ein.<\/p>\n<p>\u00b7 Ab Java 8: Nashorn (http:\/\/openjdk.java.net\/projects\/nashorn\/, http:\/\/openjdk.java.net\/jeps\/174). Oracle entwickelte von Grund auf eine ganz neue JavaScript-Engine, die den Code ohne Interpretation direkt in Bytecode \u00fcbersetzt und eine exzellente Performance und Kompatibilit\u00e4t mit ECMAScript-262 Edition 5.1 zeigt. Obwohl die JavaScript Edition 6 noch keine Rolle spielt, unterst\u00fctzt Nashorn einige Spracherweiterungen, etwa Abk\u00fcrzungen f\u00fcr Lambda-Ausdr\u00fccke. Da Nashorn nur JavaScript selbst unterst\u00fctzt, Rhino aber noch einige Mozilla-Bibliotheken, kommt es zu Inkompatibilit\u00e4ten, falls Nashorn unreines JavaScript ausf\u00fchren soll.<\/p>\n<hr align=\"left\" size=\"1\" width=\"33%\" \/>\n<p><a href=\"file:\/\/\/C:\/Users\/Christian\/Dropbox\/Insel\/2\/#_ftnref1_8057\" name=\"_ftn1_8057\">[1]<\/a> Bei anderen Java SE-Implementierungen muss das nicht zwingend gegeben sein.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java ist zwar eine tolle Allround-Programmiersprache, aber die explizite Typisierung und der Zwang, Klassen und Methoden zu deklarieren, machen Java nicht wirklich attraktiv f\u00fcr Skripte, wo eher die Kompaktheit z\u00e4hlt und wo keine lang zu pflegenden Programme entstehen. Um die JVM und die Java-Bibliotheken auch zur Automatisierung von Abl\u00e4ufen einzusetzen, l\u00e4sst sich neben der Java-Syntax [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11,66],"tags":[],"class_list":["post-1938","post","type-post","status-publish","format-standard","hentry","category-insel","category-java-8"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1938","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1938"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1938\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}