java - 使用哪种 JVM 脚本语言来定制 Java Web 应用程序?

标签 java scala groovy beanshell

我正在设计一个系统并考虑使用某种脚本语言,以便让第三方开发人员扩展系统的功能。

只是为了让您了解我的目标...当触发事件时,脚本语言将需要调用 VM 空间上的一些对象来提供常见功能(例如,在 BD 上存储对象、发送电子邮件) .

几年前,在类似的情况下,我使用了 BeanShell效果很好。检查网站,该项目似乎有点过时了。

现在有几种虚拟机语言,Groovy , Scala , 仅举几个。我应该有什么考虑?您有类似环境的经历吗?

最佳答案

Groovy 在语法上与 C/Java 语言家族相似,在语义上基于 Ruby/Python/Smalltalk。它应该有一个平滑的学习曲线,应该不难上手并立即发挥作用(如果这对您的客户来说是一个问题)。

它具有 GroovyShellEval ,用于轻松评估存储在数据库中的某些脚本,例如:

result = Eval.me """
    a = 1 + 2
    b = 3 + 4
    a + b
"""

assert result == 10

请注意,这太原始了,您可能需要某种沙箱,否则您的客户端可能会做一些令人讨厌的事情,例如 System.exit。对于这些场景,有compiler customizersgroovy-sandbox 。另外,您可以add type checking through compiler customization .

关于java - 使用哪种 JVM 脚本语言来定制 Java Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39271853/

相关文章:

java - 我将如何为这样的算法建立递归关系?

java - 如何在JSP中的java scriptlet中插入javascript?

java - 为什么在实例化Object时需要在具有Parameterized Constructor的POJO文件中声明Default constructor?

java - 如何更新 Scala 中日期格式的列

scala - 使用Play.async会产生什么效果,因为Play使用非阻塞的Netty

java - spring-boot:测试@service类

c# - 分组 : for comprehensions in scala vs .net linq

grails - Grails findAll在 'each'闭包内返回空属性

java - JDBC 中古怪的 latin1 到 UTF8 的转换

java - 创建和检索 JIRA 远程问题链接