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/

  • 相关阅读:
    P3913 车的攻击
    P1866 编号
    P1100 高低位切换
    P1469 找筷子
    网络穿透/云端组网/视频拉转推服务EasyNTS上云网关管理平台使用过程中掉线如何排查?
    RTSP协议Web无插件直播平台EasyNVR调用登录接口报“密码加解密错误”如何解决?
    安防视频智能分析平台EasyNVR新版本直接使用老版本的数据库导致界面数据异常的分析
    RTSP协议视频智能分析平台EasyNVR更新版本后无法正常显示平台页面排查步骤
    如何将RTSP/GB28181协议视频监控平台EasyNVR/EasyGBS等录像文件通过ffmpeg转HLS进行播放?
    视频直播/智能分析平台EasyNVR调用登录接口返回‘密码加解密错误’如何修复?
  • 原文地址:https://www.cnblogs.com/softidea/p/5285939.html
Copyright © 2011-2022 走看看