Pregunta

En una pregunta reciente que hice recientemente, mi simple respuesta resaltó muchos de mis conceptos erróneos sobre Java, la JVM y cómo se compila y ejecuta el código. Esto ha creado un deseo en mí de llevar mi comprensión a un nivel inferior. No tengo problemas con la comprensión de bajo nivel, como el ensamblado, como el bytecode y la JVM me confunden. ¿Cómo se descompone el código orientado a objetos en un nivel bajo? Me preguntaba si alguien tenía alguna sugerencia sobre cómo aprender sobre la JVM, el código de bytes y el funcionamiento de Java de nivel inferior. ¿Hay alguna utilidad que le permita escribir y ejecutar bytecode directamente, ya que creo que la experiencia práctica con algo es la mejor manera de entenderlo? Además, se agradecerán las sugerencias de lectura sobre este tema.

Editar: Pregunta secundaria. Entonces, tengo un poco de pregunta secundaria, las respuestas me dieron una idea interesante para aprender sobre el JVM, ¿cuál sería la plausibilidad de escribir un lenguaje muy simple como brainf ** k u Ook solo en una sintaxis legible (tal vez incluso podría desarrollarlo?) para soportar oo eventualmente) que compila en bytecode be? ¿Sería una buena experiencia de aprendizaje?

¿Fue útil?

Solución

Lectura sugerida: la especificación de JVM .

También puedes jugar con BCEL . Hay otras bibliotecas para manipular el código de bytes, pero ese es probablemente el más conocido.

Otros consejos

El Apache BCEL le permitirá analizar y crear manualmente archivos .class de bytecode.

javap le permitirá desensamblar archivos .class existentes. Es particularmente útil para eliminar clases de pruebas rápidas para comprender lo que realmente está pasando debajo de las cubiertas.

Aprendí leyendo el tutorial de ASM y repasando la biblioteca.

En mi humilde opinión, ASM es mejor que BECL.

  

BCEL ya está siendo utilizado   con éxito en varios proyectos tales   como compiladores, optimizadores,   ofuscadores, generadores de código y   herramientas de análisis. Lamentablemente hay   no ha habido mucho desarrollo pasando   en los últimos años . No dude en   ayuda o es posible que desee tener un   mirar en el proyecto ASM en   objectweb.   - http://jakarta.apache.org/bcel/

Solo hay una fuente confiable para la comprensión de JVM

La especificación de la máquina virtual Java® Edición Java SE 7

http://docs.oracle.com/javase/ especificaciones / jvms / se7 / html / index.html

Programar para la Máquina Virtual de Java es un buen libro para este tema. (Divulgación: trabajo con el autor).

Para comprender Java / la arquitectura de la JVM: lea Wikipedia, las especificaciones y el código fuente.

Para comprender cómo se realiza el código orientado a objetos en un nivel bajo: intente y emule características como la herencia / polimorfismo / encapsulación en un lenguaje de nivel inferior como el C.

En C puede lograr lo anterior mediante, por ejemplo, una combinación de punteros de función y estructuras anidadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top