我们有一个Web应用程序,其中动态构建网页。动态意义上,整个UI在后端存储为JSON,前端相应地绘制UI。有些用例可以跨多种形式进行数据收集。显示表单的顺序取决于先前表单中输入的数据。
e.g。假设用户正在查看form1
,并且可能存在业务逻辑,如age > 25
显示form2
其他form3
这是一个简单的例子,但它可能会变得复杂得多。并且逻辑因客户而异。此业务逻辑也可由第三方开发人员开发。
javascript
是存储此业务逻辑的选项之一。但是,该应用程序是在Java7中构建的,并部署在Google App Engine中。性能和安全性是决定方法的重要标准。以下是我们现在考虑的方法:
NodeJS
应用程序并进行API调用以执行业务逻辑您能否建议在Java应用程序中执行javascript
的最佳方法是什么?
答案 0 :(得分:0)
Rhino是一个完全用Java编写的JavaScript的开源实现。它通常嵌入到Java应用程序中,以便为最终用户提供脚本。 这是一个链接 - http://www.mozilla.org/rhino/
答案 1 :(得分:0)
鉴于Javascript的全球性以及您所指的特定逻辑这一事实,我倾向于同意Alex关于JS的观点。也就是说有人抱怨犀牛的表现,所以我不会立即推荐。除非性能证明对您的用例很可怕,否则我建议您使用内置功能开始。然后,当您了解有关用例和特定性能配置文件的更多信息时,您可以根据需要转移到更好的解决方案。
以下是一些可以帮助您构建问题的其他想法:
您应该使用保姆线程向第三方开放任何脚本解释器。 (即,在消耗了一定量的资源后杀死它们 - 这不是保姆应该做的,但唉......)。任何完整的脚本语言都可以做一个简单的"而(true):wait()"
除非逻辑的复杂程度很大(例如,你在例子中说过一两个if-then'这可以用任何语言处理)语言不是安全的功能或表现,但对使用它的人的舒适和熟悉 - 即JavaScript应该很容易。如果你的定制团队知道python,那么继续使用嵌入式jython等。
我不会为了简单的自定义而启动单独的服务。除非复杂性很大,否则嵌入式引擎将是首选。启动一个单独的NodeJS服务器来运行2行脚本是一个相当大的浪费开销,devops复杂性和维护(想想每次运行一个dev实例来运行if-then) - 它不是这很难,但是当你忘记这一点,或者当你雇用一个对此并不了解并且将其剔除的初级开发者时,这可能是2年24小时马拉松调试练习的原因。