写点什么

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

评论

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

Apache IoTDB 分布式架构三部曲(二)分片与负载均衡

Apache IoTDB

Maven 中的 classifier 属性用过没?

江南一点雨

Java maven

利用依赖结构矩阵管理架构债务

俞凡

架构

CCIG 2024:合合信息文档解析技术突破与应用前景

海拥(haiyong.site)

文档识别

Moonchain 与穿戴设备 Blueberry Ring 整合,基于自身 DePIN 生态为 IoT 领域深度赋能

股市老人

Scroll 生态明星项目Pencils Protocol,发展潜力巨大

股市老人

为什么外贸行业选择使用云手机?

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

ETLCloud中如何使用Kettle组件

谷云科技RestCloud

kettle ETL 数据集成 ETLCloud

Scroll 上的明星项目Pencils Protocol ,缘何被严重低估?

股市老人

活动回顾 | 「观测云」为何成为中国峰会可观测性领域的唯一代表?

观测云

AWS

API测试工具领域,Postman的10个最佳替换

幂简集成

Postman API API测试 API测试工具

30天拿下Rust之输入输出

希望睿智

rust语言 输入输出

30天拿下Rust之命令行参数

希望睿智

命令行 rust语言 命令行参数解析

反VC情绪:加密市场需要新的分布式代币发行方式

BlockChain先知

一文解析Scroll 生态明星项目Pencils Protocol,严重被低估

西柚子

今日分享丨按场景定制界面

inBuilder低代码平台

界面 开发分享

Scroll 生态明星项目Pencils Protocol,发展潜力巨大

加密眼界

从人工向智能化转变,企业级指标管理平台建设实战

袋鼠云数栈

指标管理 指标建设 指标设计 指标设计指标体系 指标搭建

打造高效微服务最佳实践

俞凡

架构 微服务

Scroll 上的明星项目Pencils Protocol ,缘何被严重低估?

石头财经

Scroll 生态明星项目Pencils Protocol,发展潜力巨大

BlockChain先知

什么是数据资产管理?数据资产管理包括了哪些内容?

优秀

数据资产管理

ChatGPT-4o有什么特别之处?

石臻臻的杂货铺

AI ChatGPT ChatGPT4

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