千家信息网

怎么在iOS和Android上选择JavaScript引擎进行应用开发

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"怎么在iOS和Android上选择JavaScript引擎进行应用开发",在日常操作中,相信很多人在怎么在iOS和Android上选择JavaScript引擎进行应用开发问题上存在疑
千家信息网最后更新 2026年10月31日怎么在iOS和Android上选择JavaScript引擎进行应用开发

这篇文章主要介绍"怎么在iOS和Android上选择JavaScript引擎进行应用开发",在日常操作中,相信很多人在怎么在iOS和Android上选择JavaScript引擎进行应用开发问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么在iOS和Android上选择JavaScript引擎进行应用开发"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

怎样在IOS/Android上使用JavaScript

主要有两种方法。一种是使用系统的浏览器组件(IOS中的UIWebView和Android中的WebView),另一方法就是使用整合好的JavaScript引擎。

使用系统的浏览器组件比较容易实现但是更复杂,效率也低。 WebView提供了 addJavascriptInterface 把Java
classes注入到JavaScript文本的方法。但是它只支持最原始的几种数据类型,因此也局限了API设计。并且在Android 2.3模拟器上不稳定,在真机上也会遇到 issue
#12987的问题。在IOS上更糟 UIWebView没有公共的APIs支持JavaScript到Objective-C的交互(你必须使用似有的APIs才能达到与addJavascriptInterface相同的功能)。

PhoneGap 是基于 UIWebView and WebView的比较出名的项目。开发者被迫使用回调函数从JavaScript
APIs得到返回值。这在游戏上效率极低,也更为复杂。

早期的ngCore同样依赖UIWebView来支持iOS。但是这个机制由于其糟糕的表现被取代。

为了获得更好的表现、灵活性、兼容性,嵌入全功能的JavaScript引擎变得更为有效。

选择JavaScript 引擎

据我所知,iOS 或 android 上能够运行的JavaScript 引擎有4个: JavaScriptCore, SpiderMonkey, V8 and Rhino.下面这个表格展示各个引擎在iOS
和 Android 的兼容性


iOSAndroid
JavaScriptCoreInterpreter onlyInterpreter and JIT
SpiderMonkeyInterpreter onlyInterpreter and JIT
V8JIT only for jailbroken devicesJIT
RhinoUnsupportedInterpreter


当我设计 OpenAphid-Engine 成为一个合适的Javascript的引擎的时候,我主要考量以下指标:

  • 兼容性:同时支持iOS 和 Android 在x86 和 ARM 平台上的 模拟器和 设备。

  • 稳定性. 稳定的运行在对应的平台和CPU的架构上。

  • 扩展性. 能够很方便的利用本地特性进行扩展。例如OpenAphid-Engine 通过一个桥接层,实现了通过Javascript 进行OpenGL
    ES 的使用。

  • 性能好:一个快速的Javascript 引擎主要归结为两个因素:有效的绑定机制和进行较低的开销。. OpenAphid-Engine 在渲染一帧页面的时候通过JavaScript触发数百个OpenGL
    ES调用来进行渲染。这点是非常有意义的,如果只是把开销放到单纯的执行JavaScript上进行将会导致渲染很慢,。

  • 体积小.:在内存的占用上和自身的执行文件上都要比较小。

