J2ME Lua指令碼編程學習教程

來源:互聯網
上載者:User

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項目,然後編寫如下程式:

 
  1. import org.keplerproject.luajava.*;  
  2.  
  3. public class Hello  
  4. {  
  5.     public static void main(String[] args)  
  6.     {  
  7.       LuaState L = LuaStateFactory.newLuaState();  
  8.       L.openLibs();      
  9.       System.out.println("這裡是Java程式調用Lua指令碼");      
  10.       
  11.       // 載入指令碼hello.lua,並執行  
  12.       L.LdoFile("res/hello.lua");   
  13.     }  

好了,程式寫完了,當然是儲存為Hello.java咯,注意,這是Java代碼!這是Java代碼調用了一個叫hello.lua的指令碼,下邊是這個指令檔的內容(你可以直接把他們複製到你的hello.lua檔案中):

基本方法

 
  1. print("您現在使用的是LUA指令碼語言")  
  2. print("讓我們一起來感受它的奇妙吧!\n") 

特點1,賦值

 
  1. a={1,2}  
  2. b=a 
  3. print(a==b, a~=b)    --輸出 true, false  
  4. a={1,2}  
  5. b={1,2}  
  6. print(a==b, a~=b)    --輸出 false, true 

特點2,交換

 
  1. a,b=1,2  
  2. a,bb=b,a  
  3. print(a)  
  4. print(b)  
  5.  
  6. print("串連".."字串"..2^3)  
  7. print(type(2)) 

while迴圈

 
  1. i=0 
  2. print("while迴圈例子")  
  3. while i<5 
  4. do   
  5. print(i);  
  6. ii=i+1   
  7. end 

repeat迴圈

 
  1. i=0 
  2. print("repeat迴圈例子")  
  3. repeat  
  4. print(i)  
  5. ii=i+1  
  6. until i>=5 

for迴圈

 
  1. print("for迴圈例子")  
  2. for i=0,5,1  
  3. do  
  4. print(i)  
  5. end  
  6.  
  7. T1={}  
  8. T1[1] = 10  
  9. print(T1[1])  
  10.  
  11. function fun(a,b,...)  
  12. print(a)  
  13. print(b)  
  14. print(arg[1])  
  15. print(arg[2])  
  16. print(arg[3])  
  17. return  
  18. end  
  19.  
  20. a,b=2,3  
  21. fun(a,b,200,400,500) 

好了,上邊的指令碼如果你不懂什麼意思也沒關係,直接運行一下吧

你可以執行編譯執行那個Hello.java程式就可以了,就會看到如下的輸出結果:

這裡是Java程式調用Lua指令碼,您現在使用的是LUA指令碼語言,讓我們一起來感受它的奇妙吧!

 
  1. true false  
  2. false true  
  3. 2  
  4. 1  
  5. 連接字串8  
  6. number  
  7. while迴圈例子  
  8. 0  
  9. 1  
  10. 2  
  11. 3  
  12. 4  
  13. repeat迴圈例子  
  14. 0  
  15. 1  
  16. 2  
  17. 3  
  18. 4  
  19. for迴圈例子  
  20. 0  
  21. 1  
  22. 2  
  23. 3  
  24. 4  
  25. 5  
  26. 10  
  27. 2  
  28. 3  
  29. 200  
  30. 400  
  31. 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指令碼編程學習教程的內容介紹完了,希望通過本文的學習能對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.