iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >如何在Android上运行ClojureScript
  • 218
分享到

如何在Android上运行ClojureScript

Android 2022-06-06 12:06:43 218人浏览 安东尼
摘要

  在过去的几天里,我有了开发生涯中有意义的经历之一, 想在这里跟大家分享。   现在我们已经让 ClojureScript 可以在 Android 上运行了。不是在一个

  在过去的几天里,我有了开发生涯中有意义的经历之一, 想在这里跟大家分享。   现在我们已经让 ClojureScript 可以在 Android 上运行了。不是在一个 WEBView 里面,也不是利用像 Cordova 这样的东西,而是实实在在的运行在一个嵌入式的 javascript 引擎中。到底发生了什么?

  近,我们做了一些工作创建出了一个 iOS 的 ClojureScript REPL 应用,Replete。整个看上去很酷,而对应的 Android 应用只算勉强能创建出来。不幸的是,我的 Android 技术平平,也不能立马上手。   不过,这方面 Tahmid Sadik 的技术还能上得了台面。   Tahmid 可以把UI都串起来,也能将 Rhino 实例化并对JavaScript语句进行计算,但是接下来让引导式的 ClojureScript 运行起来对他而言可谓是一次挑战。   不过在此之前,他必须在他的 app 里将 ClojureScript 引导起来。引导这个词被我特意标明,指出他需要用 Google 的 Closure 依赖管理系统把 ClojureScript 运行时启动起来,没有 JavaScript,也没有其他的优化(例如 :none 模式),根据需要,可以定义 CLOSURE_IMPORT_SCRIPT 环境变量。如果想包含一个 REPL,用这种方式来引入运行时是很重要的。这也为在你的 REPL 包含源码级的名字空间提供了支持。   实际上,Replete 也需要做这些,用到的是 Ambly 的一个功能。我当然知道,Replete 是一个独立的 REPL,并不需要 Ambly。不过我使用了一个小花招,可以复用这个功能,让 ClojureScript 启动在 Replete 里运行。   顺便说一下,我初是打算用 React Native 来实现 Replete 的。结果发现,使用 React Native 的 ClojureScript 支持还为时尚早,而可以引导的 ClojureScript 确实只是初期的功能,要想能够实际工作还需要做很多努力。所以,对于 Replete,我还是保持简单吧,算是 Goby 也没有用到。   对于上述的结果,好的一点是不需要 React Native 的依赖(Android 版还没有正式公开发布),也没有 Goby 的依赖(只支持 ioS)。Replete 内置的 ClojureScript 非常简洁,使用传统的 iOS 的 UI,事实证明这对 Tahmid 去完成同样功能的 Android 版很有帮助。   让我们回到故事的开始:本质上 Tahmid 复制了 Ambly 的 Bootstrap 逻辑,按照顺序逐一的执行了在 Rhino 里的 JavaScript 语句。不过时不时的他会遇到一些奇怪的问题,我的记忆中几个月前也会遇到类似的问题,在研究过 Ambly 的代码后,我给了一点建议。   之后,他基本上可以引导成功 ClosureScriptle。   cljs.core.apply.call(null,cljs.core.inc,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_node, [1], null))   这行是(apply inc [1])需要绑定的JavaScript代码   然后Tahmid终于有了2.0。真棒!这应该是有史以来的第一次,在基于Android的嵌入式的Rhino上跑起来ClojureScript。   接下来,需要尝试用起来reader, analyzer, 和compiler。现在我们来试一下,只需要简单的使用Replete里的JavaScript,让Android的app执行Replete的read_eval_print函数,参数为字符串 (+ 1 2),如果工作正常,那么恭喜,ClojureScript已经成功启动了。   replete.core.read_eval_print.call(null,'(+ 1 2)')   且慢,Transit 里执行 goog.require(‘replete.core’);的时候出了问题,应该是跟 randomUUID 有关。悲剧了,看上去显然还有很多地方需要处理。   不过没关系,Replete 之前一直尝试用不同的方式加载 analysis 缓存,感谢 Karl Mikkelsen,我们有了一个可用的版本只使用纯 JavaScript,没有任何依赖。把这个用起来之后,在把print回调弄好(这样类似 println 这样的方法可以工作了),接下来 Tahmid 通过Slack通知我:   I got 3   (+ 1 2) = 3   … 然后不断烦我,还会擅自发博客。这样,引导的 ClojureScript REPL 在 Android 上诞生了!   Tahmid 在界面上封装了一些东西,修复了 JavaScript/ClojureScript 集成的一些小问题之后发布了Replicator。   简直是一场暴风雨!   现在,Tahmid 正在用 JavaScriptCore 替换 Rhino,这没那么快了。   我认为这将使速度提升。这为我们在 Android 上使用 JavaScriptCore 进行本地交换的功能提供一些重要的基础。   从大图片来看,我真的认为 ClojureScript 在 Android 上运行很快。特别是使用 JavaScriptCore。对于这个观点的问题,可以看看 Bocko 对 Android 的 Vladimir Iakovlev 的端口在启动速度上的差异。   Clojure   ~14 秒   Clojure / Skummet   ~11 秒   ClojureScript   ~2 秒   以上是在模拟器上运行的结果,但是,我仍然认为它显示了 ClojureScript 真正的实现了在移动设备上减少计算延时的承诺。我认为是时候让 ClojureScript 活跃起来,用于为移动设备开发应用!


--结束END--

本文标题: 如何在Android上运行ClojureScript

