Javascript引擎与JVM和CLR具有良好的互操作性

Javascript引擎与JVM和CLR具有良好的互操作性,javascript,jvm,clr,v8,Javascript,Jvm,Clr,V8,由于其背后的巨大资源,Javascript似乎正在迅速成为应用程序的首选脚本语言,特别是那些具有web前端的应用程序。我有一个在前端和后端都需要扩展性的应用程序。Javascript,或者像CoffeeScript这样的薄包装,看起来是一个优秀的、面向未来的选择 使用Javascript作为目标时,我遇到的问题是与现有服务器端库的互操作性。V8需要自定义C++代码。我更愿意利用JDK/.NET类库的大量资源和我们向这些语言公开API的代码 与IronPython CLR和Jython JVM链接

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

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

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

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


有人成功地遇到过类似的问题吗?

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

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


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

JavaScript编译器已经上市 MS CLI实施从一开始, 以及自1.6.0以来的Sun Java实现

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

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

有关详细信息,请参阅:

web浏览器战争已经导致了他们的JS实现(在C++中) 比其他所有产品都更快、更新。 Mozilla的TraceMonkey没有Java绑定。 但谷歌的V8(Chrome、Android;无论如何都更快)确实如此

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

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

是否有任何强有力的措施允许用户从Javascript调用JVM/CLR库


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

这可能是不可能的,但您可以使用.NET动态编译JScript,同时利用该语言和.NET框架。