Rhino和 V8出现的最早,但是不支持iOS。我非常希望可以使用 V8开发 OpenAphid-Engine ,在初次使用时就发现它拥有优雅的代码结构,良好的表现,但是我非常失望,因为 V8只能在JIT模式下使用,而IOS不支持。除非你使用jailbroken设备。(详情请参考 issue
#1312)

我在JavaScriptCore和SpiderMonkey间纠结了很久。在成功部署了Android和IOS项目后,我通过实验找到更好的一个。

SpiderMonkey 容易得到开发权限,但是在与JavaScriptCore比较时甘拜下风。SpiderMonkey产生了大量的二进制文件
(在ARMv7上大约1.3MB);JavaScript执行得更慢,在JavaScript和C++的桥接表现更为重要。另外一个让我远离SpiderMonkey的原因是在iOS模拟器上出现随机崩溃现象。

JavaScript引擎会受很多东西影响,比如交叉编译器的版本、引擎的版本和操作系统的种类等。下表列举了几种运行在iPod Touch 4上引擎的运行时间。(有兴趣请于Google
Doc查看精确的时间)

  • JavaScriptCore 大比分领先。

  • 我没有找到SpiderMonkey,所以就使用了下面的三种自定义搭建Cocos2d-iPhone-2.1-beta4, Cocos2d-x-2.1-beta3和iMonkey。

  • 所有测试的apps都基于LLVM 4.1版本,所有的引擎都运行在解释器模式(iOS受限)。

  • 几种基准的介绍:

    • 1m-js_loop执行空循环一百万次。

    • 1m-native_function请求调用一百万次返回undefined的本地函数

    • 1m-js_function跟上面一个相同,只是换成了JavaScript。

    • fib(30)递归的方式计算Fibonacci(30)。

    • sudoku-5用这里的算法解决Sudoku问题。

  • 1m-native_function JavaScriptCore使用可移植的C
    APIs实现,当然这不是最有效引入本地函数的方法。

  • SpiderMonkey 在台式电脑上由于高级的JIT追踪方法运行更快,但是在IOS设备上却与之相反。

  • 在大部分的基准上,使用iMonkey比SpiderMonkey更快

  • 很明显的,使用SpiderMonkey将会在iOS上获得更好的表现。ngCore 1.10在iOS上加入自定义功能,所以要更优于像SpiderMonkey这样的变体。

对于JavaScript Code 的挑战

在我专心于 JavaScriptCore之后,我的研究更进了一步:

1. 它在运行 一百万 次 native_function和 一百万次Math.abs(0) 的时间六倍于 使用 JavaScriptCore.我观察到同样的性能问题出现在通过注入的方式访问对象的属性。

2. 利用 C
APIs 进行设计虽然开发简单,但是缺乏灵活的内存管理机制。缺乏一个高级的内部垃圾回收机制很难解决类似于 circular
references 的问题。

3. 众多的 JavaScriptCore 正式版本都是可用的
。 不过 OpenAphid-Engine 是更好的一个,它不但速度快,而且相当小。

我抛弃了原来的使用 C
APIs 方案因此解决了 问题 1 和 2. 使用的JSC 版本来自于iOS4.3.3,因为同样在解析器模式下这个版本相比来自于iOS 5 的版本更快,执行文件更小。

在其他产品上使用的JS引擎

在开发OpenAphid-Engine期间,我一直保持对其他引擎的关注,以下这个表格总结了其他JS引擎的使用情况


iOSAndroid
ngCore 1.6 and aboveUIWebViewV8
ngCore 1.7 and laterSpiderMonkeyV8
TitaniumJavaScriptCoreV8 or Rhino
PhoneGapUIWebViewWebView
Cocos2D-x JavaScriptSpiderMonkeySpiderMonkey
CocoonJSJavaScriptCoreJavaScriptCore
EjectaJavaScriptCoreUnsupported
directCanvasJavaScriptCoreNo clue

到此,关于"怎么在iOS和Android上选择JavaScript引擎进行应用开发"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

引擎 开发 版本 运行 方法 问题 支持 上选 应用开发 应用 机制 学习 有效 兼容性 函数 文件 时间 是在 更快 模式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 天津市摩尔互联网科技 北京路客互联网科技有限公司 互联网科技公司华为 科技赋能下的互联网金融 互联网是不是新科技 关于新基建和互联网科技 金融科技与互联网金融 智网互联网科技 伴你行互联网科技有限公司 重庆科技学院互联网 西藏七维空间互联网科技有限公司 米聚互联网科技南京有限公司排面 长沙茂晟互联网科技有限公司 领航科技大厦互联网公司 下一代互联网重大应用科技园 福州德业互联网科技 互联网科技企业商标注意事项 三亚科技创新互联网基地 安徽九吞吴互联网科技有限公司 鑫亿盛互联网科技 易通互联网络科技有限公司 佩信高科技互联网 哈尔滨秒房互联网科技有限公司 太原新华互联网科技学校怎么样 阿里巴巴算科技企业还是互联网 互联网校园科技培训 互联网保险科技创业 普陀区互联网教育科技管理办法 互联网科技创新创业项目
0