Jikes RVM è probabilmente l'implementazione JVM più importante scritta in Java. Tuttavia, la sua implementazione di livello più basso consiste semplicemente in chiamate di metodo statico a un'interfaccia "magica" che viene trattata appositamente dal compilatore e tradotta in codice nativo.
Il Maxine VM (sviluppato originariamente da Sun Labs, ora Oracle Labs) è un vero e proprio metacircular VM , in cui non solo tutto ciò che è scritto in Java, ma non v'è alcuna speciale involucro nel compilatore in corso. Ancor più: non solo la VM Maxine è scritta in Java, ma funziona anche con lo di per sé! Questo potrebbe sembrare folle e, per essere sincero, non ho idea di come funzioni, ma è basato sullo Klein VM (sviluppato da Sun Labs) che fa la stessa cosa per il linguaggio di programmazione Self.
Questo ha alcune proprietà molto interessanti: poiché la JVM stessa fa parte della base di codici che la JVM interpreta, la stessa base di codici a cui appartiene il codice utente, ciò significa che può fare ottimizzazioni come l'inlining attraverso il limite della VM. IOW: può integrare il codice VM nel codice utente e viceversa. Significa anche che la VM stessa è soggetta alle stesse ottimizzazioni di runtime e ottimizzazioni dinamiche che – su altre VM (anche includendo Jikes) – solo il codice utente è, il che significa che la VM stessa viene costantemente ricompilata e ri ottimizzato per adattarsi ai carichi variabili, caricare nuove classi, modificare i profili, modificare i modelli di utilizzo e così via.
Su macchine virtuali come HotSpot, JRockit, J9 e altri, queste ottimizzazioni sono impossibili, per il semplice motivo che la JVM sa solo come ottimizzare il bytecode JVML, ma la VM non è scritta in Java. Ma anche in Jikes, questo non è possibile perché, mentre la VM è scritta in Java, viene staticamente compilata nel codice nativo prima dello e il codice della VM stessa non fa parte del codice che la VM "vede ".
Lo Squawk VM è anche una JVM sviluppata da Sun Labs, ora Oracle Labs. A differenza di Maxine, che è approssimativamente simile a J9, HotSpot o JRockit nel suo pubblico di destinazione, Squawk è più simile al KVM (originariamente sviluppato da Sun, ora Oracle), ovvero indirizzato ai dispositivi embedded con risorse limitate. Squawk è anche ispirato da Klein. A differenza di Maxine, ha un piccolo livello di astrazione scritto in C. Ma tieni a mente che Maxine richiede l'esecuzione di un sistema operativo, mentre Squawk funziona senza un sistema operativo. Quindi, in un certo senso, Squawk è persino più puro di Maxine, perché molte parti che non fanno parte di Maxine ma fanno parte del sistema operativo (dove sono spesso implementate in C, C++ o altri linguaggi di basso livello), sono in realtà parte di Squawk si. I driver di dispositivo, ad esempio, sono scritti in Java. Solo un piccolo livello di astrazione hardware e le librerie I/O sono scritte in C.
Ho trovato progetti simili a seguito dei collegamenti alle pagine delle FAQ di Maxine VM: Joeq, OVM e Moxie. Joeq fa riferimento a JavaInJava e Rivet System, a sua volta. Grazie mille per la tua risposta. – mschonaker
Squawk alimenta il SunSPOT –