자바 에서 lua 스 크 립 트 언어 호출 1

6902 단어 lua
Lua 는 실 용적 인 스 크 립 트 언어 로 Python 에 비해 작 지만 기능 이 손 색 이 없습니다.특히 게임 개발 에서 매우 실 용적 입 니 다(WoW 는 Lua 를 스 크 립 트 로 사용 합 니 다).Lua 가 C\C++의 실현 에 대해 저 는 더 이상 말 하지 않 겠 습 니 다.인터넷 에서 마음대로 검색 하면 곳곳에 이 방면 의 소개 가 있 습 니 다.제 가 말 하고 싶 은 것 은 어떻게 자바 에서 Lua 를 사용 하여 프로 그래 밍 효율 을 높이 고 프로그램의 확장 성 을 강화 하 는 지 하 는 것 입 니 다.
우선,자바 에 Lua 스 크 립 트 를 사용 하려 면 Lua 스 크 립 트 해석 기 및 자바 프로그램 이 이 스 크 립 트 에 접근 할 수 있 는 관련 API,즉 관련 라 이브 러 리 가 있어 야 합 니 다.제 가 사용 하 는 것 은 LuaJava 라 는 오픈 소스 프로젝트 입 니 다.다음 과 같 습 니 다.
4.567915.LuaJava 의 라 이브 러 리 와 소스 코드,문서 사용 비용 등 을 찾 습 니 다.
다운로드 하여 압축 을 푼 후 두 개의 파일(내 가 다운로드 한 것 은 1.1 버 전):luajava-1.1.jar 파일 과 luajava-1.1.dll 동적 연결 라 이브 러 리 파일 을 포함 합 니 다.
luajava-1.1.jar 는 프로그램 이 제공 하 는 API 를 사용 할 수 있 도록 프로젝트 의 ClassPath 에 추가 하 는 것 이 쉬 워 집 니 다.
luaJava-1.1.dll 은 번 거 롭 습 니 다.Windows 설치 디 렉 터 리 에 가입 해 야 합 니 다.예 를 들 어 XP 를 사용 하고 CD 에 설치 하면 C:\WINDOWS 디 렉 터 리 에 직접 가입 하면 됩 니 다.물론 JDK 아래 jre 에 도 가입 할 수 있 습 니 다.예 를 들 어 제 것 은 C:\Program Files\자바\jdk 1.6.0 입 니 다.20\bin
자,이제 프로젝트 는 Lua 스 크 립 트 를 사용 하여 동적 확장 기능 을 실현 할 수 있 습 니 다!하지만 서 두 르 지 마 세 요.Lua 스 크 립 트 를 쓸 도구 가 있어 야 하 죠?수첩 으로 쓸 수 는 없 잖 아 요????????
UltraEdit 을 사용 할 수 있 지만 UE 로 lua 파일 을 열 면 메모 장과 차이 가 많 지 않 고 하 이 라이트 가 없 음 을 발견 할 수 있 습 니 다.(새로운 버 전의 Lua 스 크 립 트 가 지원 되 지 않 을 수도 있 습 니 다)UE 가 지원 하지 않 는 다 면 먼저 UltraEdit 홈 페이지 에서 Lua 를 지원 하 는 Wordfiles 파일 을 다운로드 하 십시오.(
http://www.keplerproject.org/luajava/)텍스트 파일(lua.txt)입 니 다.UltraEdit 설치 디 렉 터 리 에 있 는 wordfile.txt 를 열 고 lua.txt 파일 의 내용 을 복사 하여 wordfile.txt 의 끝,메모리,OK 에 붙 여 넣 습 니 다.그래서 UltraEdit 문법 하 이 라이트 항목 이 Lua 항목 보다 많아 서 선택 하여 사용 할 수 있 습 니 다.다른 언어의 문법 하 이 라이트 지원 은 이와 유사 합 니 다.
하지만 자바 개발 자라 면 이 클립 스 를 다 써 보 셨 겠 죠?Eclipse 에 Lua 스 크 립 트 를 직접 써 주 시 겠 어 요?정 답 은 돼!
이것 은 당연히 Eclipse 의 강력 한 플러그 인 관리 기능 입 니 다.luaeclipse 플러그 인 을 다운로드 하여 Lua 스 크 립 트 를 작성 하 는 능력 을 가 질 수 있 습 니 다.(스 크 립 트 를 강조 할 수도 있 고 시원 하지 않 습 니까?)여기 서 다운로드 할 수 있 습 니 다.
http://www.ultraedit.com/files/wf/lua.txt
다운로드 후 설치 하면 Eclipse 에서 Lua 스 크 립 트 를 만 들 고 작성 할 수 있 습 니 다.첫 번 째 옵션 에서 LUA 에 대한 속성 을 설정 하 십시오.(Eclipse 설치 플러그 인 은 제 가 말 하지 않 아 도 되 죠???)
자,이제 모든 준비 가 다 되 었 습 니 다.Hello World 로 갑시다.
먼저 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 로 저장 되 어야 합 니 다.주의 하 세 요.이것 은 자바 코드 입 니 다!이것 은 자바 코드 가 hello.lua 라 는 스 크 립 트 를 호출 한 것 입 니 다.아래 는 이 스 크 립 트 파일 의 내용 입 니 다.(hello.lua 파일 에 직접 복사 할 수 있 습 니 다)
================================================================
--    
print("       LUA    ")
print("             !
") -- 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,b=b,a print(a) print(b) print(" ".." "..2^3) print(type(2)) --while i=0 print("while ") while i<5 do print(i); i=i+1 end --repeat i=0 print("repeat ") repeat print(i) i=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 프로그램 을 컴 파일 하여 실행 하면 다음 과 같은 출력 결 과 를 볼 수 있 습 니 다.
========================================================
여 기 는 자바 프로그램 에서 Lua 스 크 립 트 를 호출 합 니 다.
현재 LUA 스 크 립 트 언어 를 사용 하고 있 습 니 다.
우리 함께 그것 의 기묘 함 을 느끼 자!
true false
false true
2
1
연결 문자열 8
number
while 순환 예
0
1
2
3
4
반복 반복 예
0
1
2
3
4
for 순환 예
0
1
2
3
4
5
10
2
3
200
400
500
==========================================================
어 때,시원 하지 않 아?재미 없어?자,대본 한 소절 더 주세요.
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)

이 스 크 립 트 가 실행 되면 LUA 의 오묘 함 을 더 알 고 싶 어 질 것 입 니 다.무엇 에 대해 서 는 말 하지 않 겠 습 니 다.직접 실행 해 보 세 요.

좋은 웹페이지 즐겨찾기