Software:IKVM
| Other names | IKVM.NET |
|---|---|
| Original author(s) | Jeroen Frijters |
| Developer(s) | Windward Studios, Jerome Haltom |
| Written in | Java, C# |
| Operating system | Cross-platform |
| Type | Java virtual machine, JVM bytecode compiler and Java Library |
| License | zlib |
| Website | {{{1}}} |
IKVM (formerly IKVM.NET) is an implementation of Java for Common Language Infrastructure implementations such as Mono and the .NET framework. IKVM is free and open-source software, distributed under the zlib permissive software license.[1]
Work began on IKVM in early 2000 to assist migration of a Java-based reporting package from Sumatra to the Microsoft .NET Framework. The original developer, Jeroen Frijters, discontinued work on IKVM in 2015.[2] In 2018, Windward Studios forked IKVM.NET to continue development on the open-sourced IKVM.[3] In 2022 Jerome Haltom and others picked up the work on a new GitHub organization and finished .NET Core support.[4]
Components
IKVM includes these components:
- A Java virtual machine (JVM) implemented in .NET
- A .NET implementation of the Java class libraries
- A tool that translates JVM bytecode (JAR files) to .NET IL (dynamic-link library (DLL) or Portable Executable (EXE) files).
- Tools that enable Java and .NET interoperability
IKVM can run compiled Java code (bytecode) directly on .NET or Mono. The bytecode is converted on the fly to Common Intermediate Language (CIL) and executed.
By contrast, J# is a Java syntax on a .NET framework, whereas IKVM is effectively a Java framework running on a .NET framework.
Jeroen Frijters was the main contributor to IKVM. He is Technical Director of Sumatra Software, based in the Netherlands.[5]
Name
The IKVM part of the name is a play on JVM in which the author "just took the two letters adjacent to the J".[6]
Status
IKVM 8 implements Java 8.
The IKVM organization also maintains IKVM.Maven.Sdk,[7] an extension to the .NET PackageReference system that allows direct references to and transpiling of Maven artifacts. IKVM.Maven.Sdk is also available on NuGet.org.[8]
Example
The following is a .NET application written in Java, which prints the list of files in the current directory.
In IKVM, the System.* namespace in .NET is written as cli.System.*.[9]
package org.wikipedia.examples;
import cli.System.IO.*;
public class Example {
public static void main(String[] args) {
String[] files = Directory.GetFiles(".");
for (String file : files) {
System.out.println(file);
}
}
}
See also
References
- ↑ "License". www.ikvm.net. http://www.ikvm.net/license.html.
- ↑ "The End of IKVM.NET". http://weblog.ikvm.net/2017/04/21/TheEndOfIKVMNET.aspx.
- ↑ "IKVM is alive & well". www.windwardstudios.com. https://www.windwardstudios.com/blog/ikvm-is-alive-well.
- ↑ "IKVM - Java Virtual Machine for .NET". GitHub. 27 August 2022. https://github.com/ikvmnet/ikvm.
- ↑ "Sumatra Software b.v.". http://www.sumatrasoftware.com/.
- ↑ "osdir mailing list archive for java.ikvm.devel". http://osdir.com/ml/java.ikvm.devel/2007-07/msg00013.html.
- ↑ "IKVM.Maven.Sdk". GitHub. https://github.com/ikvmnet/ikvm-maven.
- ↑ "IKVM.Maven.Sdk". www.nuget.org. https://www.nuget.org/packages/IKVM.Maven.Sdk/.
- ↑ "IKVM Tutorial". Windward Studios, Jerome Haltom. 2023. https://ikvm.org/ikvm/legacy/tutorial.
External links
- No URL found. Please specify a URL here or add one to Wikidata.
- on GitHub
