Lernen über Java-bytecode und die JVM
In einer letzten Frage vor kurzem meine simple minded Antwort markiert viele meiner falschen Vorstellungen von Java, der JVM, und wie der code wird kompiliert und ausgeführt. Dies hat den Wunsch in mir, mich zu meinem Verständnis auf einem niedrigeren Niveau. Ich habe keine Probleme mit dem low-level-Verständnis haben, wie die Montage wie auch immer, bytecode und die JVM verwirren mich. Wie der Objekt-orientierten code wird heruntergebrochen auf einem niedrigen Niveau ist mir verloren. Ich Frage mich, ob jemand irgendwelche Vorschläge, wie zu lernen über die JVM, bytecode und die untere Ebene Funktionsweise von Java. Gibt es utilities gibt, die Ihnen erlauben, zu schreiben und ausführen von bytecode direkt, wie ich glaube, die Hände auf Erfahrung mit so etwas ist der beste Weg, um zu wachsen, zu verstehen? Zusätzlich und Lesen Anregungen zu diesem Thema würde sehr geschätzt.
Edit: Zweite Frage. Also ich habe ein bisschen sub-Frage, die Antworten Gaben mir eine interessante Idee zu lernen, über die jvm, was würde die Plausibilität des Schreibens eine wirklich einfache Sprache wie brainf**k oder Auch nur in eine lesbare syntax (hätte ich das vielleicht auch entwickeln, es zu unterstützen, oo irgendwann), dass in bytecode kompiliert werden? Wäre das eine gute Erfahrung?
- +1 für die Erteilung von brainf**k das Attribut "einfach"; -)
- Ich denke, "einfach" verwendet " im Sinne von klein, Komplexität, nicht Einfachheit der Benutzung 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Empfohlene Lektüre: die JVM-spec.
Möchten Sie vielleicht auch, um mit zu spielen BCEL - gibt es weitere Bibliotheken, etwa für die Manipulation von bytecode, aber das ist wohl auch der bekannteste.
Den Apache BCEL wird Ihnen erlauben, zu analysieren und Handarbeit .die class-Dateien von bytecode.
javap erlauben wird, Sie zu zerlegen bestehenden .class-Dateien. Es ist besonders nützlich für das klopfen, bis quick-test-Klassen, um zu verstehen, was wirklich vor sich geht unter der Decke.
Habe ich gelernt, durch das Lesen die ASM-tutorial und ausmisten über die mit der Bibliothek selbst.
IMHO, ASM ist besser als BECL.
the ASM tutorial
gegangen ist totGibt es nur eine zuverlässige Quelle für die JVM Verständnis
Java® Virtual Machine Specification, Java SE 7 Edition
http://docs.oracle.com/javase/specs/jvms/se7/html/index.html
Programmieren für die Java Virtual Machine ist ein gutes Buch zu diesem Thema. (Offenlegung: ich arbeite mit dem Autor.)
Verständnis für Java/JVM-Architektur: Wikipedia Lesen, die Spezifikationen und den source code.
Für das Verständnis, wie Objekt-orientierte code ist auf einem niedrigen Niveau: versuchen und zu emulieren, features wie Vererbung/Polymorphismus/Kapselung in eine untere-level-Sprache wie C.
In C können Sie die Erreichung der oben genannten, zum Beispiel durch eine Kombination von Funktionszeigern und geschachtelte Strukturen.