jArt 0.0.2 release ------------------- - Move the build chain to cygwin - Use mtools for floppy disk image manipulation - Custom bootloader for binary kernels - Increase the number of supported bytecodes - KeyboardLayout class added in sys.driver package - LOOKUPSWITCH bug fixed (incorrect padding) - Replace fields and virtual methods caching by QUICK opcodes - Java stack backtrace on page fault exception - Strip unneeded symbols from the kernel image - Memory free on java thread termination (Thread object will be removed by Garbage Collecror) jArt 0.0.1 release ------------------- What's new: - Kernel classpath can be represented as a single jar file - zLib 1.2.3 embedded into the kernel (to handle .jar files) - Basic hard drive I/O java interface is implemented - Resolved virtual methods caching - Multithreading improvement (wait, notify, notifyAll) - Increase of suported bytecodes jArt 0.0.0 release ------------------- Features: - Native kernel is based on SOS kernel (http://sos.enix.org) - JVM works in kernel mode; - Garbage collector (mark-and-sweep) in java kernel; - Java threads are based on native kernel threads (no context switching in JVM); - Java native calls to interact with the native kernel; - Independent contexts for different java applications (with separate heap and classpath); - Hardware interrupts can be binded to java threads; - Object oriented filesystem (not fully implemented, a subject to change); - Text-mode windowed user interface (not fully implemented, a subject to change); - Native code user applications can run (but probably will not be supported by the system); Drawbacks: - Swap system is not implemented (and probably, will not be implemented); - Java bytecode interpretation is not fully implemented (not all opcodes); - Slow interpretation and methods invokation (no JIT-ing); - Multilock on synchronized objects is not supported; - 64 bit data types and float are not supported yet; - Multidimension arrays are not supported; - I/O is not implemented; - jArt classpath is not fully compatible with Sun classpath; 2007/05/28 Current jArt kernel does the following: - jArt kernel is loaded to 0x100000 by GRUB loader. - Native kernel (SOS) initializes interrupts and memory management and starts JVM. - JVM creates a single context with 1Mb heap size (shared by all java threads within this context) and 4kb stack size (for each thread). - JVM invokes static method sys.loader.Loader.Start() to start the java part of the kernel - sys.loader.Loader cerate new Kernel thread and starts it. - sys.kernel.Kernel thread initializes keyboard and mouse drivers and starts them. After that the kernel goes to the infinite loop and outputs a message each 1000ms. Kernel also invokes garbage collector periodically to clean the unused memory of the heap. The green bar in the top of the screen shows the memory usage (the whole bar is 1Mb of heap memory). - sys.driver.Keyboard and sys.driver.Mouse are separate java threads which is binded to the native threads. External hardware interrupts cause the interrupt of these java threads sleeping. Interrupted drivers threads output corresponding messages on system console (sys.kernel.Console).