Java 调用 Lua
app发版成本高,覆盖速度慢,覆盖率页低。一些策略上的东西如果能够从服务端控制会方便一些。
所以考虑使用Lua这种嵌入式语言作为策略实现,Java则是宿主语言。
总体上看是一个模板方法模式。Lua提供模板方法,其中需要的一些具体实现则有宿主语言Java提供。
1. Luaj:Java与Lua的桥梁
能够作为Java与Lua进行通信的桥梁工具还有别的一些。
但是Luaj 是用纯Java实现,客户端容易加载。且目前还一直有更新和维护,相对感觉靠谱。
需要注意的是: 新版的LuaJ3.0是针对Lua5.2开发的,对Lua5.1会有不兼容的部分(例如module函数不能用了)
如果使用Lua5.1,则可以使用LuaJ2.0.3
2. 使用
2.1 java工程引用jse的jar包
这个简单,下载LuaJ2.0.3版,解压,加载lib/luaj-jse-2.0.3.jar
lib/里边还有个jme,这个是针对j2me环境的。
2.2 示例介绍
功能
实现一个生成时间相关的参数的功能
value = (int)(timestamp / 1000 ) ^ (int)(timestamp / 400)
^ 符号表示按位异或。
其中:
– 整个式子的计算流程由lua提供模板方法
– 除法后取整的功能由lua以module方式提供
– lua没有原生的位操作,所以这部分由java提供
– lua原生的os.time()依赖系统,于是timestamp方法由java