我正在使用Mozilla Rhino作为我的应用程序,我需要在实现期间调用C / C ++库。除了直接通过java调用c / C ++函数之外,有没有简单的方法呢?
答案 0 :(得分:1)
您无法直接从Javascript调用C / C ++函数。
您可以创建一个Java包装类,可以从Java调用C / C ++本机代码。然后从Javascript调用Java包装器类上的方法。如果您想采用这种方法,请搜索有关使用JNA或JNI或类似的教程(适用于Java< - > C / C ++)。
但是,这种方法存在一些问题:
C / C ++代码将在与JVM相同的地址空间中运行。 C / C ++代码中的错误容易硬崩溃 JVM。硬崩溃很难调试。
典型的C / C ++代码不是线程安全的。如果您尝试从多线程的Java代码中调用它,可能会发生不好的事情;例如见上文。
Javascript - > Java - > C ++调用序列不会便宜。人们不可能尝试使用C / C ++来提高性能,但却发现它使应用程序运行更慢。