Android的Javascript引擎选项(非WebKit)

Javascript engine options for Android (non-WebKit)

本文关键字:WebKit 选项 Javascript 引擎 Android      更新时间:2023-09-26

我们已经创建了一个HTML5+Javascript应用程序,并希望将其移植到Android。我们已经知道WebKit无法运行HTML5应用程序,因为

  • 异构的Android代码库严重支持最新的HTML5壮举

  • 我们使用WebGL

  • 复杂的HTML5用户界面太慢,无法在Android WebKit 上渲染

然而,我们的核心应用程序逻辑仍然存在于Javascript中。

现在正在寻找的方法

  • 运行直接移植(复制)Javascript 的应用程序逻辑

  • 将自己绑定到Android Java UI API轻松

  • 围绕这个Javascript逻辑构建原生Android UI

  • 为Android OpenGL ES创建与WebGL兼容的绑定,并从Javascript 访问图形API

  • 希望JIT或性能不错的

我们在Android上有哪些自定义JS运行时选项?我知道Firefox Aurora已经做到了;Firefox是一款基于JS的大型应用程序,现在他们在Aurora构建中从XUL切换到了原生Android UI。

由此产生的应用程序必须是生产质量的,并服从Android市场分销。

如果你想要所有的HTML5(尤其是WebGL),那么你也需要DOM API,它们不是SpiderMonkey的一部分。SpiderMonkey只是核心的Javascript语言解释器,不包含像窗口/文档/元素对象这样的特定于浏览器的绑定。因此,如果你想在Android上使用HTML5+JS,你必须嵌入整个浏览器,这在Firefox Aurora上是不容易实现的。

看看FirefoxMobile的新原生UI代码,它嵌入了Gecko(以及SpiderMonkey),并具有Firefox桌面版的所有内容功能,包括WebGL。

不过,请注意,Firefox Mobile过去做的事情与您想要的非常相似:嵌入Gecko引擎(并为其提供必要的设备访问API),然后使用XUL和JavaScript执行所有UI和应用程序逻辑。这导致了严重的性能问题,也是我们现在为Mobile开发Java UI的主要原因。

正如staktrace所提到的,如果你想要WebGL,你需要DOM,这意味着你需要Gecko的整体。或者,您可以直接将OpenGL ES与Android的图形API结合使用。可以提取或重用Gecko的一些WebGL代码,并创建自己的OpenGL JavaScript绑定,但这不是WebGL。