写点什么

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

评论

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

阿里云 ECS 可观测性最佳实践

观测云

阿里云

使用Bright Data API轻松构建LinkedIn职位数据采集系统

Leo

爬虫新神器:基于MCP的智能体,让数据获取“一键通关”

阿Q说代码

数据分析 智能体 数据获取 MCP 亮数据

工业数字化 信息化经验总结(4)

万里无云万里天

数字化转型 信息化 工业 工厂运维

大模型那么懂你,为什么(白话篇)

石头哥谈架构

国内好用的API网关推荐:技术选型与企业实践指南

谷云科技RestCloud

API 数据安全 API网关 集成平台 ipaas

ODPS 十五周年实录 | Data + AI,MaxCompute 下一个15年的新增长引擎

阿里云大数据AI技术

Python 阿里云 pandas MaxCompute ODPS

【跨国数仓迁移最佳实践7】基于MaxCompute多租的大数据平台架构

阿里云大数据AI技术

MaxCompute BigQuery

可可图片编辑 HarmonyOS(2) 选择图片和保存到图库

万少

HarmonyOS

非传统创新者奖学金:从校园“麻烦制造者”到网络安全领航者

qife122

网络安全 黑客精神

AppsFlyer 电商 App 营销现状报告:从 iOS 买量到再营销,中国电商重塑全球投放逻辑

财见

一个平台让开发效率提升90%?看看中小企业如何靠iPaaS完成数字化转型

谷云科技RestCloud

数据处理 集成平台 ipaas

BeeWorks:企业级局域网即时通讯软件

BeeWorks

即时通讯 IM 私有化部署

拥抱 AI 原生!8月29日深圳,企业实践工作坊火热报名中

阿里巴巴云原生

阿里云 云原生

不增加 GPU,首 Token 延迟下降 50%|LLM 服务负载均衡的新实践

阿里巴巴云原生

阿里云 gpu 云原生 Higress

AI测试平台进阶:多模态模型对比评测实战解析

测试人

软件测试

AI时代下的黑客技术演进:提示工程与渗透测试未来

qife122

网络安全 提示工程

ETL中的数据质量评估与监控

谷云科技RestCloud

数据库 数据处理 数据安全 ETL ETL数据集成平台

内网环境的即时通讯软件,企业用应该选哪款?

BeeWorks

即时通讯 IM 私有化部署

用户访问权限审查最佳实践

运维有小邓

AD域 AD域管理

ASAP:仿真与真实世界物理对齐的人形机器人全身敏捷技能学习

qife122

人形机器人 机器人学习

Playwright与PyTest结合指南

测吧(北京)科技有限公司

#人工智能

掘金AI时代计算产业红利的商业伙伴,为什么跟华为组队?

脑极体

AI

@all,文心快码与你相约8月28日云智大会!

Comate编码助手

AI 编程 文心快码 文心快码Zulu 2025百度云智大会

一看就是AI做的网页?ClaudeCode+5句提示词5分钟告别「蓝紫色」AI味儿

阿星AI工作室

AI 产品经理 AI编程 aicoding vibecoding

工业数字化 信息化经验总结(5)

万里无云万里天

数字化转型 信息化 工业 工厂运维

《2025年,传统企业如何低成本引入AI?》

石头哥谈架构

当DevOps落地实施撞上技术债务,如何量化债务突破困局

禅道项目管理

DevOps 软件开发 技术债务 效能管理 禅道项目管理软件

技术解读 | OceanBase高并发场景下的性能保障

老纪的技术唠嗑局

性能优化 oceanbase

在AI技术唾手可得的时代,挖掘新需求成为创新关键——某知名向量搜索框架需求洞察

qife122

需求分析 AI技术

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