Pergunta

Em uma recente pergunta pediu recentemente minha resposta mente simples destacou muitos dos meus equívocos sobre Java, a JVM, e como o código é compilado e executado. Isso criou um desejo em mim para tirar o meu entendimento a um nível inferior. Não tenho problemas com a compreensão de baixo nível, como a montagem como sempre bytecode eo JVM me confundir. Como código orientado objeto é quebrado para baixo em um nível baixo está perdido para mim. Fiquei me perguntando se alguém tinha alguma sugestão sobre como aprender sobre a JVM, bytecode eo nível mais baixo funcionamento do Java. Há algum utilitários lá fora, que lhe permitem escrever e bytecode executado diretamente como eu acredito mãos sobre a experiência com algo é a melhor maneira de crescer na compreensão dele? Além disso e ler sugestões sobre este tema seria apreciada.

Edit: questão secundária. Então, eu tenho uma pergunta meio sub, as respostas me deu uma ideia interessante para aprender sobre a JVM, o que seria a plausibilidade de escrever uma linguagem muito simples, como brainf ** k ou Ook apenas em uma sintaxe legível (talvez eu poderia até mesmo desenvolvê-lo para oo apoio eventualmente) que compila para bytecode ser? Teria que ser uma boa experiência de aprendizagem?

Foi útil?

Solução

Sugestão de leitura:. a JVM especificação

Você também pode querer jogar com BCEL - existem outras bibliotecas ao redor para manipulação de bytecode, mas isso é provavelmente o melhor conhecido.

Outras dicas

Apache BCEL lhe permitirá analisar e artesanato mão .class de bytecode.

javap lhe permitirá desmontar arquivos .class existente. É particularmente útil para bater-se classes de teste rápido para entender o que realmente está acontecendo debaixo das cobertas.

Eu aprendi lendo o ASM tutorial e mucking com a própria biblioteca.

IMHO, ASM é melhor do que BECL.

BCEL já está sendo usado com sucesso em vários projectos tais como compiladores, optimizadores, obsfuscators, geradores de código e ferramentas de análise. Infelizmente não não tem sido muito desenvolvimento em curso ao longo dos últimos anos . Sinta-se livre para ajudar ou você pode querer ter um olhar para o projeto ASM, ObjectWeb. - http://jakarta.apache.org/bcel/

Há apenas uma fonte confiável para a compreensão JVM

O Java® Virtual Machine Specification Java SE 7 Edição

http://docs.oracle.com/javase/ specs / JVMs / SE7 / html / index.html

programação para o Java Virtual Machine é um bom livro para este tópico. (Divulgação:. Trabalho que com o autor)

Para entender Java / da JVM arquitetura:. Leia Wikipedia, as especificações e o código-fonte

Para entender como o código orientado a objeto é feito em um nível baixo:. Tentativa e características Emulate como herança / polimorfismo / encapsulamento em uma linguagem de baixo nível como C

Em C você pode conseguir o meio acima, por exemplo, uma combinação de ponteiros de função e estruturas aninhadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top