【问题标题】:Java and Scripting languagesJava 和脚本语言
【发布时间】:2011-09-22 23:04:05
【问题描述】:

我正在制作某种沙盒引擎,最终用户能够制作脚本以使他们的世界动态等,目前我只关注 LuaJava,因为我已经放弃了一些 Lua 经验并且发现它非常易读/简单的语言。但我也明白,仅仅根据个人喜好来选择可能是个坏主意,毕竟 Lua 是嵌入到 C 中的,所以性能不会是我想象的最好的。

但是在查看了一些替代方案(Groovy、Clojure)之后,我发现语法不可读/太抽象,Lua 是我的第一次编程体验,即使一开始也很难“获得”,恐怕这些语言只会把我吓跑,我再也不会看脚本了。

是否有可以嵌入到 Java 中的脚本语言在简单性上与 Lua 竞争?

编辑 我对 JavaScript、JPython 的问题是所有的大括号等,因为起始用户符号倾向于 look“硬”。同样对于 python,还有用户需要理解的 Object 的概念,在这种情况下并没有那么有用。

func = function(arg)
   print(arg)
end

就是这么简单……

【问题讨论】:

  • 如果 Lua 旨在嵌入到 C 中,那么您可能会发现它具有许多优越性能,而不是相反。
  • @DeadMG 很好,根据我刚刚发现你是对的基准,我猜这让 Lua 成为我拥有的最佳选择。

标签: java scripting lua


【解决方案1】:

我认为 JavaScript 非常简单,通过Rhino 可以很容易地将它嵌入到 Java 中。脚本既可以预编译,也可以通过 javax.script classes 即时编译,用于连接 Java 平台的脚本引擎(Rhino 就是其中之一)。

不过,如果你喜欢 Lua,有一个名为 - *cough* - Kahlua 的 Lua for Java 项目。他们将“最常见操作的快速运行”列为他们的目标之一。


编辑:重新编辑,我没有立即明白为什么会这样:

func = function(arg)
   print(arg)
end

比这更容易理解:

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

...这是从 Lua 到 JavaScript 的字面翻译,假设您的平台上存在一个名为 print 的函数。我通常会这样写:

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

...但其他方式适用于大多数用途。

但你应该使用你觉得舒服的。

【讨论】:

  • 我知道,对您和本网站上的大多数人来说,这并不难。但是对于那些第一次看到代码的人来说,符号之类的东西会让它“看起来”很困难
  • 我已经在使用一个名为 LuaJ (luaforge.net/docman/view.php/457/5688/README.html) 的项目,它可以选择将 Lua 代码编译为 JavaBytecode。他们还表示,就速度而言,它们几乎与大多数 C 版本相同。
  • @Dasdasd:酷。 (顺便说一句,Kahlua 使用 LuaJ 编译器。)是的,现在有很多用于 JVM 的语言。事实上,here's a list。并非所有这些都像 Rhino 那样带有即时编译功能,我将其作为您项目的重要组成部分。 :-) 最好的,
  • 感谢您的反应,老实说,您的最后一行对我帮助最大。我想我一直都决定了:)
  • @Dasdasd 因为括号而避免使用语言不会让您在未来变得容易。最好早点习惯它,因为括号不会很快消失。
【解决方案2】:

你应该试试JythonJRuby

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 2012-11-24
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    相关资源
    最近更新 更多