java - Java libjli 库有什么用?

标签 java java-native-interface jvm-hotspot

我正在使用 JNI 来允许 C 代码卸载一些最好在 Java 中完成的工作。 In this question我试图链接 libjvmlibjli 库以使我的代码正常工作,但现在我怀疑我是否需要 JLI 库.

我找不到任何文档可以清楚地说明 JLI 库的用途。

This other SO question暗示 JLI 是某些 OSX 直通库:

#elif defined(__APPLE__)
// jli needs to be loaded on OSX because otherwise the OS tries to run the system Java

就像this blog一样:

When compiling on OS X it’s very important to link the jli library before the jvm library

我的问题:

  1. JLI 库有什么用?
  2. 我需要它在仅 RedHat/CentOS 环境(无 OSX)中进行 C/Java JNI 开发吗?

最佳答案

What is the JLI library for?

libjli.so 包含一个启动器接口(interface),用于准备在命令行中传递的参数并使用它们启动虚拟机。

启动器 main.c是所有 Java 程序的主要入口点。它准备 C 命令行参数并将它们传递到执行参数解析的 JLI_Launch 函数,loading virtual machine来自 libjvm.so, fork 原始线程,然后 passing control to the JVM .

Do I need it for C/Java JNI development in RedHat/CentOS-only environments (no OSX)?

不太可能。如果您需要,您可能做错了什么。至少我无法想象任何有用的一般用例。

关于java - Java libjli 库有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102735/

相关文章:

java - 支持 PropertyChangeListener 的 bean 的标准接口(interface)

java - 在正则表达式中匹配带有井号 (#) 的单词

java - 如何强制 Maven 在站点生命周期之前运行构建生命周期?

android - libvorbis-libogg-android中的本地引用表溢出(max = 512)

android - Android 上的 JRE

java - "java.lang.UnsatisfiedLinkError: Native method not found:"去掉头文件可以修复错误吗?

android - 在 NDK 中处理 RGB_565 位图

java - JIT 自动内联的方法的大小是多少?

Java vs C# 多线程性能,为什么 Java 变慢了? (包括图表和完整代码)

java - Hotspot JIT 编译器完成的任何指令重新排序是否可以重现?