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

时间:2010-10-13 18:27:54

标签: javascript jvm clr v8

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

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

是否有任何可靠的工作允许用户从Javascript调用JVM / CLR库,类似于IronPython-CLR和Jython-JVM链接的优雅?

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

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

3 个答案:

答案 0 :(得分:1)

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

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

现在,它当然与CLR无法互操作。

答案 1 :(得分:0)

JavaScript编译器已经发布了 MS CLI实现从一开始, 以及自1.6.0以来的Sun Java实现。

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

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

有关详细信息,请参阅:

Is there a port of the Rhino JavaScript engine for .NET

Web浏览器之战导致了他们的JS实现(在C ++中) 从根本上说更快比其他所有人都更新。 Mozilla的TraceMonkey没有Java绑定。 但谷歌的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)。

答案 2 :(得分:0)

  

是否有任何可靠的工作允许用户从Javascript调用JVM / CLR库

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