适用于 Android(非 WebKit)的 Javascript 引擎选项
我们创建了一个 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 Market 分发。
We have created a HTML5 + Javascript application and would like to port it to Android.
We already know WebKit is not capable to run the HTML5 app because
Heterogenous Android codebase supports the latest HTML5 feats badly
We use WebGL
Complex HTML5 user interface is too slow to be rendered on Android WebKit
However our core application logic still resides in Javascript.
Now are are looking for ways to
Run the application logic directly ported (copied) Javascript
bind itself to Android Java UI API easily
Build native Android UI around this Javascript logic
Create WebGL compatible bindings for Android OpenGL ES and access graphics API from Javascript
Hopefully JIT or decent performance
What options we have for custom JS runtimes on Android? I know Firefox Aurora does this already; Firefox is largerly JS based app and now they switched from XUL to native Android UI in Aurora builds.
The resulting application must be production quality and subject to Android Market distribution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您想要所有 HTML5(尤其是 WebGL),那么您还需要 DOM API,它们不是 SpiderMonkey 的一部分。 SpiderMonkey 只是核心 Javascript 语言解释器,不包含特定于浏览器的绑定,如窗口/文档/元素对象。因此,如果你想在 Android 上使用 HTML5+JS,你就必须嵌入整个浏览器,而这对于 Firefox Aurora 来说并不容易做到。
If you want all of HTML5 (and particularly WebGL), then you'll need the DOM APIs as well, which are not part of SpiderMonkey. SpiderMonkey is just the core Javascript language interpreter, and doesn't contain browser-specific bindings like the window/document/element objects. So really if you want HTML5+JS on Android you'll have to embed the entire browser, which is not easily doable with Firefox Aurora.
看一下 Firefox Mobile 的新本机 UI 代码,它嵌入了 Gecko(以及 SpiderMonkey),并具有桌面版 Firefox 的所有内容功能,其中包括 WebGL。
但请注意,Firefox Mobile 过去所做的事情与您想要的非常相似:嵌入 Gecko 引擎(并向其提供必要的设备访问 API),然后使用 XUL 和 JavaScript。这会导致严重的性能问题,也是我们现在开发适用于移动设备的 Java UI 的主要原因。
正如 staktrace 提到的,如果您想要 WebGL,您将需要 DOM,这意味着您将需要完整的 Gecko。或者您可以直接将 OpenGL ES 与 Android 的图形 API 结合使用。也许可以提取或重用 Gecko 的一些 WebGL 代码并创建您自己的 OpenGL JavaScript 绑定,但它不会是 WebGL。
Take a look at the new Native UI code for Firefox Mobile, it embeds Gecko (and consequently SpiderMonkey), and has all the content capabilities of Firefox for desktop, which includes WebGL.
Note, though, that Firefox Mobile used to do something very similar to what you want: embed (and provide the necessary device access APIs to) the Gecko engine and then do all the UI and application logic with XUL and JavaScript. This lead to significant performance issues, and is the main reason we're now working on a Java UI for Mobile.
As staktrace mentioned, if you want WebGL you'll need the DOM, and that means you'll need Gecko in its entirety. Or you can use OpenGL ES directly with Android's Graphic APIs. It may be possible to extract or reuse some of Gecko's WebGL code and create your own OpenGL JavaScript binding, but it won't be WebGL.