Nein, ich code noch am JIT Compiler. Der Kernel ist aber schon komplett fertig. Ich habe schon einen kleinen Compiler für Java fertiggestellt, der aber nur AOT compilieren kann. Er kann eigentlich alles bis auf syncronisierte Threads compilieren. Jetzt arbeite ich an einer verbesserten Fassung des Compilers, der auch eine Optimierungen enthalten soll. Der alte Compiler benutzte den nativen Stack als Operand Stack, der neue benutzt die Register des Prozessors, um die Operandstackdaten zu speichern. Er ist ausserdem modularer aufgebaut und wird später eventuell mal .NET unterstützen können (zumindest von der groben Architektur her). Der Compiler ist selbst auch in Java geschrieben, kann sich aber selbst AOT compilieren und dann ausgeführt werden.
Ich hatte vor, alle Treiber in Java zu coden. Daher habe ich nur ein kleines Lowlevel Interface, um die Funktionen der Architektur zu nutzen. Es enthällt nur Funktionen für Speicher und IO-Port Zugriff, sowie einige Assemblerfunktionen, um manche Sachen zu optimieren. (System.arraycopy(), Umwandlung long/unsigned int usw.)
Bei mir läuft der gesammte Javacode in Ring0. Ring1 und Ring2 werden aus Kompatibilitätsgründen zu anderen Prozessoren und da es keinen wirklichen Vorteil brächte nicht genutzt. In Ring3 können immernoch Programme ausgeführt werden, die nicht in einer sicheren Sprache geschrieben sind, und ich plane, dafür noch einen POSIX Wrapper bereitzustellen. Ich nutze einen Hybrid-Kernel, der Treiber als Module sowie Prozesse ermöglicht.
Eventuell könnten wir zusammen an einem JIT Compiler coden, das würde die Arbeit erheblich vereinfachen.