gpt4 book ai didi

java - GraalVM 生成的原生镜像可以替代 IKVM 生成的 DLL 吗?

转载 作者:行者123 更新时间:2023-12-04 04:23:04 26 4
gpt4 key购买 nike

我有一些 Java 应用程序和一些使用 C# 实现的 UWP 应用程序的客户,这些应用程序通过 Windows 应用商店等分发,他们想要使用我的应用程序的某些部分。这些部分非常独立于操作系统,只解析一些特殊的二进制文件格式,应用一些使用 YAML 文件和东西配置的业务逻辑。没有网络,GUI,只有一些文件访问等。

我们目前使用 IKVM使 C# 可以使用感兴趣的代码,但已经遇到了不同的问题。有些是 supporting .NET Core , 有些与 native 有关toolchainRelease等。虽然现在在应用一些变通办法后一切似乎都有效,但我已经在寻找 IKVM 的替代品了。

我目前使用 IKVM 的唯一一件事就是使用 ikvmc 创建我的代码的 DLL。 ,然后可以在 UWP 项目中引用它。编译器总结如下:

The ikvmc tool converts Java bytecode to .NET dll's and exe's.

这就是我想到支持创建 GraalVM 的 native Windows 镜像的地方。其他人似乎已经为 Windows 和 according to the docs 构建了 native 二进制文件,GraalVM 能够使用“--shared”创建共享库。根据我的理解,IKVM 在 .NET 中实现了一个 JVM,并根据需要和可能映射事物。这听起来很像“Substrate VM”在处理原生图像时所做的,不是吗?

This executable includes the application, the libraries, the JDK and does not run on the Java VM, but includes necessary components like memory management and thread scheduling from a different virtual machine, called “Substrate VM”. Substrate VM is the name for the runtime components (like the deoptimizer, garbage collector, thread scheduling etc.).

https://www.graalvm.org/docs/reference-manual/native-image/

那么,DLL 形式的 native 镜像是否有可能取代当前由 ikvmc 创建的 DLL?有没有人已经尝试过并且有任何经验?有没有人已经尝试创建一个 native DLL 并在其他一些 native Windows 应用程序中使用它?根据我的理解,UWP“仅”应用了可能能够再次解决的额外限制。或者由于某些原因这种方法是完全不可能的?

感谢大家的参与!

最佳答案

我对 IKVM 项目不是很熟悉,所以这个答案主要是关于一般问题:

Can you create a native DLL/shared library and consume that in some other native Windows app?

应该是可以的。您可以将 Java 代码编译成共享库。入口点用 @CEntrypoint 注释标记。

然后您可以使用生成的共享库和头文件从 native 应用程序使用您的库。

这种方式例如 GraalVM 发行版默认使用 GraalVM JIT 编译器:

  1. GraalVM JIT 是用 Java 编写的
  2. 编译为带有原生图像的共享库
  3. 用于热点。

这里有一个页面描述了如何通过 JNI 使用来自 Java 的那些:https://www.graalvm.org/reference-manual/native-image/ImplementingNativeMethodsInJavaWithSVM/

这可能与您在 C# 应用程序中使用共享库的方式非常相似。

关于java - GraalVM 生成的原生镜像可以替代 IKVM 生成的 DLL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58595406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com