如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

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

评论

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

zip解压缩

Hello

计算机网络概述

若尘

计算机网络 6月日更

基于机器学习的自动化测试弹窗处理实践

bilibili游戏技术

手机 自动化测试 yolo 弹窗

如何做好技术选型和分析决策

Man

技术选型 CMMI

文件IO

Hello

[译] D8 优化

Antway

6月日更

kubelet分析-csi driver注册分析-Node Driver Registrar源码分析

良凯尔

源码 Kubernetes CSI Kubernetes Plugin

「SQL数据分析系列」10. 重谈连接

Databri_AI

数据库 sql 连接

硬刚Hive | 4万字基础调优面试小总结

王知无

Linux之cat命令

入门小站

Linux

JAVA 面向对象 (十二)-- 关键字 super

加百利

Java 关键字 super 6月日更

我的书要出版啦~

石璞东

深度学习 tensorflow 大前端 计算机视觉 卷积神经网络

架构实战训练营 - 模块七课后作业

Johnny

架构实战营

创业者需要知道的13种思维模型

俞凡

创业 认知

硬刚Presto | Presto原理&调优&面试&实战全面升级版

王知无

浏览器设备信息UserAgent查询

入门小站

工具

2021最新Spring Security知识梳理

北游学Java

Java spring

谁也讲不明白的SQL注入攻击被我讲明白了(中)?

网络安全学海

程序员 网络安全 计算机 渗透测试 SQL注入

硬刚Apache Iceberg | 技术调研&在各大公司的实践应用大总结

王知无

硬刚ClickHouse | 4万字长文ClickHouse基础&实践&调优全视角解析

王知无

(序)【Spring源码专题】展开Spring源码构建之旅(利用IDEA和Gradle)

码界西柚

spring 6月日更 源码搭建

这样理解Mysql索引,阿里面试官也给你点赞

慕枫技术笔记

MySQL 后端 索引

可编程网关 Pipy 第三弹:事件模型设计

张晓辉

sftp的使用

Hello

Spring事件发布与监听机制

陈皮的JavaLib

Java spring 事件监听

基于FPGA系统合成两条视频流实现3D视频效果

不脱发的程序猿

智能硬件 FPGA系统 视频流 合成3D视频

最佳的管理者-库克

卢卡多多

苹果 管理者 6月日更

硬刚Hbase - 17道题你能秒我?我Hbase八股文反手就甩你一脸

王知无

迷惘的六月份

卢卡多多

生活状态 6月日更

架构实践营模块7作业

Geek_649372

架构训练营

硬刚数据仓库|SQL Boy的福音之数据仓库体系建模&实施&注意事项小总结

王知无

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