我正在寻找 ECMAScript 替代方案来作为自定义应用程序逻辑的脚本语言。ECMA 有一些我喜欢的地方,尤其是新规范(如 AS3)的语法。

不幸的是,AS3 引擎不是开源的,无法集成到项目中。我想要一种专为面向对象使用而设计的脚本语言。

具体来说,是否有一种语言具有:

  • 静态类型变量(可选)
  • 类,包括公共/私有成员
  • 继承,包括接口
  • 套餐(可选)
  • 简洁的语法
  • 必须能够作为应用程序的内部脚本语言(例如浏览器的 Javascript)进行接口,不能是外部系统调用。

我宁愿不做的事情

  • 混乱的ECMA prototype 目的

您所了解的哪些语言符合此要求?我很难找到一种专为良好的面向对象设计而设计的高质量脚本语言。

有帮助吗?

解决方案

在 Java 中,最好的 ECMAScript (Javascript) 选项是嵌入 犀牛. 。我不认为基于原型的继承是一个交易杀手,因为通过一些纪律,你可以使它的行为几乎像基于类的继承。

如果您想要与 Java 紧密互操作的东西,请选择 格罗维. 。如果您需要 JVM 兼容性,还请查看 Jython (JVM 上的 python), 朱比 (JVM 上的 Ruby)和 斯卡拉 (JVM 上的函数式语言)。如果您不关心 Java 和 JVM 兼容性,请查看 红宝石, Python, , 和 埃尔兰. 克洛尤尔 是 JVM 上 Lisp 的一种方言。

更进一步,TCL(工具命令语言)可以让你在C/C++代码中嵌入解释器,还有许多可嵌入的Lisp和Scheme解释器等。

其他提示

如果您想要一种像 ECMAScript 一样工作的脚本语言,为什么不使用 ECMAScript 呢?有很多开源实现,只需查看以下列表即可 维基百科.

我推荐 Python 或 Ruby。两者都不像 ECMA,但我是在 JavaScript 之后学习它们的,而且它们很容易上手。另外,它们是更强大的语言,使其成为在应用程序内部使用 JavaScript 引擎(Rhino for Java)的更好替代方案。

Python

  • 强制使用干净的语法(几乎像英语 while is not False:)
  • 多重继承(无接口)
  • 解释器可以使用 C/C++ 进行扩展(如果需要,可能用于您的适配器)

红宝石

  • 语法应该接近英语(unless 有条件的, until 环形)
  • 一切都是对象
  • 只支持单继承,但使用Mixins来添加功能

两个都

  • 课程
  • 可以嵌入到另一个应用程序中
  • 私人会员
  • 套餐

卢阿 - 你想要的一切以及更多内容都在 ~100KB 内

Lua 和其他提到的语言之间的比较页面。

Neko 上的 Haxe 看起来正是您想要的东西。我不知道 nekovm 的嵌入式程度如何,但它是开源的,所以你可以摆弄它。 http://haxe.org

红宝石 解释器也可以嵌入到 C 程序中,并且可能被一些人认为比 Python 更面向对象。

我们使用 ECMAscript 作为我所开发的软件产品的扩展语言,并且效果非常好。作为一种标准(且流行)的语言,很高兴能够向我们的用户指出该语言的大量现成文档。我们构建了自己的 ECMAscript 编译器,可以将其转换为我们正在运行的平台的字节码,但如果我可以重来一次,我会认真考虑嵌入 Google 的 V8 ECMAscript 引擎(事实上,我什至会考虑构建我们的整个应用程序)。

我会选择一些相当主流的东西来简化事情。阅读了您的要求后,我建议您 Python. 。它实际上并不具有 Java/C# 方式的接口,但也并不真正需要它们。除此之外,它应该很合适。

Qt脚本 是 ECMAScript。您没有提到您的应用程序的主要部分是用什么编写的,但我想它不是 Qt,或者您已经了解 QtScript。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top