本文链接: https://www.lsjlt.com/news/28593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Android上运行ClojureScript
      在过去的几天里,我有了开发生涯中有意义的经历之一, 想在这里跟大家分享。   现在我们已经让 ClojureScript 可以在 Android 上运行了。不是在一个...
    99+
    2022-06-06
    Android
  • 如何在Android设备上运行Python程序
    如何在Android设备上运行Python程序 在Android设备上运行Python程序可以为用户提供更广泛的开发和使用选择。本文将介绍几种在Android上运行Python的方法,并附上相应的源代...
    99+
    2023-10-23
    android python 开发语言 Android
  • TranslateAnimation如何在Android上运作
    TranslateAnimation是Android中的一个动画类,用于在指定的时间内沿指定的路径进行平移动画。它可以通过设置起始位...
    99+
    2023-09-27
    Android
  • 如何在 Linux上运行ZFS
    本篇文章为大家展示了如何在 Linux上运行ZFS,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ZFS简介:ZFS是一款128bit文件系统,总容量是现有64bit文件系统的1.84&tim...
    99+
    2023-06-28
  • 如何在Web上运行Linux
    如何在Web上运行Linux,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一个叫Fabrice Bellard的程序员写了一段Javascri...
    99+
    2022-10-19
  • 如何在Fedora 32上运行Docker
    这篇文章给大家介绍如何在Fedora 32上运行Docker,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。随着 Fedora 32 的发布,Docker 的普通用户面临着一个小挑战。在编写本文时,Fedora...
    99+
    2023-06-15
  • 如何在GitHub上运行项目
    作为程序员和开发人员推崇的代码托管平台,GitHub平台的流行程度已经远远超过了其他编程平台,因为它为开源开发贡献了大量的代码,使得团队成员可以方便地协作并互相学习和成长。对于初学者来说,如何在GitHub上运行项目可能会有一些困难,下面我...
    99+
    2023-10-22
  • 如何在Github上运行Python代码
    Github是全球最大的开源社区之一,为开发者们提供了非常便捷的开源代码分享、协作交流平台。很多Python程序员在Github上分享了他们的Python代码,为Python社区的发展做出了积极的贡献。但是,对于新手来说,在Github上如...
    99+
    2023-10-22
  • 如何在 Windows 上运行 Python 代码?
    Python 是一门功能强大的编程语言,可以用于各种不同的应用场景。在 Windows 操作系统上运行 Python 代码是一个非常普遍的需求。本文将介绍如何在 Windows 上安装 Python 和运行 Python 代码。 安装 Py...
    99+
    2023-11-11
    windows npm git
  • 在docker上如何安装运行mysql
    这篇文章主要讲解了“在docker上如何安装运行mysql”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在docker上如何安装运行mysql”吧!ps:实...
    99+
    2022-10-19
  • 如何在docker上部署运行workerman
    这篇文章主要介绍如何在docker上部署运行workerman,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在docker上部署gatawayWorker项目,项目中使用到mysql,redis。安装 mysql拉取...
    99+
    2023-06-29
  • 如何在Windows上运行Linux容器
    这篇文章主要为大家分析了如何在Windows上运行Linux容器的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何在Windows上运行Linux容器”的知...
    99+
    2023-06-28
  • 如何在Windows系统上运行LeetCode?
    LeetCode 是一个非常受欢迎的算法学习网站,它提供了大量的算法题目,旨在帮助人们提高编程技能。如果你是一位 Windows 用户,想要在本地环境上运行 LeetCode,那么这篇文章将为你提供一些有用的指导。 第一步:安装 Java...
    99+
    2023-08-16
    windows linux leetcode
  • 在iPhone上如何成功运行Ubuntu Linux
    这篇文章将为大家详细讲解有关在iPhone上如何成功运行Ubuntu Linux,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在iPhone上使用Android系统已经成为现代手机爱好者的热门话题之一。昨...
    99+
    2023-06-15
  • 如何在Linux上运行Apache服务器?
    在Linux操作系统上,Apache是一款非常流行的Web服务器软件,它可以用于搭建静态网站、动态网站以及Web应用程序。本文将为您介绍如何在Linux操作系统上运行Apache服务器。 安装Apache 在Linux系统中,安装Apach...
    99+
    2023-06-16
    自然语言处理 linux apache
  • 如何在SAP Kyma上运行UI5应用
    这篇文章给大家介绍如何在SAP Kyma上运行UI5应用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。虽然SAP Kyma也是基于Kubernetes,但如果仅仅把Kyma当成一个普通的Kubernetes集群使用,可...
    99+
    2023-06-04
  • 如何在 Linux 上运行 ASP 缓存 shell?
    ASP 缓存 shell 是一个非常方便的工具,可以帮助用户快速地在 Linux 上运行 ASP 缓存脚本。本文将介绍如何在 Linux 上安装 ASP 缓存 shell,并演示如何使用它来运行 ASP 缓存脚本。 一、安装 ASP 缓存 ...
    99+
    2023-08-08
    缓存 shell linux
  • java文件如何在手机上运行
    要在手机上运行Java文件,您可以按照以下步骤进行操作:1. 安装Java Development Kit(JDK)和Android...
    99+
    2023-08-24
    java
  • ExtJS在Android模拟器上运行效果是怎样的
    这篇文章主要介绍了ExtJS在Android模拟器上运行效果是怎样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ExtJS是一个非常酷的j...
    99+
    2022-10-19
  • 任意Android设备上运行测试
    图:打开数据源“对话框...  图:添加一个简单数据表...  图:添加设备名称到简单数据表   这样做之后,切换到“数据绑...
    99+
    2022-06-06
    行测 运行 测试 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作