Interpret může při prvním průchodu nahradit kritickou instrukci odpovídající quick instrukcí, aby při pozdějších průchodech bylo její vykonání rychlejší.
Novější JVM také zpravidla obsahují JIT - 'just in time' kompilátor, který za běhu analyzuje kritické tj. často využívané části kódu a ty přeloží do nativního kódu procesoru, aby tak zrychlil jejich běh.
Další možností jsou přímé překlady ze zdrojových souborů .java do nativního kódu procesoru. Zde jsou možné dva přístupy.
Buď se vytvářejí samostatné aplikace, které však musí obsahovat značnou část run-time virtuálního stroje (jako například garbage collector). Tím pádem se i malá aplikace stane rozsáhlou. Cenou za kvalitní kód a to, že není potřeba JVM implementovaná pro danou platformu, je ztráta přenositelnosti.
Nebo se ze zdrojového souboru generují speciální soubory obsahující nativní kód, které jsou obdobou souborů .class. K vykonání takových souborů se použije JVM, která už pracuje nad přeloženým nativním kódem a obsahuje potřebný runtime.
Velkou výhodou obou předchozích přístupů je možnost několikaúrovňové a tedy velmi kvalitní optimalizace generovaného kódu. Nevýhodou je pomalejší kompilace.
JVM Lógr kombinuje předchozí přístupy - překládá po jednotlivých
třídách do nativního kódu procesoru, ale nikoliv ze zdrojových textů,
ale ze souborů .class. Lógr (stejně jako JIT kompilátory) využívá
formátu bajtového kódu, který byl navržen tak, aby generování kódu z
něj nebylo obtížné a dávalo poměrně dobrý kód. Bajtový kód ze souborů
.class, které má Lógr provést, tedy není interpretován, ale kompletně
se přeloží do nativního kódu procesoru (v našem případě Intel). Jednou
přeložené třídy se ukládají, a tak postačuje při jejich opětovném
natažení zkontrolovat, zda se odpovídající .class soubor
nezměnil. Překlad se provede pouze pokud odpovídající soubor .logr
neexistuje nebo pokud byla detekována změna souboru .class a .logr se
tak stal neaktuálním. Navenek se JVM Lógr chová jako klasická JVM
(např. java z JDK). Zůstává veškeré její chování jako lazy dotahování
tříd. Veškerý run-time je uvnitř JVM Lógr. Uživatel tedy může přímo,
místo aby použil interpret java, použít logr. Nejsou nutné žádné
kompilace ani úpravy kódu. Dále žádným způsobem nezanáší do
.class souborů nativní kód - ten je naprosto
izolován. Tím nenarušuje známé heslo technologie Java write once run
everywhere. Generované soubory .logr slouží pouze pro potřebu JVM
Lógr.
V JVM Lógr tedy zůstává výhoda přenositelnosti jazyka Java a nabízí
JVM šitou na míru dané platformě, čímž umožňuje aplikacím rychlejší
běh.