# Wednesday, June 27, 2007
« New Hybrid Snapshot | Main | New Hybrid Snapshot »
New Hybrid Snapshot

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.

Wednesday, June 27, 2007 8:57:35 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [3]
Wednesday, June 27, 2007 9:10:44 AM (W. Europe Daylight Time, UTC+02:00)
I just try ikvm today, both release one and the one using OpenJDK, both can launch my eclipse to run without any issue, performance is ok, but the distribution size is a lot less than Sun/IBM JRE, very amazing to me
Wednesday, June 27, 2007 11:49:02 AM (W. Europe Daylight Time, UTC+02:00)

While I cannot object to your virtual directory decision, the name seems to be a little bit "ugly". I personally try not to populate C:\, and I had some installations where C:\ did not even exist (ie, F: was the windows drive, etc).

So please make it configurable thru app.config or global .net configuration -- /etc/mono/2.0/machine.config

It would also help package maintainers for Linux systems.
Wednesday, June 27, 2007 2:09:09 PM (W. Europe Daylight Time, UTC+02:00)
@Sukru: The name is intentionally "ugly", to reduce the chance of conflicting with a real directory. BTW, I think you may misunderstand how it works, the directory does not really appear anywhere, so it doesn't matter if you have a C: drive or not. It's just for Java code running inside IKVM that tries to read from the java.home directory.
Comments are closed.