java - maquina - que es jvm en programacion
Aprendiendo sobre el bytecode de Java y la JVM (6)
Aprendí leyendo el tutorial de ASM y charlando con la biblioteca.
En mi humilde opinión, ASM es mejor que BECL.
BCEL ya se está utilizando con éxito en varios proyectos, como compiladores, optimizadores, obsfuscadores, generadores de códigos y herramientas de análisis. Desafortunadamente no ha habido mucho desarrollo en los últimos años . Siéntase libre de ayudar o si desea echar un vistazo al proyecto ASM en ObjectWeb. - BCEL
Recientemente, en una pregunta reciente, mi sencilla respuesta destacó muchos de mis conceptos erróneos sobre Java, la JVM y cómo se compila y se ejecuta el código. Esto ha creado un deseo en mí de llevar mi comprensión a un nivel inferior. No tengo problemas con el bajo nivel de comprensión como el ensamblado, sin embargo, el bytecode y la JVM me confunden. Cómo se descompone el código orientado a objetos en un nivel bajo, se pierde para mí. Me preguntaba si alguien tenía alguna sugerencia sobre cómo aprender sobre la JVM, el bytecode y el funcionamiento de nivel inferior de Java. ¿Hay utilidades que le permitan escribir y ejecutar bytecode directamente, ya que creo que la experiencia práctica con algo es la mejor manera de aumentar su comprensión? Además, se agradecerán las sugerencias de lectura sobre este tema.
Editar: pregunta secundaria. Así que tengo una pequeña pregunta secundaria, las respuestas me dieron una idea interesante para aprender sobre el jvm, ¿cuál sería la verosimilitud de escribir un lenguaje realmente simple como brainf ** k u Ook solo en una sintaxis legible (tal vez incluso podría desarrollarlo? para admitir oo eventualmente) que compila en bytecode be? ¿Sería esa una buena experiencia de aprendizaje?
Lectura sugerida: la especificación de JVM .
También es posible que desee jugar con BCEL : existen otras bibliotecas para manipular bytecode, pero probablemente sea la más conocida.
Para entender la arquitectura de Java / JVM: lea Wikipedia, las especificaciones y el código fuente.
Para entender cómo se hace el código orientado a objetos en un nivel bajo: intente y emule características como herencia / polimorfismo / encapsulación en un lenguaje de nivel inferior como C.
En C puede lograr lo anterior mediante, por ejemplo, una combinación de punteros de función y estructuras anidadas.
Solo hay una fuente confiable para la comprensión de JVM
La especificación de máquina virtual Java® Java SE 7 Edition
http://docs.oracle.com/javase/specs/jvms/se7/html/index.html
La programación de la Máquina Virtual Java es un buen libro para este tema. (Divulgación: yo trabajo con el autor).