Lernen über Java-Bytecode und die JVM
-
05-07-2019 - |
Frage
In einer aktuellen Frage gestellt vor kurzem meiner einfältig Antwort viele meiner Missverständnisse über Java hervorgehoben, die JVM, und wie wird der Code kompiliert und ausgeführt werden. Dies hat den Wunsch in mir geschaffen, um mein Verständnis auf ein niedrigeres Niveau. Ich habe keine Probleme mit dem niedrigen Niveau Verständnis wie Montage wie auch immer Bytecode und die JVM mich verwechseln. Wie objektorientierter Code gebrochen wird auf einem niedrigen Niveau nach unten ist für mich verloren. Ich habe mich gefragt, ob jemand irgendwelche Vorschläge auf hatte, wie über die JVM-Bytecode und die unteren Ebene Funktionsweise von Java zu lernen. Gibt es irgendwelche Dienstprogramme gibt, mit denen Sie direkt schreiben und laufen Bytecode als ich die Hände auf Erfahrung mit etwas glauben, dass der beste Weg ist, in Verständnis zu wachsen? Zusätzlich und Anregungen zu diesem Thema lesen würde geschätzt.
Edit: Secondary Frage. So habe ich ein bisschen Unter Frage, gab die Antworten mir eine interessante Idee über die jvm zu lernen, was würden die Plausibilität eine wirklich einfache Sprache wie Brainf des Schreibens ** k oder Ook nur in einer lesbaren Syntax (vielleicht könnte ich es sogar entwickeln zu unterstützen oo schließlich), die Bytecode kompiliert in sein? Wäre das eine gute Lernerfahrung sein?
Lösung
nachlesen:. die JVM-Spezifikation
Sie möchten vielleicht auch mit BCEL - es gibt auch andere Bibliotheken um Bytecode für die Manipulation, aber das ist wohl der bekannteste ein.
Andere Tipps
Der Apache BCEL ermöglicht es, zu analysieren und Handfertigkeit .class Dateien von Bytecode.
javap ermöglicht es Ihnen, zu zerlegen bestehende .class-Dateien. Es ist besonders nützlich für schnelle Testklassen Klopfen bis zu verstehen, was wirklich unter der Decke los ist.
Ich habe gelernt, durch das Lesen die ASM-Tutorial und Ausmisten etwa mit der Bibliothek selbst.
IMHO, ist ASM besser als BECL.
BCEL wird bereits verwendet erfolgreich in mehreren Projekten, wie Compiler, Optimizern obsfuscators, Code-Generatoren und Analyse-Tools. Leider gibt hat sich nicht viel Entwicklung los gewesen in den letzten Jahren . Fühlen sich frei aushelfen oder Sie möchten vielleicht ein haben Blick in das ASM-Projekt an ObjectWeb. - http://jakarta.apache.org/bcel/
Es gibt nur eine zuverlässige Quelle für JVM Verständnis
Die Java ® Virtual Machine Specification Java SE 7 Ausgabe
http://docs.oracle.com/javase/ specs / JVMs / SE7 / html / index.html
Programmierung für die Java Virtual Machine ein gutes Buch zu diesem Thema. (Disclosure:. Ich mit dem Autor arbeiten)
Für das Verständnis Java / die Architektur der JVM: s. Wikipedia, die Spezifikationen und den Quellcode
Für das Verständnis, wie objektorientierter Code auf einem niedrigen Niveau durchgeführt wird. Versuchen und emulieren Features wie Vererbung / Polymorphismus / Verkapselung in einer unteren Ebene Sprache wie C
In C Sie die oben durch, zum Beispiel zu erreichen, eine Kombination von Funktionszeigern und verschachtelten Strukturen.