Domanda

In una recente domanda posta di recente, la mia semplice risposta ha evidenziato molti dei miei malintesi su Java, JVM e su come il codice viene compilato ed eseguito. Ciò ha creato in me il desiderio di portare la mia comprensione a un livello inferiore. Non ho problemi con la comprensione di basso livello come il montaggio quanto mai bytecode e JVM mi confondano. Mi viene perso il modo in cui il codice orientato agli oggetti viene suddiviso a basso livello. Mi chiedevo se qualcuno avesse qualche suggerimento su come imparare a conoscere la JVM, il bytecode e il funzionamento di livello inferiore di Java. Ci sono utilità là fuori che ti permettono di scrivere ed eseguire direttamente bytecode poiché credo che l'esperienza diretta con qualcosa sia il modo migliore per crescere nella comprensione di esso? Inoltre, sarebbe gradito leggere suggerimenti su questo argomento.

Modifica: domanda secondaria. Quindi ho una sorta di sotto-domanda, le risposte mi hanno dato un'idea interessante da imparare sul jvm, quale sarebbe la plausibilità di scrivere un linguaggio davvero semplice come brainf ** k o Ook solo in una sintassi leggibile (forse potrei persino svilupparlo supportare oo eventualmente) che compila in bytecode essere? Sarebbe una bella esperienza di apprendimento?

È stato utile?

Soluzione

Lettura consigliata: le specifiche JVM .

Potresti anche voler giocare con BCEL - ci sono altre librerie in giro per manipolare il bytecode, ma quello è probabilmente il più noto.

Altri suggerimenti

Il Apache BCEL ti permetterà di analizzare e creare a mano file .class da bytecode.

javap ti permetterà di smontare file .class esistenti. È particolarmente utile per bussare alle lezioni di test rapido per capire cosa sta realmente succedendo sotto le copertine.

Ho imparato leggendo il tutorial ASM e scherzando con la libreria stessa.

IMHO, ASM è meglio di BECL.

  

BCEL è già in uso   con successo in diversi progetti come   come compilatori, ottimizzatori,   oscuratori, generatori di codice e   strumenti di analisi. Purtroppo lì   non c'è stato molto sviluppo in corso   negli ultimi anni . Sentiti libero di   aiuto o potresti voler avere un   guarda il progetto ASM su   ObjectWeb.   - http://jakarta.apache.org/bcel/

Esiste una sola fonte affidabile per la comprensione di JVM

Specifiche Java® Virtual Machine Specification Java SE 7 Edition

http://docs.oracle.com/javase/ spec / JVM / SE7 / html / index.html

Programmazione per la macchina virtuale Java è un buon libro per questo argomento. (Divulgazione: lavoro con l'autore.)

Per comprendere Java / l'architettura di JVM: leggi Wikipedia, le specifiche e il codice sorgente.

Per capire come il codice orientato agli oggetti viene eseguito a un livello basso: prova ad emulare funzioni come eredità / polimorfismo / incapsulamento in un linguaggio di livello inferiore come C.

In C puoi ottenere quanto sopra attraverso, ad esempio, una combinazione di puntatori a funzione e strutture nidificate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top