Java調用Lua(轉)

Java 調用 Lua

app發版成本高,覆蓋速度慢,覆蓋率頁低。一些策略上的東西若是可以從服務端控制會方便一些。
因此考慮使用Lua這種嵌入式語言做爲策略實現,Java則是宿主語言。html

整體上看是一個模板方法模式。Lua提供模板方法,其中須要的一些具體實現則有宿主語言Java提供。java

1. Luaj:Java與Lua的橋樑

可以做爲Java與Lua進行通訊的橋樑工具還有別的一些。
可是Luaj 是用純Java實現,客戶端容易加載。且目前還一直有更新和維護,相對感受靠譜。閉包

須要注意的是: 新版的LuaJ3.0是針對Lua5.2開發的,對Lua5.1會有不兼容的部分(例如module函數不能用了)
若是使用Lua5.1,則能夠使用LuaJ2.0.3app

更詳細的介紹函數

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)
^ 符號表示按位異或。ui

其中:
– 整個式子的計算流程由lua提供模板方法
– 除法後取整的功能由lua以module方式提供
– lua沒有原生的位操做,因此這部分由java提供
– lua原生的os.time()依賴系統,因而timestamp方法由java提供,生成秒級時間戳lua

文件目錄說明spa

 

 

2.3 具體實現

接下來就看4個文件的具體代碼吧。請着重注意註釋,要說的都在裏邊了
Calc.java:code

 

 

Math.java

 

 

lua程序就簡單多了
gen.lua

 

 

div.lua

 

 

3.總結

整體上來講調用起來還算容易,只是文檔有些缺少。
若是要用Lua5.2則必須用LuaJ3.0。LuaJ3.0和2.0.3仍是有一些不同的,能夠參考前文提到的詳細介紹。

http://levelup.sinaapp.com/

相關文章
相關標籤/搜索