{"id":132,"date":"2008-03-05T11:16:00","date_gmt":"2008-03-05T11:16:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=132"},"modified":"2008-03-05T11:16:00","modified_gmt":"2008-03-05T11:16:00","slug":"alternative-sprachen-fur-die-und-auf-der-jvm","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2008\/03\/alternative-sprachen-fur-die-und-auf-der-jvm\/","title":{"rendered":"Alternative Sprachen f\u00fcr die und auf der JVM"},"content":{"rendered":"<p>Java hat seine Monopolstellung eingeb\u00fc\u00dft \u2013 die hochoptimierte JVM und die umfangreichen Java-Bibliotheken lassen sich mittlerweile durch alternative Programmiersprachen nutzen. Auf der einen Seite existieren klassische Interpreter und Compiler f\u00fcr existierende Sprachen, wie Ruby, Prolog, LISP, BASIC, Python, die bestm\u00f6glich auf die Java-Umgebung portiert werden. Auf der anderen Seite sind es ganz neue Programmiersprachen (wie Groovy), die sich als echte Alternative zur Programmiersprache Java etablieren. Skriptsprachen werden oft \u00fcber die <a href=\"http:\/\/www.jcp.org\/en\/jsr\/detail?id=223\">JSR 223: Scripting for the Java Platform<\/a>, einer standardisierten API, angesprochen. <\/p>\n<h4>JavaScript<\/h4>\n<p>Seit Java 6 ist \u00fcber <a href=\"http:\/\/www.mozilla.org\/rhino\/\">Rhino<\/a> \u2013 ein Projekt der Mozilla Foundation \u2013 eine JavaScript-Laufzeitumgebung integriert. Die Script-Engine erlaubt die dynamische \u00dcbersetzung in Bytecode, was schnelle Ausf\u00fchrungszeiten der prozeduralen, funktionalen, objektorientierten Programmiersprache garantiert. <\/p>\n<h4>Groovy<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"50\" alt=\"[Logo]\" src=\"http:\/\/media.xircles.codehaus.org\/_projects\/groovy\/_logos\/small.png\" width=\"101\" align=\"right\"><a href=\"http:\/\/groovy.codehaus.org\/\">Groovy<\/a> bietet eine starke Syntax mit Closures, Listen\/Mengen, Regul\u00e4re Ausdr\u00fccke, eine dynamische und statische Typisierung und vielem mehr. Moderne IDEs wie <a href=\"http:\/\/groovy.codehaus.org\/Eclipse+Plugin\">Eclipse<\/a> oder <a href=\"http:\/\/groovy.codehaus.org\/NetBeans+Plugin\">NetBeans<\/a> unterst\u00fctzen Groovy durch Plugins. Der Groovy-Compiler erzeugt f\u00fcr die Groovy-Klassen den typischen Bytecode, sodass normale Java-Klassen problemlos Groovy-Klassen nutzen k\u00f6nnen \u2013 oder umgekehrt. Zwei Vortr\u00e4ge zum Einlesen: <\/p>\n<ul>\n<li><a href=\"http:\/\/www.asert.com\/pubs\/Groovy\/Groovy.pdf\">Groovy Tutorial <\/a>(104 Folien)\n<li><a href=\"http:\/\/www.slideshare.net\/jlink\/von-java-zu-groovy\">Von Java zu Groovy<\/a>. W-JAX Workshop (66 Folien) <\/li>\n<\/ul>\n<h4>JRuby<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"50\" alt=\"[Logo]\" src=\"http:\/\/media.xircles.codehaus.org\/_projects\/jruby\/_logos\/small.png\" width=\"112\" align=\"right\"><a href=\"http:\/\/jruby.codehaus.org\/\">JRuby<\/a> ist die Java-Version der dynamisch getypten Programmiersprache <a href=\"http:\/\/www.ruby-lang.org\/\">Ruby<\/a>. Sun besch\u00e4ftigt mit Charles Nutter und Thomas Enebo (die \u203aJRuby Guys\u2039) zwei Entwickler, und bringt auch mit der Integration in die <a href=\"http:\/\/wiki.netbeans.org\/Ruby\">NetBeans IDE<\/a> (J)Ruby weit nach vorne. Ruby wird mit einem Atemzug mit dem Web-Framework <a href=\"http:\/\/www.rubyonrails.org\/\">Ruby on Rails<\/a> genannt, ein Framework f\u00fcr Web-Applikationen, welches dank JRuby auch auf jedem Tomcat und Java Application-Server l\u00e4uft. <\/p>\n<h4>Jython<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"65\" alt=\"[Logo]\" src=\"http:\/\/www.jython.org\/css\/jython.png\" width=\"100\" align=\"right\">Die beliebte Programmiersprache <a href=\"http:\/\/www.python.org\/\">Python<\/a> bringt <a href=\"http:\/\/jython.sourceforge.net\/\">Jython<\/a> auf die Java-Plattform. Auch Jython \u00fcbersetzt Python-Programme in Java-Bytecode und erlaubt relativ schnelle Ausf\u00fchrungszeiten. Jython 2.2 implementiert Python auf 2.2, doch hat sich (C-)Python mit Version 2.6 und 3 schon weiter entwickelt. Auch sonst gibt es <a href=\"http:\/\/jython.sourceforge.net\/docs\/differences.html\">Unterschiede<\/a>, etwa bei den eingebauten (nativen) Funktionen. Sun hat im M\u00e4rz 2008 Ted Leung und Frank Wierzbicki (Hauptentwickler von Jython) eingestellt, um Python auf der JVM weiter zu f\u00f6rdern. <\/p>\n<h4>Scala<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"55\" alt=\"[Logo]\" src=\"http:\/\/www.scala-lang.org\/images\/scala_logo.png\" width=\"80\" align=\"right\"><a href=\"http:\/\/www.scala-lang.org\/\">Scala<\/a> ist eine Funktionale, objektorientierte Programmiersprache, die in der Java-Community gro\u00dfe Zustimmung findet, obwohl sie von Martin Odersky erst 2001 entwickelt und 2004 vorgestellt wurde. Ein <a href=\"http:\/\/www.scala-lang.org\/tools\/eclipse\/index.html\">Eclipse-Plugin<\/a> steht ebenfalls bereit. F\u00fcr die .NET-Plattform gibt es ebenfalls eine Implementierung. Besonders zeichnet Scala ein durchdachtes Typsystem aus. <\/p>\n<h4>Quercus<\/h4>\n<p><a href=\"http:\/\/www.caucho.com\/resin-3.0\/quercus\/index.xtp\">Quercus<\/a> ist eine Implementierung von PHP, welches insbesondere dazu geeignet ist, bestehende und beliebte PHP-Projekte in einer Java-Umgebung ablaufen zu lassen. In der Java-Welt werden zwar nicht alle PHP-Funktionen unterst\u00fctzt, aber es gibt in der Java-Welt keine Speicher\u00fcberl\u00e4ufe oder Sicherheitsprobleme. <\/p>\n<h4>Jatha<\/h4>\n<p><a href=\"http:\/\/jatha.sourceforge.net\/\">Jatha<\/a> ist eine \u203aCommon LISP library in Java\u2039, eine Implementierung von Common LISP. Mit einer API lassen sich LISP-Programme aus Java heraus aufrufen. <\/p>\n<h4>LuaJava<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" height=\"64\" alt=\"[Logo]\" src=\"http:\/\/www.keplerproject.org\/luajava\/luajava_128.png\" width=\"64\" align=\"right\"><a href=\"http:\/\/www.keplerproject.org\/luajava\/\">LuaJava<\/a> implementiert die Programmiersprache <a href=\"http:\/\/www.lua.org\/\">Lua<\/a> f\u00fcr die JVM. Die aus Brasilien stammende dynamisch getypte Programmiersprache Lua z\u00e4hlt zu den performantesten, interpretierten Skriptsprachen. Sie ist in erster Linie als eingebettete Programmiersprache zur Applikationssteuerung entworfen worden; <a href=\"http:\/\/www.lua.org\/uses.html\">prominete Nutzer<\/a> sind Sim City, World of Worcraft, Adobe Photoshop Lightroom, SciTE. <\/p>\n<h4>Pnuts<\/h4>\n<p><a href=\"https:\/\/pnuts.dev.java.net\/\">Pnuts<\/a> geh\u00f6rt zu den schnellsten Skriptsprachen auf der JVM. Die Sprache hat eine einfache Syntax und \u00fcbersetzt Programme ebenfalls in Bytecode. <\/p>\n<h4>JBasic<\/h4>\n<p>Mit <a href=\"http:\/\/jbasic.sourceforge.net\/\">JBasic<\/a> gibt es f\u00fcr die Java-Plattform einen BASIC-Dialekt, der sich an GW-BASIC anlehnt. <\/p>\n<h4>JLog<\/h4>\n<p><a href=\"http:\/\/jlogic.sourceforge.net\/\">JLog<\/a> implementiert einen ISO-Standardisierten PROLOG-Interpreter. JLog l\u00e4uft in einem eigenen Fenster mit Quellcode-Editor, Query-Panel, Hilfe, Debugger, oder es kann in einem eigenen Java-Programm eingebettet werden. <\/p>\n<h4>Jacl<\/h4>\n<p><a href=\"http:\/\/tcljava.sourceforge.net\/\">Jacl<\/a> implementiert einen TCL-Interpreter in Java. Die Entwicklung ist nicht mehr aktiv. <\/p>\n<p>&nbsp; <\/p>\n<p>Die Webseite <a href=\"http:\/\/www.robert-tolksdorf.de\/vmlanguages.html\">http:\/\/www.robert-tolksdorf.de\/vmlanguages.html<\/a> f\u00fchrt weitere Programmiersprachen f\u00fcr die JVM auf. Allerdings sind viele der gelisteten Sprachen f\u00fcr sehr spezielle Anwendungsf\u00e4lle entworfen, experimentell oder werden nicht mehr gepflegt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java hat seine Monopolstellung eingeb\u00fc\u00dft \u2013 die hochoptimierte JVM und die umfangreichen Java-Bibliotheken lassen sich mittlerweile durch alternative Programmiersprachen nutzen. Auf der einen Seite existieren klassische Interpreter und Compiler f\u00fcr existierende Sprachen, wie Ruby, Prolog, LISP, BASIC, Python, die bestm\u00f6glich auf die Java-Umgebung portiert werden. Auf der anderen Seite sind es ganz neue Programmiersprachen (wie [&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":[1],"tags":[],"class_list":["post-132","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/132","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=132"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/132\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}