This is the biggest update to IKVM since our initial 8.2 release. The largest and most impactful change is the removal of most of the C# implementations of the OpenJDK backend classes. We no longer run our own implementations of NIO, network support, process launching, etc. Intead we are making use of the OpenJDK C code directly.
A consequence of this is that we now deliver platform-specific versions of IKVM.Java.dll. Four versions are available: Windows, Linux and OSX and a single reference-assembly. Users of the NuGet package should have this handled automatically: for RID-specific deployments the NuGet infrastructure will copy the appropriate version of IKVM.Java to the output directory. For RID-agnostic deployments, all three will be copied into runtimes/{rid}/lib
and selected at runtime by .NET. For Framework targets, only the Windows version will be output.
This is unobtrusive for users of our IkvmReference
implementation. The reference assembly is used to compile Java code against. And then at runtime the appropriate IKVM.Java implementation is included. The appropriate ikvm/ image directory is copied to the output as well.
However, for users not using NuGet and PackageReference, management of the reference assemblies falls to them. ikvmc
should be run specifying the reference-assembly. And then only the appropriate runtime assemblies should be distributed with the application. This isn't unlike manually using csc.exe to compile .NET code at this point: you have to pick the appropriate reference assemblies. However, that is left as an exercize to the user.
This is also our first IKVM release in which we have enabled native-AWT. We include AWT support directly from the OpenJDK C code. We know there are bugs in this: On Windows we've observed Chinese-looking fonts periodically. And we know OS X support doesn't quite work right. This enables a lot of scenarios, but there are still bugs to be worked out. However, AWT is better than no-AWT.
What's Changed
- Platform Specific IO, Security, Base Libs by @wasabii in #521
- Native AWT by @wasabii in #528
- README typo by @Sinan-Karakaya in #533
- Linux CI Build by @wasabii in #532
- Update to jdk8u192-b26 by @wasabii in #500
- win-x86 test suites by @wasabii in #456
- Upgrade to jdk8u275-b01 by @wasabii in #534
- Add osx-arm64 tests by @wasabii in #537
- Remove bin artifact drop. This doesn't quite work as easily now that we have 4 versions of IKVM.Java. Users are expected to get the appropriate version(s) out of NuGet if they need the assemblies directly.
- Remove image artifact drop. Replace with jre and jdk images.
- Split IKVM.ByteCode out and reduce package size.
New Contributors
- @Sinan-Karakaya made their first contribution in #533
Full Changelog: 8.8.1...8.9.0