IKVM (formerly IKVM.NET) is an implementation of
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
for
Common Language Infrastructure
The Common Language Infrastructure (CLI) is an open specification and technical standard originally developed by Microsoft and standardized by International Organization for Standardization, ISO/International Electrotechnical Commission, IEC (ISO/ ...
implementations such as
Mono and the
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
.NET Framework. IKVM is
free software
Free software, libre software, libreware sometimes known as freedom-respecting software is computer software distributed open-source license, under terms that allow users to run the software for any purpose as well as to study, change, distribut ...
, distributed under the
zlib
zlib ( or "zeta-lib", ) is a software library used for data compression as well as a data format. zlib was written by Jean-loup Gailly and Mark Adler and is an abstraction of the DEFLATE compression algorithm used in their gzip file compre ...
permissive free software license
A permissive software license, sometimes also called BSD-like or BSD-style license, is a free-software license which instead of copyleft protections, carries only minimal restrictions on how the software can be used, modified, and redistributed, ...
.
Work started on IKVM early in 2000 to assist migration of a Java-based reporting package from Sumatra to Microsoft .NET. The original developer, Jeroen Frijters, discontinued work on IKVM in 2015. In 2018,
Windward Studios forked IKVM.NET to continue development on the open-sourced IKVM. In 2022 Jerome Haltom and others picked up the work on a new
GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
organization and finished
.NET Core support.
Components
IKVM includes the following components:
* A
Java virtual machine
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally descr ...
(JVM) implemented in
.NET
The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
* A .NET implementation of the Java class libraries
* A tool that translates Java bytecode (
JAR files) to .NET IL (
DLLs or
EXE files).
* Tools that enable Java and .NET interoperability
IKVM can run compiled Java code (
bytecode
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (normal ...
) directly on Microsoft .NET or Mono. The bytecode is converted on the fly to
CIL and executed.
By contrast
J# is a Java syntax on the .NET framework, whereas IKVM is effectively a Java framework running on top of the .NET framework.
Jeroen Frijters was the main contributor to IKVM. He is Technical Director of Sumatra Software, based in the Netherlands.
Name
The "IKVM" portion of the name is a play on "
JVM
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally descri ...
" in which the author "just took the two letters adjacent to the J".
Status
IKVM 8 implements
Java 8
The Java language has undergone several changes since JDK 1.0 as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community P ...
.
The IKVM organization also maintains IKVM.Maven.Sdk, 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.
See also
*
Free Java implementations
Free Java implementations are software projects that implement Oracle's Java technologies and are distributed under free software licences, making them free software. Sun released most of its Java source code as free software in May 2007, so it ...
*
J#
References
External links
*
*
{{DEFAULTSORT:IKVM
Java virtual machine
Mono (software)
Cross-platform free software
Software using the zlib license