GithubHelp home page GithubHelp logo

IKVM - Java Virtual Machine for .NET

Nuget GitHub

IKVM.NET is an implementation of Java for the Microsoft .NET Framework and .NET Core.

IKVM.NET includes the following components:

  • A Java virtual machine (JVM) implemented in .NET
  • 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
  • With IKVM.NET you can run compiled Java code (bytecode) directly on Microsoft .NET Framework or .NET Core. The bytecode is converted on the fly to CIL and executed.

Documentation

See the tutorial to get started or IKVM.NET In Details for a more in-depth look.

Support

  • .NET Framework 4.6.1 and higher
  • .NET Core 3.1 and higher
  • .NET 5 and higher
  • Java SE 8

IkvmReference

IKVM includes build-time support for translating Java libraries to .NET assemblies. Install the IKVM package in a project that wants to reference Java libraries. Use the IkvmReference ItemGroup to indicate which Java libraries your project required.

Example:

    <ItemGroup>
        <IkvmReference Include="..\..\ext\helloworld-2.0.jar" />
    </ItemGroup>

The output assembly will be generated as part of your project's build process. Additional metadata can be added to IkvmReference to customize the generated assembly.

  • Identity: The identity of the IkvmReference item can be either a) path to a JAR file b) path to a directory or c) an otherwise unimportant name.
  • AssemblyName: By default the AssemblyName is generated using the rules defined by the Automatic-Module-Name specification. To override this, do so here.
  • AssemblyVersion: By default the AssemblyVersion is generated using the rules defined by the Automatic-Module-Name specification. To override this, do so here.
  • DisableAutoAssemblyName: If true disables detection of AssemblyName.
  • DisableAutoAssemblyVersion: If true disables detection of AssemblyVersion.
  • FallbackAssemblyName: If AssemblyName is not provided or cannot be calculated, use this value.
  • FallbackAssemblyVersion: If AssemblyVersion is not provided or cannot be calculated, use this value.
  • Compile: Optional semi-colon separated list of Java class path items to compile into the assembly. By default this value is the Identity of the item, if the identity of the item is an existing JAR file or directory (not yet supported). MSBuild globs are supported to reference multiple JAR or .class files.
  • Sources: Optional semi-colon separated list of Java source files to use during documentation generation. (not yet supported)
  • References: Optional semi-colon separated list of other IkvmReference identity values to specify as a reference to the current one. For instance, if foo.jar depends on bar.jar, include both as IkvmReference items, but specify the identity of bar.jar on the References metadata of foo.jar.
  • Debug: Optional boolean indicating whether to generate debug symbols (non-portable). By default this is determined based on the overall setting of the project.
  • All other metadata supported on the Reference MSBuild item group definition.

IkvmReference is not transitive. Including it in one project and adding a dependency to that project from a second project will not result in the same reference being available on the second project. Instead add the reference to each project.

For each project to resolve to the same resulting assembly ensure their settings are identical.

    <ItemGroup>
        <IkvmReference Include="helloworld.jar">
            <AssemblyVersion>1.0.0.0</AssemblyVersion>
        </IkvmReference>
        <IkvmReference Include="helloworld-2.jar">
            <AssemblyName>helloworld-2</AssemblyName>
            <AssemblyVersion>2.0.0.0</AssemblyVersion>
            <References>helloworld.jar</References>
            <Aliases>helloworld2</Aliases>
        </IkvmReference>
    </ItemGroup>

mes's Projects

fastcoloredtextbox icon fastcoloredtextbox

Fast Colored TextBox for Syntax Highlighting. The text editor component for .NET.

faster icon faster

Fast persistent recoverable log and key-value store + cache, in C# and C++, from Microsoft Research.

fasterkvcache icon fasterkvcache

FasterKv.Cache is an in-process hybrid cache library (memory+disk) based on the Microsoft FasterKv.

fastgenericnew icon fastgenericnew

The ultimate fast alternative to Activator.CreateInstance<T> / new T()

fastreport icon fastreport

Reporting tool for .NET Core/.NET Framework that helps your application generate document-like reports

fbc icon fbc

FreeBASIC is a completely free, open-source, multi-platform BASIC compiler, with syntax similar to MS-QuickBASIC, that adds new features such as pointers, unsigned data types, inline assembly, object orientation, and many others.

fe icon fe

前端知识地图 五年前端三年面试 元前端

fineui-1 icon fineui-1

UI framework for FineBI and FineReport.

flex icon flex

The Fast Lexical Analyzer - scanner generator for lexing in C and C++

flingos icon flingos

An educational operating system written in C#. A great stepping stone from high to low level development.

fluid icon fluid

Fluid is an open-source .NET template engine based on the Liquid template language.

fody icon fody

Extensible tool for weaving .net assemblies

freesql icon freesql

FreeSql is the most convenient ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, And Odbc.

frp icon frp

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

fuzzdb icon fuzzdb

Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.

galex icon galex

Genetic Algorithms Library Extended

genetic-algorithms icon genetic-algorithms

A simple C# library for implementing Genetic Algorithms, some demonstration classes and an entire project based on Genetic Algorithms we developed for a university project. Feel free to fork and improve. We might reconsider our licensing model for further versions and switch to LGPL for our library base.

geneticsharp icon geneticsharp

GeneticSharp is a fast, extensible, multi-platform and multithreading C# Genetic Algorithm library that simplifies the development of applications using Genetic Algorithms (GAs).

go-in-action icon go-in-action

Trying to complete over 100 projects in various categories in golang.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.