NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

阿里云 Landing Zone 上好云伙伴联盟正式起航

云布道师

阿里云 2022云栖大会

KeeWiDB的高性能修炼之路:架构篇

腾讯云数据库

数据库 nosql redis 腾讯云数据库 KeeWiDB

AI生命周期 | 聊聊数据准备阶段的偏见问题

澳鹏Appen

人工智能 机器学习 数据标注 数据训练 数据偏见

得物极光蓝纸箱尺寸设计实践

得物技术

算法 遗传算法 供应链 建模 运筹

Redis的一些概念

饱饱巴士

redis 11月月更 redis梳理

【线上分享会回顾】九科信息董事&产品VP傅恺分享流程挖掘实践案例

九科Ninetech

开源密码管理器更安全吗?(2)

神锁离线版

开源 网络安全 信息安全 数据安全 密码管理器

无线标准802.11ac 和 802.11ax到底有什么区别?哪个更快?

wljslmz

网络技术 无线技术 802.11ac 802.11AX 11月月更

三分钟带你了解一站式大数据平台运维管家 ChengYing 产品包制作

袋鼠云数栈

费劲拿到的阿里P8架构师私藏(java岗的)JCF和JUC源码分析与实现笔记

程序知音

Java 高并发 源码刨析 java架构 后端技术

内存数据库如何发挥内存优势?

C++后台开发

算法 内存数据库 后端开发 linux开发 C++开发

七层模型

初学者

网络 服务器 11月月更

SQL编写规范

默默的成长

前端 sql 11月月更

重磅发布!星汉未来全国开发者悬赏计划

星汉未来

云计算 开发者 运维 云原生 星汉未来

Eureka框架的原理

阿泽🧸

Eureka 11月月更

持续优化,欣欣向云 | RocketMQ Operator 0.3.0 正式发布

阿里巴巴云原生

阿里云 RocketMQ 云原生

双11niubility的数据恢复软件,获得更专业的数据恢复服务

淋雨

数据恢复 文件恢复

大数据生态中的 RocketMQ 5.0

阿里巴巴云原生

阿里云 RocketMQ 云原生

金融服务的超级App

FN0

生态 超级app 组装式应用

获奖作品《重力》超详细制作过程!建议码住!

Renderbus瑞云渲染农场

Blender制作教程

云原生系列五:Kafka 集群数据迁移基于Kubernetes的内部

叶秋学长

kafka\ kurbernetes 11月月更

报名|企业数字化转型有何“利器”?一起来揭秘

元年技术洞察

数字化转型

2022-11微软漏洞通告

火绒安全

安全漏洞

袋鼠云产品功能更新报告 02 期丨有亿点点走心!

袋鼠云数栈

五大模型揭秘深度学习用于时序预测的最新进展

云智慧AIOps社区

人工智能 机器学习 深度学习 算法 模型

【C语言】do 关键字

謓泽

11月月更

Oracle 表空间创建标准(二)

默默的成长

oracle 前端 11月月更

颠覆传统BOM检查!用这个方法既​简单、快速又准确

华秋PCB

工具 PCB BOM PCB设计

Knative架构解析

穿过生命散发芬芳

Knative 11月月更

实战指南 | Serverless 架构下的应用开发

阿里巴巴云原生

阿里云 Serverless 云原生

阿里这份Java程序性能优化指南,让你的程序快上200%

小小怪下士

Java 程序员 性能优化

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