写点什么

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

评论

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

React源码分析(一)Fiber

flyzz177

React

TiDB 首批通过信通院 HTAP 数据库基础能力评测

PingCAP

#TiDB

如何确定解决的问题的价值?

珑彧

方法论

2022年中国证券类APP创新专题分析

易观分析

金融 证券 证券app

ChatGPT 使用 API 进行 Postman 调用测试

HoneyMoose

Kubernetes 跨集群流量调度实战 :访问控制

Flomesh

Service Mesh 服务网格 服务网格

数益工联 x TiDB丨如何运用 HTAP 挖掘工业数据价值?

PingCAP

#TiDB

TableLayout(表格布局)

芯动大师

Android Studio tablelayout 表格布局

TiCDC 源码阅读(二)TiKV CDC 模块介绍

PingCAP

#TiDB

从recat源码角度看setState流程

flyzz177

React

详解UDS CAN诊断:SecurityAccess Service(SID:0X27)

不脱发的程序猿

汽车电子 CAN ISO 14229 诊断和通信管理功能单元 SecurityAccess Service

从源码角度看React-Hydrate原理

flyzz177

React

属于 PingCAP 用户和开发者的 2022 年度记忆

PingCAP

#TiDB

LiveMe x TiDB丨单表数据量 39 亿条,简化架构新体验

PingCAP

#TiDB

《解构领域驱动设计》-软件复杂度解析

珑彧

读书笔记 方法论 领域驱动设计 DDD 复杂

2022年人民满意手机银行服务白皮书

易观分析

金融 白皮书 手机银行 用户

Java高手速成 | 数据库实训:图书馆管理系统建模

TiAmo

数据库 管理系统 1月月更

深入react源码看setState究竟做了什么?

flyzz177

React

基于低代码平台构筑金融行业IT运维服务体系

明道云

TiCDC 在大单表场景下的性能优化:我们如何将吞吐量提升 7 倍?

PingCAP

#TiDB

链上隐私交易成新刚需,Unijoin.io或成该赛道新契机

股市老人

5A原则

穿过生命散发芬芳

1月月更

ChatGPT 最近火得不要不要的

HoneyMoose

解读重要功能特性:新手入门 Apache SeaTunnel CDC

Apache SeaTunnel

CDC 数据变更捕获

2023-01-04:有三个题库A、B、C,每个题库均有n道题目,且题目都是从1到n进行编号 每个题目都有一个难度值 题库A中第i个题目的难度为ai 题库B中第i个题目的难度为bi 题库C中第i个题目

福大大架构师每日一题

算法 rust Solidity 福大大

2022年11月中国网约车领域月度观察

易观分析

网约车 行业 打车

k8s 学习实战(一)

AiDaddy

k8s安装 kubenetes

React-Hooks源码深度解读

flyzz177

React

看透react源码之感受react的进化

flyzz177

React

欢迎来到,个人数据安全“世界杯”

脑极体

架构训练营模块三作业

现在不学习马上变垃圾

架构训练营10期

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