{"id":1584,"date":"2012-11-01T23:57:51","date_gmt":"2012-11-01T21:57:51","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1584"},"modified":"2012-11-01T23:57:51","modified_gmt":"2012-11-01T21:57:51","slug":"wie-kann-ein-java-compiler-in-java-implementiert-sein","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2012\/11\/wie-kann-ein-java-compiler-in-java-implementiert-sein\/","title":{"rendered":"Wie kann ein Java-Compiler in Java implementiert sein?"},"content":{"rendered":"<p>Der Java-Compiler von Oracle und der Java-Compiler der Entwicklungsumgebung Eclipse sind selbst in Java implementiert und generieren diesen Bytecode (es gibt aber auch Java-Compiler in C++, wie den Jikes-Compiler. Nat\u00fcrlich gibt es da ein Henne-Ein-Problem: wie sollte ein neuer in Java geschriebener Compiler durch Java \u00fcbersetzt werden? Daher entsteht der erste Compiler immer in einer anderen Sprache, und die \u00fcbersetzt eine kleine Teilmenge der Zielsprache, und dann wird ein neuer Compiler in der Minisprache entwickelt. Im n\u00e4chsten Schritt wachsen und vergr\u00f6\u00dfern sich Grammatik und Compiler. In der Sprache der Compilerbauer hei\u00dft der Prozess Bootstrapping. Bei Java war das ein Prozess \u00fcber mehrere Stufen. Patrick Naughton schreibt im Buch <i>The Java handbook<\/i> dazu: \u201cArthur van Hoff rewrote the compiler in Oak itself, replacing the C version that James originally wrote.\u201c<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Java-Compiler von Oracle und der Java-Compiler der Entwicklungsumgebung Eclipse sind selbst in Java implementiert und generieren diesen Bytecode (es gibt aber auch Java-Compiler in C++, wie den Jikes-Compiler. Nat\u00fcrlich gibt es da ein Henne-Ein-Problem: wie sollte ein neuer in Java geschriebener Compiler durch Java \u00fcbersetzt werden? Daher entsteht der erste Compiler immer in einer [&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],"tags":[],"class_list":["post-1584","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1584","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=1584"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1584\/revisions"}],"predecessor-version":[{"id":1585,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1584\/revisions\/1585"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}