真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

lua調(diào)用java代碼 lua調(diào)用api

lua如何調(diào)用java程序

Lua是一個(gè)實(shí)用的腳本語(yǔ)言,相對(duì)于Python來(lái)說(shuō),比較小巧,但它功能并不遜色,特別是在游戲開發(fā)中非常實(shí)用(WoW采用的就是Lua作為腳本的)。Lua在C\C++的實(shí)現(xiàn)我就不多說(shuō)了,網(wǎng)上隨便一搜,到處都是這方面的介紹,我想說(shuō)的是如何在Java下使用Lua以提高編程效率、增強(qiáng)你的程序可擴(kuò)展性。

我們注重客戶提出的每個(gè)要求,我們充分考慮每一個(gè)細(xì)節(jié),我們積極的做好做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),我們努力開拓更好的視野,通過不懈的努力,創(chuàng)新互聯(lián)公司贏得了業(yè)內(nèi)的良好聲譽(yù),這一切,也不斷的激勵(lì)著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),微信平臺(tái)小程序開發(fā),網(wǎng)站開發(fā),技術(shù)開發(fā)實(shí)力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫(kù)的技術(shù)開發(fā)工程師。

首先,要在Java上使用Lua腳本,必須有關(guān)于Lua腳本解釋器以及Java程序可以訪問這些腳本的相關(guān)API,即相關(guān)類庫(kù)。我使用的是一個(gè)叫做LuaJava的開源項(xiàng)目,可以在: 找到LuaJava的類庫(kù)以及源代碼,使用文檔資等

下載下來(lái)解壓后包括兩個(gè)文件(我下載的是1.1版本的): luajava-1.1.jar 文件和 luajava-1.1.dll動(dòng)態(tài)連接庫(kù)文件

luajava-1.1.jar就容易了,就是將其加入你的項(xiàng)目的ClassPath中,以便程序可以使用它提供的API

luaJava-1.1.dll就麻煩了,你必須將其加入你的Windows安裝目錄下,比如你用的是XP,安裝在C盤,那就直接將其加入C:\WINDOWS目錄下即可,當(dāng)然你也可以將其加入你的JDK下的jre下

好了,現(xiàn)在你的項(xiàng)目就可以使用Lua腳本來(lái)實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)展功能了!不過不要急,你還得有工具來(lái)寫Lua腳本吧?不可能用記事本來(lái)寫吧???????

你可以使用UltraEdit,但你用UE打開lua文件后,會(huì)發(fā)現(xiàn)和記事本差不多,并沒有高亮(可能新版本的支持Lua腳本了),如果你的UE不支持,那么先去UltraEdit的官網(wǎng)下載支持Lua的Wordfiles文件(),是個(gè)文本文件(lua.txt)。打開UltraEdit安裝目錄下的wordfile.txt,把lua.txt文件中的內(nèi)容拷貝粘貼到wordfile.txt的末尾,存盤,OK,于是UltraEdit語(yǔ)法高亮項(xiàng)多出Lua一項(xiàng),可以選擇使用了。其他語(yǔ)言的語(yǔ)法高亮支持與此類似。

但你如果是Java開發(fā)者,應(yīng)該都用過Eclipse吧?可否在Eclipse下直接就寫Lua腳本呢?答案是可以的!

這當(dāng)然是Eclipse的強(qiáng)大的插件管理功能啦,你可以去下載luaeclipse插件來(lái)使你的Eclipse擁有編寫Lua腳本的能力(既可以高亮顯示你的腳本,是不是很爽呢),你可以在這里下載:

下載后安裝后,你的Eclipse就可以建立和編寫Lua腳本了,注意設(shè)置一下首選項(xiàng)中關(guān)于LUA的屬性(Eclipse安裝插件就不用我說(shuō)了吧????)

好了,現(xiàn)在一切都準(zhǔn)備好了,讓我們來(lái)一個(gè)HelloWorld吧!

首先在Eclipse先建立一個(gè)TestLua項(xiàng)目,然后編寫如下程序:

import org.keplerproject.luajava.*;

public class Hello

{

public static void main(String[] args)

{

LuaState L = LuaStateFactory.newLuaState();

L.openLibs();

System.out.println("這里是Java程序調(diào)用Lua腳本");

// 加載腳本hello.lua,并執(zhí)行

L.LdoFile("res/hello.lua");

}

}

好了,程序?qū)懲炅?,?dāng)然是保存為Hello.java咯,注意,這是Java代碼!這是Java代碼調(diào)用了一個(gè)叫hello.lua的腳本,下邊是這個(gè)腳本文件的內(nèi)容(你可以直接把他們復(fù)制到你的hello.lua文件中):

================================================================

--基本方法

print("您現(xiàn)在使用的是LUA腳本語(yǔ)言")

print("讓我們一起來(lái)感受它的奇妙吧!\n")

--特點(diǎ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

--特點(diǎn)2,交換

a,b=1,2

a,b=b,a

print(a)

print(b)

print("連接".."字符串"..2^3)

print(type(2))

--while循環(huán)

i=0

print("while循環(huán)例子")

while i5

do

print(i);

i=i+1

end

--repeat循環(huán)

i=0

print("repeat循環(huán)例子")

repeat

print(i)

i=i+1

until i=5

--for循環(huán)

print("for循環(huán)例子")

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)

========================================================

好了,上邊的腳本如果你不懂什么意思也沒關(guān)系,直接運(yùn)行一下吧

你可以執(zhí)行編譯執(zhí)行那個(gè)Hello.java程序就可以了,就會(huì)看到如下的輸出結(jié)果:

========================================================

這里是Java程序調(diào)用Lua腳本

您現(xiàn)在使用的是LUA腳本語(yǔ)言

讓我們一起來(lái)感受它的奇妙吧!

true false

false true

2

1

連接字符串8

number

while循環(huán)例子

1

2

3

4

repeat循環(huán)例子

1

2

3

4

for循環(huán)例子

1

2

3

4

5

10

2

3

200

400

500

==========================================================

怎樣,是不是很爽呢?覺得沒意思?好,在來(lái)一段腳本吧:

frame = luajava.newInstance("java.awt.Frame", "Lua Java Console")

console = luajava.newInstance("java.awt.TextArea")

buttons_pn = luajava.newInstance("java.awt.Panel")

execute_bt = luajava.newInstance("java.awt.Button", "Execute")

clear_bt = luajava.newInstance("java.awt.Button", "Clear")

exit_bt = luajava.newInstance("java.awt.Button", "Exit")

frame:setSize(600,300)

buttons_pn:add(execute_bt)

buttons_pn:add(clear_bt)

buttons_pn:add(exit_bt)

BorderLayout = luajava.bindClass("java.awt.BorderLayout")

frame:add(BorderLayout.NORTH, console)

frame:add(BorderLayout.SOUTH, buttons_pn)

frame:pack()

frame:show()

--

-- Listeners

--

execute_cb = {

actionPerformed = function(ev)

print("execute")

pcall(loadstring(console:getText()))

end

}

jproxy = luajava.createProxy("java.awt.event.ActionListener",execute_cb)

execute_bt:addActionListener(jproxy)

clear_cb = {actionPerformed= function (ev)

print("clear");

console:setText("");

end

}

jproxy = luajava.createProxy("java.awt.event.ActionListener" ,clear_cb)

clear_bt:addActionListener(jproxy)

exit_cb = { actionPerformed=function (ev)

print("exit")

frame:setVisible(false)

frame:dispose()

end

}

jproxyb = luajava.createProxy("java.awt.event.ActionListener" ,exit_cb)

exit_bt:addActionListener(jproxyb)

close_cb = { }

function close_cb.windowClosing(ev)

print("close")

frame:setVisible(false)

frame:dispose()

end

function close_cb.windowActivated(ev)

print("act")

end

jproxy = luajava.createProxy("java.awt.event.WindowListener", close_cb)

frame:addWindowListener(jproxy)

這段腳本運(yùn)行后你將會(huì)非常想進(jìn)一步了解LUA的奧妙,至于什么我就不說(shuō)了,你們自己運(yùn)行看看吧。。。哈哈,就寫到這里了,我去上下WC。。。。

在java中調(diào)用lua執(zhí)很多次之后,內(nèi)存使用率持續(xù)上升,無(wú)法釋放

要看LuaState luaState = LuaStateFactory.newLuaState();

和 luaState.close();的實(shí)現(xiàn)方式。

lua中有調(diào)用內(nèi)存分配用戶對(duì)象,但沒注冊(cè)gc的話,luastate的close不會(huì)釋放內(nèi)存。

lua數(shù)組轉(zhuǎn)到j(luò)ava數(shù)組

你可以使用Lua提供的標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,而這一模塊可以將Lua數(shù)組轉(zhuǎn)換為Java數(shù)組。具體操作方法是:首先使用require('luajava')加載luajava模塊,然后把Lua數(shù)組傳到LuaJava轉(zhuǎn)換函數(shù),如toJavaArray(),最后再把轉(zhuǎn)換出來(lái)的Java數(shù)組賦值給給Java的變量就可以了。


文章標(biāo)題:lua調(diào)用java代碼 lua調(diào)用api
轉(zhuǎn)載來(lái)于:http://weahome.cn/article/ddsgphi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部