- 浏览: 3500517 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
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,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程序就可以了,就会看到如下的输出结果:
========================================================
这里是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
==========================================================
怎样,是不是很爽呢?觉得没意思?好,在来一段脚本吧:
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的奥妙,至于什么我就不说了,你们自己运行看看吧。。。哈哈,就写到这里了,我去上下WC。。。。
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74147在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3757原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23491Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2133FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5516我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2346WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1565Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2120终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14838大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1709charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22610Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4882来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2370本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8685一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2902近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3700目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2537Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2099由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3002安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1854本文介绍物理地址扩展 ...
相关推荐
Java调用Lua脚本是一种常见的跨语言交互技术,特别是在游戏开发和自动化脚本编写中。本文将详细介绍如何在Java环境中使用LuaJava库进行交互,并在Linux系统上进行安装和编译。 首先,让我们理解LuaJava。LuaJava是...
这种理念使得Lua成为了一个高效的脚本语言,适用于多种开发环境。 最后,这本书的翻译和校对是由***的朋友们共同努力的结果。参与翻译和校对的人员被记录在名为thanks.lua的文件中,体现了开源和协作精神在编程社区...
Java对象可以通过`JillEngine.registerJavaObject()`注册到Lua环境,然后在Lua脚本中使用。反之,Lua的值也可以通过`JillEngine.getGlobal()`获取到Java世界。 5. **错误处理**:在运行Lua脚本时,可能会遇到语法...
首先,让我们深入了解一下使用Lua脚本在高并发场景中的价值。在并发环境中,数据一致性是非常关键的。Lua脚本的原子性操作特性使得它成为解决这类问题的理想选择。当多线程或多个客户端同时访问同一数据时,Lua脚本...
总结,nodemcu lua脚本语言开发涉及到固件管理、工具使用、文档查阅和编程环境搭建等多个环节。通过熟悉这些知识,开发者可以高效地进行nodemcu项目开发,利用lua的简洁性和易读性,快速实现物联网应用。在实践中,...
luajava是Lua语言与Java平台的交互库,它允许Lua脚本直接调用Java类和方法,同时也让Java程序能够执行Lua代码,实现了两种语言的无缝集成。这个压缩包"luajava-x32-x64.zip"包含了luajava-1.1.jar的64位和32位版本,...
这个JAR文件可以被JavaWeb应用引入,以便在Servlets、JSP或其他Java组件中使用lua的功能。通过`java.lang.reflect.Method`和`java.lang.invoke.MethodHandle`等Java反射机制,可以动态地调用Lua函数,实现动态脚本...
LuaJava是将Lua脚本语言与Java平台紧密结合的一个开源项目,它允许在Java程序中无缝地嵌入和执行Lua代码,从而实现灵活的脚本化功能。这个技术尤其适用于游戏开发、自动化测试、配置管理等领域,因为它提供了快速...
- **背景**:2018年腾讯游戏安全竞赛中的一项挑战,题目要求选手通过逆向工程分析出使用Lua脚本的游戏逻辑。 - **技术细节**:该题目的难点在于Lua字节码被进行了特殊处理,包括修改文件头以及对字节码进行了简单的...
3. 示例代码或文档,展示如何在Lua中使用Java API。 4. 配置文件,可能包含LuaJIT和LuaJava的设置选项。 总的来说,Lua-1.0.113 luajava是结合了Lua的灵活性和Java的高性能的一个解决方案,为开发者提供了一种高效...
"luajava-1.1-x64-lua51"是一个针对64位系统的版本,它提供了将Lua脚本集成到Java应用中的解决方案。本文将深入探讨这个工具包的原理、用途以及如何使用。 首先,我们要理解Lua和Java的基础。Lua是一种轻量级的脚本...
使用LuaJava,开发者无需了解底层的C/C++接口,而是可以直接在Java环境中加载和运行Lua脚本,极大地简化了跨语言交互的过程。 LuaJava的源代码提供给了开发者深入研究和定制的可能性。通过查看和分析源代码,我们...
从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出关于Lua脚本编程语言的重要知识点,这些知识点覆盖了Lua的基本概念、特点、应用场景以及其与其他编程语言的关系。 ### Lua脚本编程语言简介 #### 核心...
LuaJava是一个强大的工具,它将Lua脚本语言与Java环境紧密地结合起来,使得开发者可以在Java应用程序中无缝地使用Lua脚本进行逻辑处理和扩展功能。在本文中,我们将深入探讨LuaJava的核心特性、安装与配置、使用方法...
luajava-1.1.0是一个专门用于连接Lua脚本语言和Java平台的库,它为开发者提供了在Java应用程序中运行Lua代码的能力,同时也允许Lua程序调用Java类和方法,实现了两者的无缝集成。这一强大的工具广泛应用于游戏开发、...
在本文中,我们将深入探讨如何使用J2ME(Java 2 Micro Edition)和LUA脚本语言进行手机游戏开发,以实现一个经典的俄罗斯方块游戏。J2ME是一种轻量级的Java平台,广泛用于移动设备,如早期的智能手机和平板电脑。LUA...
- **高性能**:Lua解释器运行速度快,对资源占用少,适合在有限的硬件环境中使用。 - **灵活性**:Lua支持面向过程、面向对象和函数式编程,可以根据需求灵活选择编程风格。 5. Lua在游戏开发中的应用: Lua因其...