I'm getting tired of writing the disclaimers and warnings, but they still apply.
The most important change in this snapshot is that there's now a virtual file system for the java.home directory. This has been a long time coming, but the proverbial straw was the fact that the OpenJDK timezone code reads files from the java.home/lib/zi/ directory (IMHO they really should be using resources for these things).
Currently the virtual java.home directory is
C:\.virtual-ikvm-home\ on Windows and
/.virtual-ikvm-home/ on Unix, but this is subject to change (please let me know if you have thoughts on this). The only contents in there so far is the /lib/zi/ directory tree and only a few file operations are supported (notably the ones required by the timezone code), but expect that eventually all (read-only) file system operations will be supported and more virtual files to appear in there.
Why a Virtual File System Instead Of a Real Java Home Directory?
The main reason is that I want IKVM to behave like a .NET library as much as possible. That means it should be possible to install it into the GAC and support the versioning and side-by-side capabilities of .NET, that's very hard to do when you have to manage real directories.
- OpenJDK: Integrated java.util.spi, java.util.prefs and java.util.logging packages.
- OpenJDK: Integrated java.text and java.text.spi packages (except for java.text.Bidi class, for which Sun uses native code, so we'll continue to use GNU Classpath's pure Java version.)
- OpenJDK: Changed build script to include all resources from OpenJDK generated resources.jar.
- OpenJDK: Integrated java.rmi package.
- OpenJDK: Changed system/extension class loader creation to make sure that an extension class loader always exists if there is a non-assembly system class loader.
- OpenJDK: Improved exception handling in java.io.FileDescriptor.
- OpenJDK: Removed AccessController.doPrivileged() call in Unsafe.fieldOffset(), to work around Mauve brokenness.
- OpenJDK: Implemented the beginnings of a virtual file system for the java.home directory.
- Changed JVM.IsUnix to use Environment.OSVersion.Platform.
Binaries available here: ikvmbin-hybrid-0.35.2734.zip.