假如引入第三方库,可以找到比较常用的两个选择:Luajava
和Luaj
,简单做一下对比:
第三方库 | 实现 | 特性 |
---|---|---|
Luajava | 非纯Java实现,需要通过native方法调用C库,依赖于Lua 5.1 | 会导致JVM崩溃,不再更新,无人维护 |
Luaj(LuajavaBridge) | 纯Java实现的Lua解析器,无需使用native | 不会因为错误而导致JVM崩溃,支持JSR-223 |
Lua是支持内嵌在C程序中的,但是官方不支持Java,所以我们只能寻找第三方插件了,找到了一个Luajava,这是一个开源项目,实现方式:Luajava实际上就是按照Lua官方文档,把Lua的C接口通过JNI包装成Java的库。下载资源,里面是一个.dll和 一个.jar。把.dll放到java.library.path下,再把.lib放到classpath中。
Luaj简介
主要特性
- 可以从Lua调用Java Class Static Method(Java的静态方法)
- 调用Java方法时,支持int/float/boolean/String/Lua function物种参数类型
- 可以将Lua function作为参数传递给Java,并让Java保存Lua function的引用
- 可以从Java调用Lua的全局函数,或者调用引用指向Lua function
核心原理
Luaj的核心其实就是:从Lua调用Java和从Java调用Lua。
参考文献