Rhino
是在JVM之上运行的JavaScript
解释器。我想这对JavaScript
中的服务器端编程很有用。现在我们有Node.js
。所以我想知道Rhino
是否仍然相关以及它对什么有用。
答案 0 :(得分:5)
它只是提供了一种在JVM中运行Javascript的方法。因此,它优先于Java语言提供another implementation choice on top of the JVM(与JRuby,Scala,Groovy等类似)。您可以在Javascript中编写完整的解决方案,或者与Java(或任何其他JVM语言)混合/匹配
请注意,这不是特定于“服务器端”或任何此类部署选择。
根据个人经验,我用它来提供trivial scripting in Ant deployments,并为使用我编写的Java应用程序/工具集的客户提供开箱即用的简单脚本语言。
答案 1 :(得分:2)
Rhino也被the HttpUnit library使用,可以在单元测试中用来模拟Web浏览器,用于测试网站。它为库提供了JavaScript支持。
答案 2 :(得分:1)
我使用Javascript和Rhino作为我用Java编写的MMORPG服务器的脚本语言。它允许我在Javascript中实现NPC脚本,项目使用脚本,事件触发器和其他服务器端交互功能,而无需触及我的服务器的Java部分。
在Javascript中实现这些功能使得它们的语法更容易编写和读取。特别是因为我让服务器的Java部分自动将任何简单的样板代码添加到脚本源代码中,然后再将它们发送到脚本引擎。这进一步简化了javascript语法。
它还可以更清晰地分离引擎和内容。
我还添加了一个Javascript admin shell,它允许我在正在运行的服务器上运行任何Javascript代码。事实证明这是一个非常有用的测试和调试工具,我希望它以后会成为一个非常强大的管理工具。
当然,我也可以使用任何其他脚本语言,例如Lua,它经常被用作游戏开发中的脚本语言。但Rhino支持开箱即用,所以我不需要任何额外的第三方依赖。此外,我的客户端是一个HTML5 / Javascript应用程序,所以我在项目中没有另一种编程语言。请注意,尽管客户端和服务器内容都使用JS,但它们之间没有共享代码 - 它们实际上位于系统体系结构的相反端,并通过多个间接层相互交互,因此没有理由共享代码。