Il compilatore java si monta?


Quindi gcc o qualsiasi compilatore C compilerà il sorgente in x86 o nel rispettivo linguaggio Assembly, quindi assemblerà l'assembly in binario e quindi lo collegherà per creare un eseguibile. La mia domanda è se il compilatore java contiene un assemblatore? Il significato è che c'è un arresto intermedio perché capisco che bytecode non è un codice macchina ma è memorizzato come binario e non è neanche testo normale. Presumo che sia solo il bytecode basato sul testo memorizzato in formato binario, ma davvero non lo so.

Author: fuz, 2015-02-26

2 answers

Come hai detto tu, il compilatore Java genera bytecode. Questo bytecode entra quindi nella macchina virtuale Java che magicamente "fa accadere il codice". Poiché la JVM è una specifica che ha più implementazioni, questa parte magica può essere compilata Just In Time o semplicemente interpretata. Domanda correlata qui .

Quindi per rispondere alla tua domanda, no, il compilatore java non contiene un assemblatore. La JVM può contenerne uno ma non è costretta a farlo perché è un'implementazione dettaglio.

 6
Author: Ruben Vereecken, 2017-05-23 11:45:32

Il compilatore Java genera codice byte in un formato binario che viene poi tradotto in codice macchina in fase di runtime dalla Java Virtual Machine (JVM). È importante che questo passaggio avvenga in fase di esecuzione perché consente ai programmi Java di funzionare su più piattaforme senza ricompilazione.

È possibile osservare il bytecode in un file di classe utilizzando l'utilità javap che fa parte del Java Development kit (JDK). È possibile assemblare il proprio bytecode utilizzando un'utilità come Jasmin, il Assemblatore Java.

 3
Author: fuz, 2015-02-26 11:47:56