# Tuesday, 20 May 2014
« Default and Static Interface Methods | Main | New Development Snapshot »
First OpenJDK 8 Based Development Snapshot

I finished the first major step for integrating OpenJDK 8. The class libraries are now built from the OpenJDK 8 sources. Not all new functionality is implemented yet (both in the class library and in the VM).

Lambda's work, but they are not yet optimized, so they are very slow. This will be fixed in a future development snapshot.

Another area that still needs a lot of work is the assembly partitioning of the class libraries. Currently IKVM.OpenJDK.Core.dll has grown to 13MB. That's clearly not a good thing. Also, a bunch of work has gone into OpenJDK 8 to better factor it and to support making parts of the class libaries optional, so that should be exposed as well.

Finally, there is no Nashorn support yet.


  • Enabled Java 8 class file support by default.
  • Several fixes for Java 8 static, private and default interface methods.
  • Allow classes defined by Unsafe.defineAnonymousClass() access to private methods of their host class.
  • Add ExtensionAttribute to IKVM.OpenJDK.Core assembly, because Roslyn requires that for the extension methods to be visible.
  • Bug fix. Unsafe.park(false, 0) means infinite wait timeout, contrary to LockSupport.parkNanos(0).
  • Bug fix. Miranda method override stubs should be handled by the normal code, because a Miranda method can implement multiple interface methods.
  • Bug fix. Bridge method names should not include prefix in stack trace.
  • Fixed handling of ghost array types in remapped type methods.
  • Fixed class file validation of method and field names to disallow '[' character.
  • Fixed class file validation to disallow zero length bytecode stream.
  • Bug fix. Exceptions in bootstrap method arguments should not be wrapped in BootstrapMethodError.
  • Fixed ikvmc to emit fatal error instead of crashing when a field referenced in remap file isn't found.
  • Added ikvmc option -assemblyattributes: to explicitly specify the assembly attribute container class and deprecated the previous behavior.
  • Bug fix. If ikvmc -warnaserror is used, "warnings" should not be suppressed after an error was emitted.
  • IKVM.Reflection: Fixed several bugs in Type.GetInterfaceMap().
  • IKVM.Reflection: It is legal for a MethodBuilder to not have a signature, in that case it defaults to returning void with no parameters.

Binaries available here: ikvmbin-8.0.5252.zip
Sources: ikvmsrc-8.0.5252.zip and openjdk-8-b132-stripped.zip

Tuesday, 20 May 2014 09:06:50 (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]