J2ME Lua指令碼編程學習教程是本文要介紹的內容,主要是來學習J2ME中關於Lua的內容,具體內容的實現來看本文詳解。
一、適合J2ME的嵌入式指令碼語言
對於硬體資源受限的J2ME平台,對嵌入的指令碼有很高的要求。
1)體積小巧,執行效率高,佔用較低的記憶體。
2)文法簡單,易學易用最好是比較流行的指令碼語言)。
3)獨立性強,不依賴其它程式。適合移植到KVM環境下。
根據以上條件進行對比和篩選,我最終選擇了Lua以及ECMAScript。
Lua是一個小巧的指令碼語言。作者是巴西人。它的設計目就是為了嵌入應用程式,為應用程式提供靈活的擴充和定製功能。 Lua是目前公認的最小巧,執行效率最高,同時功能非常強大的的指令碼語言之一。它被大量用於遊戲軟體中。文法類似basic,非常容易上手。
ECMAScript是由歐洲電腦製造商協會ECMA)通過ECMA-262標準化的指令碼程式設計語言。這種語言在全球資訊網上應用廣泛,它往往被稱為JavaScript或JScript,但實際上後兩者是ECMA-262標準的擴充
還有一種幾乎是專為J2ME環境開發的Java動態語言,Hecl。Hecl程式設計語言是一種用Java實現的進階指令碼語言. 它的特點是非常小,可擴充,非常靈活並且易於學習和使用。
二、相關開源項目介紹
1)kahlua(卡魯瓦)
kahlua是一款基於CLDC1.1且非常小巧的Lua解譯器,它很容易擴充。只需要配合一個Lua編譯器,就可以執行編譯後的Lua原始碼。
項目地址:http://code.google.com/p/kahlua/
2)mochalua(穆哈)
mochalua同樣也是基於CLDC1.1實現的Lua解譯器。
項目地址:http://code.google.com/p/mochalua/
3)minijoe
minijoe自稱最小的JavaScript運行環境,基本上支援了所有的ECMA-262特性。它帶有一個編譯器和一個解譯器。該編譯器將ECMAScript原始碼編譯成作者設計的一套很簡化的位元組碼。然後通過解譯器執行位元組碼。整個代碼非常樸實高效,尤其是解譯器的部分。
項目地址:http://www.minijoe.com/
4)Hecl
這個動態語言最初就是針對J2ME平台設計的,它附帶了非常多的J2ME示範。不過與上面三個項目不同,它採用瞭解釋執行的方式,一定程度上降低了指令碼的執行效率。
項目地址:http://www.hecl.org/
總之:由於J2ME平台資源拮据,大多數的嵌入方案都採用了編譯執行的模式。將指令碼原始碼編譯成更簡單的“位元組碼”,然後在用戶端執行這些“位元組碼”。這樣做的好處是,解譯器更簡單,執行更高效。至於上面的開源項目,建議學習kahlua,minijoe和Hecl。mochalua似乎更新比較緩慢。
三、Java中使用Lua指令碼語言
Lua是一個實用的指令碼語言,相對於Python來說,比較小巧,但它功能並不遜色,特別是在遊戲開發中非常實用WoW採用的就是Lua作為指令碼的)。Lua在C\C++的實現我就不多說了,網上隨便一搜,到處都是這方面的介紹,我想說的是如何在Java下使用Lua以提高編程效率、增強你的程式可擴充性。
首先,要在Java上使用Lua指令碼,必須有關於Lua指令碼解譯器以及Java程式可以訪問這些指令碼的相關API,即相關類庫。我使用的是一個叫做LuaJava的開源項目,可以在: http://www.keplerproject.org/luajava/ 找到LuaJava的類庫以及原始碼,使用文檔資等
下載下來解壓後包括兩個檔案(我下載的是1.1版本的): luajava-1.1.jar 檔案和 luajava-1.1.dll動態串連庫檔案
luajava-1.1.jar就容易了,就是將其加入你的項目的ClassPath中,以便程式可以使用它提供的API
luaJava-1.1.dll就麻煩了,你必須將其加入你的Windows安裝目錄下,比如你用的是XP,安裝在C盤,那就直接將其加入C:\WINDOWS目錄下即可,當然你也可以將其加入你的JDK下的jre下
好了,現在你的項目就可以使用Lua指令碼來實現動態擴充功能了!不過不要急,你還得有工具來寫Lua指令碼吧?不可能用記事本來寫吧?
你可以使用UltraEdit,但你用UE開啟lua檔案後,會發現和記事本差不多,並沒有高亮可能新版本的支援Lua指令碼了),如果你的UE不支援,那麼先去UltraEdit的官網下載支援Lua的Wordfiles檔案(http://www.ultraedit.com/files/wf/lua.txt),是個文字檔(lua.txt)。開啟UltraEdit安裝目錄下的wordfile.txt,把lua.txt檔案中的內容拷貝粘貼到wordfile.txt的末尾,存檔,OK,於是UltraEdit文法高亮項多出Lua一項,可以選擇使用了。其他語言的文法高亮支援與此類似。
但你如果是Java開發人員,應該都用過Eclipse吧?可否在Eclipse下直接就寫Lua指令碼呢?答案是可以的!
這當然是Eclipse的強大的外掛程式管理功能啦,你可以去下載luaeclipse外掛程式來使你的Eclipse擁有編寫Lua指令碼的能力既可以高亮顯示你的指令碼,是不是很爽呢),你可以在這裡下載:http://www.ideais.com.br/luaeclipse/
下載後安裝後,你的Eclipse就可以建立和編寫Lua指令碼了,注意設定一下喜好設定中關於LUA的屬性(Eclipse安裝外掛程式就不用我說了吧????)
好了,現在一切都準備好了,讓我們來一個HelloWorld吧!
首先在Eclipse先建立一個TestLua項目,然後編寫如下程式:
- import org.keplerproject.luajava.*;
-
- public class Hello
- {
- public static void main(String[] args)
- {
- LuaState L = LuaStateFactory.newLuaState();
- L.openLibs();
- System.out.println("這裡是Java程式調用Lua指令碼");
-
- // 載入指令碼hello.lua,並執行
- L.LdoFile("res/hello.lua");
- }
- }
好了,程式寫完了,當然是儲存為Hello.java咯,注意,這是Java代碼!這是Java代碼調用了一個叫hello.lua的指令碼,下邊是這個指令檔的內容(你可以直接把他們複製到你的hello.lua檔案中):
基本方法
- print("您現在使用的是LUA指令碼語言")
- print("讓我們一起來感受它的奇妙吧!\n")
特點1,賦值
- a={1,2}
- b=a
- print(a==b, a~=b) --輸出 true, false
- a={1,2}
- b={1,2}
- print(a==b, a~=b) --輸出 false, true
特點2,交換
- a,b=1,2
- a,bb=b,a
- print(a)
- print(b)
-
- print("串連".."字串"..2^3)
- print(type(2))
while迴圈
- i=0
- print("while迴圈例子")
- while i<5
- do
- print(i);
- ii=i+1
- end
repeat迴圈
- i=0
- print("repeat迴圈例子")
- repeat
- print(i)
- ii=i+1
- until i>=5
for迴圈
- print("for迴圈例子")
- for i=0,5,1
- do
- print(i)
- end
-
- T1={}
- T1[1] = 10
- print(T1[1])
-
- function fun(a,b,...)
- print(a)
- print(b)
- print(arg[1])
- print(arg[2])
- print(arg[3])
- return
- end
-
- a,b=2,3
- fun(a,b,200,400,500)
好了,上邊的指令碼如果你不懂什麼意思也沒關係,直接運行一下吧
你可以執行編譯執行那個Hello.java程式就可以了,就會看到如下的輸出結果:
這裡是Java程式調用Lua指令碼,您現在使用的是LUA指令碼語言,讓我們一起來感受它的奇妙吧!
- true false
- false true
- 2
- 1
- 連接字串8
- number
- while迴圈例子
- 0
- 1
- 2
- 3
- 4
- repeat迴圈例子
- 0
- 1
- 2
- 3
- 4
- for迴圈例子
- 0
- 1
- 2
- 3
- 4
- 5
- 10
- 2
- 3
- 200
- 400
- 500
四、LUA.ORG的官方開發工具
Lua 5.1.4是最新版本(完成與2008.8.22),原始碼為C,Lua_v5.1.4.23.exe 這個程式為LUA5.1的安裝環境,其中包括
lua.exe 該命令可以執行一個編譯過的LUA程式
luac.exe 該命令可以將一個LUA源檔案編譯成一個名為LUAC.OUT的位元組碼檔案
SciTE\SciTE.exe 這個是個LUA IDE
lExecutor.wlua 該視窗程序可以執行一個LUA源檔案
也可以頁面運行指令碼程式可以在這個網址!http://www.lua.org/cgi-bin/demo
五、LUA教程
線上教程:http://manual.luaer.cn/
也可以下載lua-5.1中文手冊.chm 到本地。
小結:詳解J2ME Lua指令碼編程學習教程的內容介紹完了,希望通過本文的學習能對你有所協助!