LambdaNative:移动端、桌面端的跨平台嵌入式开发方案

阅读数:1177 2016 年 3 月 9 日

话题:移动WindowsAndroidiOS语言 & 开发

LambdaNative是一个跨平台开源发展框架方案,支持各种平台,包括了 iOS、安卓、黑莓、OSX、Linux、微软、OpenBCD、NetBSD 和 OpenWrt。

这是由英国哥伦比亚儿童医院的小儿麻痹症研究团队和哥伦比亚以及加拿大温哥华的大学共同开发的。LambdaNative 是基于Gambit Scheme,能够在所有平台上生成单一方案来源的 C 代码。团队表示,使用 Scheme 能够在相对较短的时间(与 Java 或 C/C++ 相比)内开发出高质量的代码。

此外,LambdaNative 将基于 OpenGL 的glGUI作为用户界面编程工具包。因此,它不支持原始的用户界面,而是使用移动跨平台开发框架,比如lonicReact Native等。这一点一定是 LambdaNative 的一个显著特点,可能导致它会不适用于所有移动应用程序。不过换个角度来说,在所有支持的设备上执行精确相同的用户界面可能会在特定情况下成为一个有利条件,有一位团队成员这样解释

“我们在和处于地球另一端的研究团队合作。它让我们很方便的向他们发送某个应用的 Windows 版本,他们也可以很轻松地运行,无需每次都在手机或是平板电脑上先安装再运行。”

LambdaNative 已经用于一些项目的临床实践,有一些还是在发展中国家。并且还有几个示例应用程序已经上传到APP Store谷歌 Play中。

LambdaNative 背后开发团队的领导者是 Chris Petersen 博士,InfoQ 和他有过一些交流。

在网页上声称 LambdaNative 和 Java 或 C/C++ 相比,可以大大减少开发时间,您能详细谈谈吗?在什么样的情况下可以更快?LambdaNative 的具体优势是什么?

“是的,LambdaNative 网站刊登过 Erann Gat(与我们无关)论文的某些研究结果,比较的对象是 Java、C/C++ 和 Scheme/LISP。这是很难进行客观比较的,也很容易引起争执。不过这些结果和我们自己的经验是相符的。LambdaNative 的主要目的就是在资源有限的时候减少开发时间,使得应用程序可以在短时间内使用最少的资金交付。”

“我们发现了在 Scheme 下开发的好处有这些,1)语法极其简单,直接表达本质;2)数据代码都是等价的;3)直译、编译代码可以混合。LambdaNative 本身就会管理应用程序资源、作品和代码签名等,这就减少了开发过程中的复杂程度并且提高了整体的生产效率。”

LambdaNative 针对的是什么类型的应用程序 / 开发人员?

“LambdaNative 是由英国哥伦比亚儿童医院的小儿麻痹研究团队以及哥伦比亚和加拿大温哥华的大学共同开发的。其目的是为我们研究组的临床试验提供软件开发支持。这就包括了移动端、服务器和桌面上的应用程序在许多不同平台上的部署。因此我们对于 LambdaNative 的内部使用都是和健康有关的。不过,我们已经解耦了结构中的医疗成分,这样 LambdaNative 就变成了一个可以用于任何目的的应用程序开发工具包。我们将与健康有关的应用程序内容都转移到了LNHealth GitHub 存储库(这也是使用 LambdaNative 开发的)。”

对于特定操作系统的用户界面部件或传感器等资源,LambdaNative 的访问途径是什么?同时,LambdaNative 又提供了怎样的与主机操作系统的互动操作性?

“LambdaNative 可以通过计划模块封装访问特定的操作系统资源,如传感器或是设备摄像头。如果是进行快速阅读,或是要进行拍照,那就是通过 Scheme 通用途径完成,这种方法允许一次性编写支持所有体系的应用程序级别代码。LambdaNative 将自己的用户界面部件直接放在了 OpenGL 中,这样就可以保证可以一次性编写应用程序代码。这是一种权衡。从反面来说,LambdaNative 并没有直接访问特定于操作系统的用户界面功能,因此它看起来与本机应用程序完全不同。不过积极的一面就是,LambdaNative 的应用程序在所有平台上的外观和操作方式都是完全一样的,如果以后出现了新的操作系统也不需要改变应用程序级别的代码。”

LambdaNative 未来的规划是什么?

“当前我们在非健康领域的项目计划是扩大 LambdaNative 与物联网协议有关的应用,以及获得更广泛的身份验证技术,比如说 YubiKey 支持。在健康领域,我们正在扩大 LNhealth,这是一种支持手动输入传感器数据的调查框架。我们正在考虑增加对蓝牙和本机键盘的支持。除此之外,由于 LambdaNative 是根据由它支持的项目需求而改变的,所以它自己并没有什么远景规划。对于 LambdaNative 本身来说,只有一个独立的目标,那就是为了支持它创建的所有任务项目,保持最高的可移植性和可靠性。”

查看英文原文:LambdaNative: Scheme for Mobile, Desktop, and Embedded Cross-Platform Development


感谢魏星对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。