Giter Club home page Giter Club 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

30daymakeos icon 30daymakeos

《30天自制操作系统》源码中文版。自己制作一个操作系统(OSASK)的过程

acme.sh icon acme.sh

A pure Unix shell script implementing ACME client protocol

acmesharp icon acmesharp

An ACME client library and PowerShell client for the .NET platform (Let's Encrypt)

advanced-go-programming-book icon advanced-go-programming-book

:books: 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题

advanced-java icon advanced-java

😮 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识,后端同学必看,前端同学也可学习

aeron.net icon aeron.net

Efficient reliable UDP unicast, UDP multicast, and IPC message transport - .NET port of Aeron

aforge.net icon aforge.net

AForge.NET Framework is a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics, etc.

agileconfig icon agileconfig

基于.NET Core开发的轻量级分布式配置中心 / .NET Core lightweight configuration server

ai-programmer icon ai-programmer

Using artificial intelligence and genetic algorithms to automatically write programs. Tutorial: http://www.primaryobjects.com/cms/article149

antdeploy icon antdeploy

Tools to deploy applications to remote server(iis,windowsService,linuxService,docker) support netframwork and dotnetcore,support rollback and increment deploy

antlr4 icon antlr4

ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.

apijson icon apijson

🚀A JSON Transmission Protocol and an ORM Library for auto providing APIs and Documents.

awesome-go icon awesome-go

A curated list of awesome Go frameworks, libraries and software

awesome-go-1 icon awesome-go-1

A curated list of awesome Go frameworks, libraries and software.

awesome-xamarin icon awesome-xamarin

A collection of interesting libraries/tools for Xamarin mobile projects

baget icon baget

A lightweight NuGet and symbol server

bedrock icon bedrock

a plugin framework for winform application

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.