写点什么

使用 Clojure 构建原生 Android 应用

  • 2015-09-27
  • 本文字数:1088 字

    阅读完需:约 4 分钟

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

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

在 Android 平台上,使用来自标准升级渠道的 Clojure 历来都要遭受缓慢的启动,相比 Java 这可长达4-10 倍的时间。此问题可由 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 秒,更进一步的优化也是可能的。

在 Android 平台上用 Clojure 开发的其它有用的工具包括在 Clojure-Android Initiative 项目中,有:

  • lein-droid:一个 Leiningen 插件,作为 Clojure-Android 项目的构建工具,处理打包资源、创建 APK 文件、进行数字签名、等等这些过程。
  • Neko:封装了 Android 某些部分 Java API 的工具包,使得它们的使用更符合 Clojure 的习惯。

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

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

查看英文原文: Using Clojure to Build Native Android Apps


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-09-27 19:005864

评论

发布
暂无评论
发现更多内容

技术分享 | Bug定位方法

霍格沃兹测试开发学社

技术分享 | 测试环境搭建

霍格沃兹测试开发学社

一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?

霍格沃兹测试开发学社

测试人生 | 40+的年龄50W+的年薪,2线城市入职名企,他曾想放弃测试?

霍格沃兹测试开发学社

技术分享 | Web测试方法与技术之JavaScript 讲解

霍格沃兹测试开发学社

技术分享 | WEB 端常见 Bug 解析

霍格沃兹测试开发学社

测试人生 | 为了娃的奶粉钱,测试媛妈妈拿出考研的拼劲,半年终圆大厂梦!

霍格沃兹测试开发学社

Linux下使用LVM方式进行文件系统创建,详细教程

阿柠xn

Linux 运维 文件系统 lvm 9月月更

技术分享 | Selenium 测试用例编写

霍格沃兹测试开发学社

测试人生 | 专科学历入职世界500强企业,二线城市年薪超30W,这个80后小哥哥很赞!

霍格沃兹测试开发学社

测试人生 | 二线城市涨薪近10万 ,还能955,这样的机会你想不想要?

霍格沃兹测试开发学社

技术分享 | 常用测试策略与测试手段

霍格沃兹测试开发学社

技术分享 | 什么是软件缺陷

霍格沃兹测试开发学社

技术分享 | Web测试方法与技术实战演练

霍格沃兹测试开发学社

经典面试题-元组和列表的区别

霍格沃兹测试开发学社

一道大厂测试开发面试真题,你需要几分钟解答?

霍格沃兹测试开发学社

OSCS开源安全周报第11期:本月微软补丁日修复 vscode 漏洞,请开发者留意自己使用的 vscode 是否受该漏洞影响

墨菲安全

golang vscode 开源安全 软件供应链安全

技术分享 | 白盒测试方法论

霍格沃兹测试开发学社

经典面试题-显式等待与隐式等待

霍格沃兹测试开发学社

技术分享 | Web自动化之Selenium安装

霍格沃兹测试开发学社

技术分享 | SeleniumIDE用例录制

霍格沃兹测试开发学社

测试人生 | 三十而立终圆大厂梦,测试开发开启新征程

霍格沃兹测试开发学社

技术分享 | 黑盒测试方法论—因果图

霍格沃兹测试开发学社

经典面试题-平时用的测试框架是什么?pytest框架下怎么入参?

霍格沃兹测试开发学社

经典面试题-Python装饰器

霍格沃兹测试开发学社

测试人生 | 97年双非学历的小哥哥,2线城市涨薪100%,我酸了......

霍格沃兹测试开发学社

uni-app黑马优购项目学习记录(二)

海底烧烤店ai

JavaScript 小程序 前端 9月月更

技术分享 | web前端的HTML浅析

霍格沃兹测试开发学社

技术分享 | Web测试方法与技术之CSS讲解

霍格沃兹测试开发学社

测试人生 | 入行3年,年薪36W+,从外包到知名互联网公司,疫情之下薪资不止翻倍~

霍格沃兹测试开发学社

测试人生 | 毕业2年未满,0经验拿下知名互联网企业30W 年薪,他是怎么做到的?

霍格沃兹测试开发学社

使用Clojure构建原生Android应用_移动_Sergio De Simone_InfoQ精选文章