zoukankan      html  css  js  c++  java
  • Java调用Lua(转)

    Java 调用 Lua

    app发版成本高,覆盖速度慢,覆盖率页低。一些策略上的东西如果能够从服务端控制会方便一些。
    所以考虑使用Lua这种嵌入式语言作为策略实现,Java则是宿主语言。

    总体上看是一个模板方法模式。Lua提供模板方法,其中需要的一些具体实现则有宿主语言Java提供。

    1. Luaj:Java与Lua的桥梁

    能够作为Java与Lua进行通信的桥梁工具还有别的一些。
    但是Luaj 是用纯Java实现,客户端容易加载。且目前还一直有更新和维护,相对感觉靠谱。

    需要注意的是: 新版的LuaJ3.0是针对Lua5.2开发的,对Lua5.1会有不兼容的部分(例如module函数不能用了)
    如果使用Lua5.1,则可以使用LuaJ2.0.3

    更详细的介绍

    2. 使用

    2.1 java工程引用jse的jar包

    这个简单,下载LuaJ2.0.3版,解压,加载lib/luaj-jse-2.0.3.jar
    lib/里边还有个jme,这个是针对j2me环境的。

    2.2 示例介绍

    功能
    实现一个生成时间相关的参数的功能
    value = (int)(timestamp / 1000 ) ^ (int)(timestamp / 400)
    ^ 符号表示按位异或。

    其中:
    – 整个式子的计算流程由lua提供模板方法
    – 除法后取整的功能由lua以module方式提供
    – lua没有原生的位操作,所以这部分由java提供
    – lua原生的os.time()依赖系统,于是timestamp方法由java提供,生成秒级时间戳

    文件目录说明

    2.3 具体实现

    接下来就看4个文件的具体代码吧。请着重注意注释,要说的都在里边了
    Calc.java:

    Math.java

    lua程序就简单多了
    gen.lua

    div.lua

    3.总结

    总体上来说调用起来还算容易,只是文档有些缺乏。
    如果要用Lua5.2则必须用LuaJ3.0。LuaJ3.0和2.0.3还是有一些不一样的,可以参考前文提到的详细介绍。

    http://levelup.sinaapp.com/

  • 相关阅读:
    background-position 使用方法具体介绍
    Android平台上直接物理内存读写漏洞的那些事
    自己编写高负荷測试的工具
    String,StringBuffer与StringBuilder的差别??
    shell之here文档
    心跳检测的思路及代码
    高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离
    MySQL主从复制之Mycat简单配置和高可用
    Mycat 读写分离+分库分表
    MyCat:对MySQL数据库进行分库分表
  • 原文地址:https://www.cnblogs.com/softidea/p/5285939.html
Copyright © 2011-2022 走看看