在Android开发中,使用Clojure作为内嵌的脚本引擎是否合适?

110 views
Skip to first unread message

Albert Lee

unread,
Nov 25, 2014, 10:12:40 PM11/25/14
to cn-cl...@googlegroups.com
我在考虑一个Android项目,类似于游戏的那种,想内置一个脚本引擎,Clojure是否适合呢?

tao.zhou2009

unread,
Nov 25, 2014, 10:29:58 PM11/25/14
to cn-cl...@googlegroups.com
游戏有很多现成的游戏引擎这些开发工具啊。国内目前比较流行的是cocos-2d-x和unity。

这个网站你应该看过,游戏对性能要求很高的。

用Clojure写游戏最靠谱的办法,我觉得是把Clojure翻译成Java或者C,不做嵌入式脚本引擎了。

最常用的嵌入式脚本语言是Lua,游戏里面很常用。Redis用的也是它。MySQL的官方代理也是它。

-- 
tao.zhou2009
Sent with Sparrow

On Wednesday, November 26, 2014 at 11:12 AM, Albert Lee wrote:

我在考虑一个Android项目,类似于游戏的那种,想内置一个脚本引擎,Clojure是否适合呢?

--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛中的“CN-Clojure”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到cn-clojure+...@googlegroups.com
要发帖到此论坛,请发送电子邮件至cn-cl...@googlegroups.com
通过http://groups.google.com/group/cn-clojure访问此论坛。
要查看更多选项,请访问https://groups.google.com/d/optout

Yunfan Jiang

unread,
Nov 25, 2014, 10:49:10 PM11/25/14
to cn-cl...@googlegroups.com
也有 typed clojure吧 不过虽然手机内存越来越大 但是电池续航没上去 还是尽量避免用这种 
话说你不试试forth家族的么?  有个8th 面向五大平台 可以考虑下
--
Name: yunfan
Site: http://geek42.info/
Interest:
  - Lang: [forth, clojure, c, python, lua]
  - software: [nginx, redis]
  - abstract: [vm, tiny, cloud, html5]
  - history
  - science-fiction
  - music: [new-age, vangelis, yanni]

Zoom.Quiet

unread,
Nov 25, 2014, 10:57:18 PM11/25/14
to cn-cl...@googlegroups.com
嗯嗯嗯, Albert 也出没在这儿哪,
根据你一惯的尿性,
俺目测,
用 Prolog 写好引擎, 自动生成 JAVA/Lua 代码就好的哪.
当然, 生成 factor 更加高能的了...

PS:
Clojure 不就是跑在 JVM 上的嘛?
天然的 Android 环境哪
Life's Pathetic, Let's Pythonic! 人生苦短, Python是岸!
俺: http://zoomquiet.io
授: http://creativecommons.org/licenses/by-sa/2.5/cn/
怒: 冗余不做,日子甭过!备份不做,十恶不赦!
KM keep growing environment culture which promoting organization be learnning!

Albert Lee

unread,
Nov 25, 2014, 11:07:59 PM11/25/14
to cn-cl...@googlegroups.com
(你们真是把我往死了逼啊。。。看热闹不嫌事大)

我查了些资料,clojure主要的问题是载入时间过长、内存消耗太大。其他还好。

您收到此邮件是因为您订阅了 Google 网上论坛的“CN-Clojure”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到cn-clojure+...@googlegroups.com
要向此网上论坛发帖,请发送电子邮件至 cn-cl...@googlegroups.com
通过以下网址访问此论坛:http://groups.google.com/group/cn-clojure
要查看更多选项,请访问 https://groups.google.com/d/optout

Yunfan Jiang

unread,
Nov 25, 2014, 11:49:45 PM11/25/14
to cn-cl...@googlegroups.com
问题是这两个就折腾死用户了 去年我就试过android上的clojure 那个慢哦
还有内存消耗太大 而且老刷新 必然电池嗖嗖掉啊

Shen, Feng

unread,
Nov 26, 2014, 1:23:36 AM11/26/14
to cn-cl...@googlegroups.com
Clojure写Android 有几个问题:

  1.  Runtime 过大。 Clojure有个jar包,不小。 对移动是个不小大负担
  2. 启动时间过长
  3. 会依赖JIT, 对于server程序还好,对于Android可能有些辛苦



Albert Lee

unread,
Nov 26, 2014, 1:31:38 AM11/26/14
to cn-cl...@googlegroups.com
是的。
我再尝试下另一个方案,找一个简单些的scheme的java实现,从源代码级别上集成进去。

Albert Lee

unread,
Nov 26, 2014, 2:48:47 AM11/26/14
to cn-cl...@googlegroups.com
嗯,搜了一圈下来, 一个类游戏的应用,用 cocos2d 更合适。

jaime

