4

由于其背后的巨大资源,Javascript 似乎迅速成为应用程序的首选脚本语言,尤其是那些具有 Web 前端的应用程序。我有一个应用程序需要在前端和后端都具有可扩展性。Javascript,或者像 CoffeeScript 这样的精简包装器,似乎是一个优秀的、面向未来的选择。

我使用 Javascript 作为目标时遇到的问题是与现有服务器端库的互操作性。V8 需要自定义 C++ 代码。我更喜欢利用 JDK/.NET 类库的大量资源以及我们将 API 公开给这些语言的代码。

是否有任何强大的努力允许用户从 Javascript 调用 JVM/CLR 库,类似于 IronPython-CLR 和 Jython-JVM 链接的优雅?

另一种方法是使用 IronPython/Jython 之类的东西,但这两个项目只有一小部分资源用于 Javascript,这使得客户端可扩展性非常困难。

有没有人成功面对过类似的问题?

4

3 回答 3

1

您是否尝试过使用 JDK 6 (Rhino) 附带的 Javascript 解释器?

我的意思是,如果你问我,与核心 JDK 一起发布是非常可互操作的。您可以从 Javascript 上下文访问 Java 服务,并且可以从 Java 端将对象引入 Javascript 全局上下文。也可以(使用 ScriptEngine 的东西)使用 Javascript 代码作为 Java 接口的实现。

现在,它当然不能与 CLR 互操作。

于 2010-10-13T18:47:02.470 回答
0

JavaScript 编译器从一开始就在 MS CLI 实现中提供,从 1.6.0 开始在 Sun Java 实现中提供。

MS 是高效的、最新的并且使用 DLR,因此它可以与其他动态语言实现互操作,例如 IronPython。

Sun's 基于原本被遗弃的 1998 年 Mozilla “Rhino”。如果您必须具有一致性或必须具有开源,您可以通过 IKVM 在 MS .net 上运行 Rhino。

有关更多详细信息,请参阅:

是否有适用于 .NET 的 Rhino JavaScript 引擎的端口

Web 浏览器大战导致他们的 JS 实现(在 C++ 中)比其他所有实现都快得多且更新。Mozilla 的 TraceMonkey 没有 Java 绑定。但是 Google 的 V8(Chrome、Android;无论如何更快)可以。

如果您准备好承受一些痛苦:

http://code.google.com/p/jav8/

http://rbackhouse.blogspot.com/2011/03/using-google-v8-javascript-engine-in.html

或者您可以使用 MessagePack RPC 调用 node.js (Google V8)。

于 2012-06-16T00:02:24.310 回答
0

是否有任何强大的努力可以让用户从 Javascript 调用 JVM/CLR 库

如果您不介意使用 TypeScript,请尝试1c,它还允许对 JVM 库进行类型检查和自动完成。

于 2017-05-01T08:42:34.880 回答