tabla que programacion maquina interprete funciona ejemplos como codigo java jvm bytecode low-level-code

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?


El BCEL le permitirá analizar y crear archivos .class a mano desde bytecode.

javap le permitirá desensamblar archivos .class existentes. Es particularmente útil para llamar las clases de prueba rápida para comprender lo que realmente sucede debajo de las carátulas.


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.