J2ME Lua腳本編程學習教程
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腳本編程學習教程的內容介紹完了,希望通過本文的學習能對你有所幫助!