HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

使用 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:005542

评论

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

第七届军博会圆满闭幕,数军科技多项成果获关注

科技热闻

供应链、产品溯源以及区块链所面临的巨大阻碍是什么?

CECBC

统一预估引擎的设计与实现

安第斯智能云

算法 后端

拍乐云 X 青云科技,预见数字自由,相约 CIC 2021 云计算峰会

拍乐云Pano

网络安全、Web安全、渗透测试之笔经面经总结

网络安全学海

面试 网络安全 信息安全 渗透测试 漏洞分析

网络攻防学习笔记 Day80

穿过生命散发芬芳

网络攻防 7月日更

七种颜色的事件风暴法

escray

学习 极客时间 7月日更 如何落地业务建模

云原生Web服务框架ESA Restlight

安第斯智能云

云原生

Realtime DB技术详解

安第斯智能云

数据

产业区块链迎来新纪元,基础设施建设成核心命题

CECBC

oCPX简介——广告界的“无人驾驶”技术

安第斯智能云

算法

获取微信小程序页面路径方法

一颗小树

小程序 微信开发者工具 页面路径 微信开发者

【软件测试转型自动化测试001】Python环境搭建&语法规则

程序员阿沐

Python 软件测试 自动化测试 环境搭建 语法规则

char+char=number

喵叔

7月日更

为什么电脑自带的录屏功能不好用?

淋雨

视频剪辑 Camtasia 专业录屏

用户管理系统 - 用户权限设计从入门到精通

蒋川

后台开发 权限系统 权限管理 权限架构 用户管理

百度智能云人脸离线识别SDK再升级,优化复杂光线识别效果,急速通行无惧暗光

百度大脑

人脸识别 百度智能云

星环研发总监为你揭秘TDH8.0的前因后果 | TDH8.0 使用必读 3

星环科技

数据库 大数据 多模型数据

Java到底是什么?

卢卡多多

Java 入门 7月日更 Java入门

图解 JavaScript 数组方法

devpoint

ES6 array 7月日更

国内首家入驻统信系统的APaaS厂商

明道云

解读新技术,解锁新玩法,HarmonyOS开发者日杭州站等你来参加

科技汇

11道高频React面试题及详解,另附有React面试题集合

前端依依

面试 大前端 React

模型端侧加速哪家强?一文揭秘百度EasyEdge平台技术内核

百度大脑

人工智能 深度学习 百度 飞桨

场景背后见真章:银行数字化转型持续深入

CECBC

快手上线本地生活榜单:自媒体平台在逐步蚕食搜索引擎市场

石头IT视角

在外包做开发3年,为了进大厂,耗时半年,整合出25W字Java全栈面试题,这就是我的决心

Java架构师迁哥

技术实践 | 网易云信视频转码提速之分片转码

网易云信

10分钟掌握Java性能分析诀窍

安第斯智能云

Java 后端

下一代人工智能:逻辑理解?物理理解?

安第斯智能云

人工智能

如何抓住用户体验的关键时刻?

石云升

用户体验 关键时刻 7月日更

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