javascript - 如何从 Mozilla Rhino 的 Javascript 调用 C++

标签 javascript java c++ c rhino

我正在为我的应用程序使用 Mozilla Rhino,并且我需要在实现过程中调用 C/C++ 库。除了直接通过java调用c/C++函数之外,还有什么简单的方法可以做到这一点吗?

最佳答案

您将无法直接从 Javascript 调用 C/C++ 函数。

您可以创建一个 Java 包装类,它可以从 Java 调用 C/C++ native 代码。然后从 Javascript 调用 Java 包装类上的方法。如果您想采用这种方法,请搜索有关使用 JNA 或 JNI 或类似方法的教程(适用于 Java <-> C/C++)。

但是,这种方法存在一些问题:

  • C/C++ 代码将在与 JVM 相同的地址空间中运行。 C/C++ 代码中的错误很容易导致 JVM 硬崩溃。硬崩溃很难调试。

  • 典型的 C/C++ 代码不是线程安全的。如果您尝试从多线程的 Java 代码中调用它,则可能会发生不好的事情;例如见上文。

  • Javascript -> Java -> C++ 调用序列不会便宜。人们尝试使用 C/C++ 来提高性能,却发现它使他们的应用程序运行速度变慢,这是众所周知的。

关于javascript - 如何从 Mozilla Rhino 的 Javascript 调用 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729919/

相关文章:

javascript - 某些 Google map 功能在 Blogger 中使用时未显示

c++ - 为什么这个简单的赋值是未定义的行为?

c++: string::insert(string::iterator _where, char _Ch) 突然不工作了

c++ - 通过引用传递 3-Dim 固定长度数组

javascript - 使用 fetch-mock 和 isomrphic-fetch 模拟 post 请求时,res.json() 未定义

javascript - 为什么这个迭代永远有效

javascript - 为什么这里需要 static 关键字

java - org.springframework.web.multipart.commons.CommonsMultipartFile#transferTo() 方法内存安全吗?

java - 清除缓冲区,输出名字,姓氏

java - 使用 OO 编程避免多个嵌套 if