Java調用Lua(轉)


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提供,生成秒級時間戳

文件目錄說明

 

 

2.3 具體實現

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

 

 

Math.java

 

 

lua程序就簡單多了
gen.lua

 

 

div.lua

 

 

3.總結

總體上來說調用起來還算容易,只是文檔有些缺乏。
如果要用Lua5.2則必須用LuaJ3.0。LuaJ3.0和2.0.3還是有一些不一樣的,可以參考前文提到的詳細介紹。

http://levelup.sinaapp.com/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM