IKVM

From Wikipedia, the free encyclopedia
(Redirected from IKVM.NET)
Jump to navigation Jump to search
IKVM
Other namesIKVM.NET
Original authorJeroen Frijters
DevelopersWindward Studios, Jerome Haltom
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inJava and C#
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemCross-platform
    TypeJava virtual machine, Java bytecode compiler and Java Library
    Licensezlib License

    IKVM (formerly IKVM.NET) is an implementation of Java for Common Language Infrastructure implementations such as Mono and the Microsoft .NET Framework. IKVM is free software, distributed under the zlib permissive free software license.[1]

    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.[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

    [edit | edit source]

    IKVM includes the following components:

    IKVM can run compiled Java code (bytecode) 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.[5]

    The "IKVM" portion of the name is a play on "JVM" in which the author "just took the two letters adjacent to the J".[6]

    Status

    [edit | edit source]

    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

    [edit | edit source]

    The following is a .NET application written in Java, which prints the list of files in the current directory.

    Note that 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

    [edit | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]
    • Lua error in Module:Official_website at line 94: attempt to index field 'wikibase' (a nil value).
    • ikvm on GitHub