unread,
Nov 26, 2014, 9:20:41 PM11/26/14
to cn-cl...@googlegroups.com
从Prolog生产其它代码?愿闻其详

在 2014年11月26日星期三UTC+8上午11时57分18秒,Zoom.Quiet写道:
>> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到cn-clojure+unsubscribe@googlegroups.com
>> 要发帖到此论坛,请发送电子邮件至cn-cl...@googlegroups.com
>> 通过http://groups.google.com/group/cn-clojure访问此论坛。
>> 要查看更多选项,请访问https://groups.google.com/d/optout
>>
>>
>> --
>> 中文社区博客:http://blog.clojure.cn/
>> 中文问答网站:http://ask.clojure.cn/
>> 中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
>> ---
>> 您收到此邮件是因为您订阅了Google网上论坛中的“CN-Clojure”论坛。
>> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到cn-clojure+unsubscribe@googlegroups.com
>> 要发帖到此论坛,请发送电子邮件至cn-cl...@googlegroups.com
>> 通过http://groups.google.com/group/cn-clojure访问此论坛。
>> 要查看更多选项,请访问https://groups.google.com/d/optout
>
>
>
>
> --
> Name: yunfan
> Site: http://geek42.info/
> Interest:
>   - Lang: [forth, clojure, c, python, lua]
>   - software: [nginx, redis]
>   - abstract: [vm, tiny, cloud, html5]
>   - history
>   - science-fiction
>   - music: [new-age, vangelis, yanni]
>
> --
> 中文社区博客:http://blog.clojure.cn/
> 中文问答网站:http://ask.clojure.cn/
> 中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
> ---
> 您收到此邮件是因为您订阅了Google网上论坛中的“CN-Clojure”论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到cn-clojure+unsubscribe@googlegroups.com

Sun Ning

unread,
Nov 27, 2014, 1:36:37 AM11/27/14
to cn-cl...@googlegroups.com
是的,runtime是主要问题。
可以关注一下 clojure-android 项目,已经有不少人在摸索了一段时间了,但是成果有限:

http://clojure-android.info/#

李大双

unread,
Nov 27, 2014, 1:57:34 AM11/27/14
to cn-cl...@googlegroups.com
用clojure没什么方便的,用js挺好,cocos2d可以直接导出网页版的,调试也方便

Yunfan Jiang

unread,
Nov 27, 2014, 3:16:33 AM11/27/14
to cn-cl...@googlegroups.com
gambit scheme 能做游戏 估计能用

Albert Lee

unread,
Dec 2, 2014, 10:51:17 PM12/2/14
to cn-cl...@googlegroups.com
经过两天的摸索,现在实现了内嵌 Scheme脚本到Android程序中。
我的实现方式是使用Peter Norvig开发的 JScheme作为解释器,JScheme的许可证很宽松,允许商业使用,没有后顾之忧。
目前实现了:Java代码调用 scheme程序,scheme程序中使用java中的对象方法,以及使用Scheme代码进行 Canvas绘图。

测试程序运行界面如附图所示,其中输入框里输入scheme代码,执行结果显示在上面,另外下面的绘图使用的代码如下:

// 包装 drawRect , drawCircle 方法

String ex4 = "(define drawRect (method \"drawRect\" \"com.example.scm2.CanvasWrap\" \"float\" \"float\" \"float\" \"float\"))";

String ex41 = "(define drawCircle (method \"drawCircle\" \"com.example.scm2.CanvasWrap\" \"float\" \"float\" \"float\"))";

// 绘图代码

String ex5 = "(define (draw1 c) (map (lambda (n) (drawRect c (* n 10) (* n 10) (* n 15) (* n 15))) '(1 2 3 4 5 6 7 8 9 10)) (drawCircle c 100 200 70) )";



Screen Shot 2014-12-03 at 11.49.28 AM.png

Zoom.Quiet

unread,
Dec 2, 2014, 11:10:25 PM12/2/14
to cn-cl...@googlegroups.com
JS?
意思说, 其实是 通过 浏览器组件进行的?

Yunfan Jiang

unread,
Dec 2, 2014, 11:14:09 PM12/2/14
to cn-cl...@googlegroups.com
JScheme大概是 指Java implemented Scheme吧
实现肯定可以 我主要关心实现的成本 性能如何

Albert Lee

unread,
Dec 2, 2014, 11:32:18 PM12/2/14
to cn-cl...@googlegroups.com
http://norvig.com/jscheme.html
JScheme , Scheme 语言,与 javascript无关。

用起来比较简单。具体的性能,我还没有去测试。不过我更关心的是业务逻辑实现的成本。
以后我测试后把结果反馈回来。

(终于松了一口气,可以不用纯写Java来实现了)
Reply all
Reply to author
Forward
0 new messages