Dominic Szablewski, the creator of the JavaScript game engine Impact has released a library for creating iOS apps using Impact that don’t rely on UIWebView to run. Unlike apps created with PhoneGap or Titanium, these apps run in pure JavaScript. Apple has already accepted Szablewski’s first two apps built using this approach.
“They bypass the iPhone’s browser altogether and use Apple’s JavaScript interpreter (JavaScriptCore) directly. All graphics are rendered with OpenGL instead of in a browser window and all sound and music is played back with OpenAL instead of… well, having no sound at all,” he writes.
You’ll need an Impact license to download it. There’s some basic documentation here
There are some drawbacks. This is still entirely experimental and make not always work. Also:
JavaScriptCore uses libicu to sort strings according to a unicode locale. Sadly, libicu is also private on iOS and bundling it is not an option because of its size. So I got rid of libicu completely. This means that only ASCII strings are now sorted correctly (e.g. the umlaut “Ä” will come after “Z”, not after “A” as it should). Other than that, the JavaScript library should behave exactly as the private one that comes with iOS.
Also, the JavaScriptCore library bundled with iOSImpact does not use the JIT compiler (Nitro). You can’t allocate executable memory on the iPhone and if Apple doesn’t lift that restriction, there’s nothing I can do about it.
All told, this is an interesting approach.