Java implementation of a... JVM? -
some time ago found mjvm project. sadly, project has been abandoned author (i asked igor via email).
i wonder if there (continued) open source project of full implementation of jvm in java one.
by "full", mean, not emulate mobile devices.
the jikes rvm prominent jvm implementation written in java. however, lowest level implementation consists of static method calls "magic" interface treated specially compiler , translated native code.
the maxine vm (developed sun labs, oracle labs) real metacircular vm, in not written in java, there no special-casing in compiler going on. more: not maxine vm written in java, runs in itself! might sound crazy, , frank, have no idea how works, based on klein vm (developed sun labs) same thing self programming language.
this has interesting properties: since jvm part of codebase jvm interprets, same codebase user code belongs to, means can optimizations such inlining across vm boundary. iow: can inline vm code user code , vice versa. means vm subject same runtime profiling , dynamic optimizations that – on other vms (even including jikes) – user code is, means vm gets re-compiled , re-optimized adapt changing loads, new classes being loaded, changing profiles, changing usage patterns , on.
on vms hotspot, jrockit, j9 , others, these optimizations impossible, simple reason jvm knows how optimize jvml bytecode, vm isn't written in java. in jikes, not possible because, while vm written in java, gets statically compiled native code before runs, , code of vm not part of code vm "sees".
the squawk vm jvm developed sun labs, oracle labs. unlike maxine, similar j9, hotspot or jrockit in target audience, squawk more analogous kvm (originally developed sun, oracle), i.e. targeted @ resource-constrained embedded devices. squawk inspired klein. unlike maxine, has small abstraction layer written in c. keep in mind, maxine requires os run, whereas squawk runs without os. so, in sense, squawk purer maxine, because many parts not part of maxine part of os (where implemented in c, c++ or other low-level languages), part of squawk itself. device drivers, example, written in java. small hardware abstraction layer , i/o libraries written in c.
Comments
Post a Comment