加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 襄阳站长网 (https://www.0710zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Clojure在Android开发中的应用情况

发布时间:2016-03-03 07:24:38 所属栏目:业界 来源:阿里百川专区的网站
导读:要说最近Android开发中的新语言谁最火,毫无疑问是Kotlin,不过对于函数式编程爱好者,Clojure才算他们的心头好。

Clojure在Android开发中的应用情况

要说最近Android开发中的新语言谁最火,毫无疑问是Kotlin,不过对于函数式编程爱好者,Clojure才算他们的心头好。

Clojure是一种运行在Java平台上的Lisp方言,有人对它的评价是这样的:

构建于JVM之上,Clojure就是一门“严肃”的语言,而非很多人眼中的Lisp“玩具”语言,你学习后可以马上使用并且实践。但是Clojure又是Lisp方言,Lisp的神奇能力它还都保留,这样兼具美学和实用的语言如何让人不爱?我相信很多熟悉Scheme之类方言的童鞋,并且有Java背景的,都会对Clojure有相见恨晚的感觉。

在Android平台上使用Clojure进行开发,在过去几年中取得了长足的进步,让开发人员可以把它用于开发完整的应用,比如SwiftKey的Clarity Keyboard。在本文中,我们将检阅当前在Android平台上支持Clojure的工具的情况。

在Android平台上,使用来自标准升级渠道的Clojure历来都要遭受缓慢的启动,相比Java这可长达4-10倍的时间。此问题可由Skummet(http://clojure-android.info/skummet/)来解决,这是Clojure的分支,它优化了Clojure的编译器,从而可以产生更精简、加载更快的字节码(bytecode)。Skummet还包括一个用Skummet构建的经过优化的Clojure运行时版本。

据Skummet的作者Alex Yakushev说,Skummet旨在确保最大的兼容性,尽管依赖直接引用Vars的代码可能会有问题,大部分Clojure代码默认应该是兼容的。

总的来说,对一个简单的基准应用,Skummet能够使首次加载时间缩短到1/4,使APK大小和堆的使用减小到一半。据SwiftKey的 Adam Clements和Ben Leavett说,使用Skummet让他们可以把Clarity Keyboard的加载时间保持在1.5–2秒,更进一步的优化也是可能的。在它的官网上有一个benchmark表格,相对于Clojure,表现相当惊人。:

Clojure在Android开发中的应用情况

在Android平台上用Clojure开发的其它有用的工具包括在Clojure-Android Initiative(https://github.com/clojure-android)项目中,有:

lein-droid(https://github.com/clojure-android/lein-droid):一个Leiningen插件,作为Clojure-Android项目的构建工具,处理打包资源、创建APK文件、进行数字签名、等等这些过程。

Neko(https://github.com/clojure-android/neko):封装了Android某些部分Java API的工具包,使得它们的使用更符合Clojure的习惯。

Zach Oakes,Android版本Nightweb应用的作者,认为Clojure通过使用简洁的语法可以使应用的代码量得到“惊人的”缩减,而且让程序员更容易地执行异步任务,从而也可以改善应用的响应。

据SwiftKey的工程师们说,使用Clojure创建Android应用,对应用的设计会产生巨大的影响。特别是,就Clarity Keyboard而言,这让他们可以采用完全的“事件驱动”设计,再结合不可变更的数据结构,从而可以轻易地保存和“重放”用户的任何动作。使用不可变的数据也有助于构建高度模块化的应用,使得每项操作默认都是异步的。

参考链接:

http://clojure-android.info/#applications

http://swiftkey.com/en/blog/what-makes-clarity-keyboard-tick-clojure/

http://blog.ndk.io/2014/03/12/clojure-android-startup-benchmarks.html

https://github.com/alexander-yakushev/clojure/tree/skummet

https://sekao.net/nightweb/blog/clojure-on-android.html

来源:移动开发前线/ Sergio

关于阿里百川

阿里百川(baichuan.taobao.com)是阿里巴巴集团“云”+“端”的核心战略是阿里巴巴集团无线开放平台,基于世界级的后端服务和成熟的商业组件,通过“技术、商业及大数据”的开放,为移动创业者提供可快速搭建App、商业化APP并提升用户体验的解决方案;同时提供多元化的创业服务-物理空间、孵化运营、创业投资等,为移动创业者提供全面保障。

(编辑:PHP编程网 - 襄阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!