# Wednesday, 27 June 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, 27 June 2007 08:57:35 (W. Europe Daylight Time, UTC+02:00)  #    Comments [3]
Wednesday, 27 June 2007 09:10:44 (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, 27 June 2007 11:49:02 (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, 27 June 2007 14:09:09 (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.
Home page

I apologize for the lameness of this, but the comment spam was driving me nuts. In order to be able to post a comment, you need to answer a simple question. Hopefully this question is easy enough not to annoy serious commenters, but hard enough to keep the spammers away.

Anti-Spam Question: What method on java.lang.System returns an object's original hashcode (i.e. the one that would be returned by java.lang.Object.hashCode() if it wasn't overridden)? (case is significant)

Comment (HTML not allowed)  

Live Comment Preview