Java和脚本语言

4
我正在开发一种沙盒引擎,最终用户能够创建脚本来使他们的世界动态化等。目前我只考虑使用LuaJava,因为我有相当多的Lua经验并认为它是一种非常易读/易用的语言。但我也理解,仅基于个人偏好选择可能不是一个好主意,毕竟Lua被设计成嵌入到C中,所以性能可能不会是最好的。

但在查看了一些替代方案(Groovy、Clojure)后,我发现它们的语法难以理解/过于抽象。Lua是我的第一次编程经验,即使在开始时这也相当困难,我担心这些语言会让我感到十分害怕,从而再也不会看脚本了。

有没有可以嵌入到Java中与Lua在简单性方面竞争的脚本语言呢?

编辑 我对JavaScript、JPython的问题在于所有的括号等符号都很难理解。对于初学者来说,符号通常会看起来很“难”。此外,在Python中还有对象的概念需要用户理解,而在这种情况下这并不是很有用。

func = function(arg)
   print(arg)
end

如此简单...


如果Lua被设计为嵌入到C中,那么你很可能会发现它具有更出色的性能,而不是相反。 - Puppy
@DeadMG,根据我刚找到的基准测试结果,你是对的,看来Lua就是我最好的选择。 - Timotheus
2个回答

6
我认为JavaScript非常简单,可以通过Rhino轻松嵌入Java中。脚本可以预编译,也可以通过javax.script即时编译,该类用于连接Java平台的脚本引擎(其中Rhino是其中之一)。
如果您喜欢Lua,那么有一个名为Kahlua的Java Lua项目。他们将“最常见操作的快速运行时”列为其目标。

编辑:关于您的编辑,我立即没有看到为什么会这样:

func = function(arg)
   print(arg)
end

比起这个,理解起来要简单得多:

func = function(arg) {
   print(arg);
};

这是从Lua翻译到JavaScript的字面意思,前提是您的平台上存在名为print的函数。相反,我通常会这样写:

function func(arg) {
   print(arg);
}

...但对于大多数目的来说,另一种方法也可以。

但你应该使用自己熟悉的方式。


我知道对于我、你和这个网站上的大多数人来说,这并不难。但是对于第一次接触代码的人来说,像符号这样的东西会让它看起来很难。 - Timotheus
1
我已经在使用一个名为LuaJ(http://luaforge.net/docman/view.php/457/5688/README.html)的项目,该项目具有将Lua代码编译为Java字节码的选项。他们还声明在速度方面几乎与大多数C版本相当。 - Timotheus
@Dasdasd:很酷。 (顺便说一下,Kahlua使用LuaJ编译器。)是的,现在有很多适用于JVM的语言;实际上,这里有一个列表。并非所有语言都像Rhino那样具备即时编译的功能,而我认为这是您项目中重要的一部分。 :-) 最好的祝愿, - T.J. Crowder
谢谢你们的反馈,我必须诚实地说,你们最后一句话帮了我很多。我想我一直都做出了决定 :) - Timotheus
@Dasdasd:不用担心,很高兴能帮到你。顺便说一下,如果你最终采取了不同的方法,在这里回答自己的问题并接受它是完全可以的。如果上面的答案确实回答了你的问题,那太好了,但如果没有,不要感到有义务接受它。祝你的项目顺利!最好的祝福。 - T.J. Crowder
1
避免因为括号而回避编程语言并不能让你的未来更轻松。最好早点适应它,因为括号在不久的将来不会消失。 - petervaz

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接