The discussion on JIT/classloader interfaces is encouraging.
I think it would be good to think a bit more about the higher level design and get some more consensus on that. So here are a few thoughts. These are very abstract and I am deliberatly not addressing issue of language or API design. I just want to provoke thought on what the key concerns are, and how they inter-relate. The following are pretty clearly first class modules: core VM core mm Memory management (GC etc) exec Execution engine (JIT, interpreter, adaptive policies) lib Class libraries My guess is that the core is something that in the end Harmony will write from scratch (perhaps based on something existing), whereas the other three are distinct modules which in the first instance may be existing implementations: Classpath, MMTk, StarJIT, Jikes RVM's compilation subsystem etc. There are other modules which may either be a) first class modules, or b) sub-modules, but either way probably should be pluggable (sub)modules. Here are a few that come to mind... exec.jit Compiler instances exec.iterpreter Interpreter instances core.scheduler Threading and scheduling core.object Object model core.classloader Class loader core.os Operating system services Thoughts? --Steve
