Sono davvero fatica a capire la cosa seguenteQual è l'uso di JVM se JIT è di eseguire la conversione bytecode di istruzioni macchina
In precedenza lo so:
Quando un programma Java viene compilato verrà generato .class
di file . In quel codice è sotto forma di byte. Quindi lo JVM
tradurrà quel codice byte in un formato comprensibile dalla macchina.
Ora vedo in one of the questions in SO
A Just-In-Time (JIT) è una caratteristica della fase di esecuzione interprete, che invece di interpretare il bytecode ogni volta un metodo viene richiamato, sarà compilare il bytecode in codice macchina istruzioni della macchina che esegue
Così qui JIT è la conversione del bytecode di istruzioni macchina. Allora a cosa serve JVM. Siamo in grado di farlo con JIT. A mia conoscenza, il JIT è solo per migliorare le prestazioni di JVM.
Grazie in anticipo ..
Ma vedo l'istruzione JIT compila l'intero file di classe una volta.Ma nella tua dichiarazione jvm sta facendo la compilazione.Si prega di spiegare – Anusha
@Anusha yah ... JVM fa la compilazione [riga per riga] un interprete nativo per java..but JIT è opzionale, che compila anche, non tutto solo i metodi/le funzioni necessari. Per un caso considerare: Il compilatore JIT non controlla le condizioni al contorno Java come le eccezioni del puntatore Null o della matrice fuori dai limiti. L'unico modo in cui il compilatore JIT sa di avere un'eccezione di puntatore nullo è un segnale generato dal sistema operativo. –
Questo è semplicemente sbagliato. Il compilatore Java javac analizza il codice sorgente Java e lo compila su bytecode Java (indipendente dalla macchina), i tuoi file .class. Il compilatore JIT compila quel codice bytecode al codice macchina nativo (specifico dell'architettura della CPU). Il codice macchina di output JIT esegue ancora il controllo dei limiti e la gestione delle eccezioni Java. – arjunyg