【发布时间】:2012-03-04 12:49:52
【问题描述】:
有没有一种方法可以让我在 java 中制作我的程序,但让所有插件都基于 lua?如何跨语言执行所有钩子等,我可以从 Java 访问函数等吗?我更喜欢在运行时完成,而不是让交叉编译器预先更改它。
【问题讨论】:
-
看看 LuaJ - sourceforge.net/projects/luaj.
有没有一种方法可以让我在 java 中制作我的程序,但让所有插件都基于 lua?如何跨语言执行所有钩子等,我可以从 Java 访问函数等吗?我更喜欢在运行时完成,而不是让交叉编译器预先更改它。
【问题讨论】:
另一种选择是LuaJava。它允许您在 Java 程序中使用 Lua 脚本。从字面上说在 Lua 中实现接口:
LuaJava 还允许 Java 使用 Lua 实现接口。这样任何接口都可以在 Lua 中实现并作为参数传递给任何方法,当被调用时,在 Lua 中将调用等效函数,并将结果传递回 Java。
这种实现的一个例子:
button_cb = {}
function button_cb.actionPerformed(ev) ... end
buttonProxy = luajava.createProxy("java.awt.ActionListener", button_cb)
当然,您也可以使用熟悉的 C API(适用于 Java)从 Java 调用“普通”Lua 函数。
【讨论】:
在Lua Development Tools 中,我们正在使用Metalua 解析Lua 源代码,JNLua 使这成为可能。不仅可以从 Java 中调用 Lua 代码,而且 Lua 代码还可以操作/实例化 Java 类!
【讨论】: