I’ve been trying out the Adobe AIR (formerly Apollo) SDK. It’s a confusing business. There are two varieties of AIR apps, Flex, or HTML. The HTML kind is essentially a browser app that runs in WebKit, as wrapped by the AIR runtime, instead of in the browser, while the Flex kind compiles Adobe’s MXML into a Flash SWF which again runs within AIR. The AIR SDK only supports HTML AIR apps, so for the full experience you also need the Flex 3 beta SDK.
But I digress. I have a long-standing interest in SQLite so one of the first things I looked for was how Adobe is using this in AIR. It is there: it’s mentioned in the press release, which emphasizes that AIR has some of that open source fairy dust:
Key elements of Adobe AIR are open source, including the WebKit HTML engine, the ActionScript™ Virtual Machine (Tamarin project) and SQLite local database functionality.
However, you wouldn’t know it from the docs. The word SQLite does not appear in either the Flex or the HTML developer guides. Here’s how it introduces the “local SQL databases” section:
Adobe Integrated Runtime (AIR) includes the capability of creating and working with local SQL databases. The runtime includes a SQL database engine with support for many standard SQL features.
The SQLite library itself appears to be compiled into the main AIR runtime library, Adobe AIR.dll.
Why do I mention this? A few reasons.
First, it stinks. Let me emphasize: Adobe is entirely within its rights in not crediting SQLite in its docs. The main author of SQLite, Dr D Richard Hipp, has disclaimed copyright. So it is not illegal, but it is discourteous. By contrast, here’s how the Google Gears docs introduce the database module:
The Database module provides browser-local relational data storage to your JavaScript web application. Google Gears uses the open source SQLite database system.
Second, it’s unhelpful. As a developer familiar with SQLite, I want to see an explanation of how Adobe’s build of SQLite differs from what I am used to – what is added, what if anything is taken away. I also need to know how easily I can access the same database from both AIR and from another application, using the standard SQLite library.
Third, I’m increasingly sceptical of Adobe’s claim that it is somehow “aligning” its API in AIR with that in Gears. Here’s what Michele Turner, Adobe’s VP of developer relations, told me:
Adobe, Google, Mozilla and others will be working to align the APIs used to access local database storage for offline applications, so this functionality will be consistent for developers both in the browser and via Apollo on the desktop.
Perhaps, but there’s really no sign of this in the current beta. The AIR database API and the Gears API are totally different. The full text search extension which is part of Gears seems to be missing in AIR. Another key difference is that unlike Gears, AIR makes no attempt to isolate databases based on the origin of the application. In AIR, a SQLite database may be anywhere in the file system, and it’s equally available to any AIR application – a big hole in the AIR sandbox.
This is all beta, of course, so it can change. I hope it does. Here’s my wish list:
- Proper credit for SQLite in the docs.
- Use the Gears code – full text search could be very useful – and deliver on the promise of aligning the API.
- Failing that, set out exactly how AIR’s SQLite differs from the standard build.
I’m still getting my head around all the major releases of last week, but is this “SQL support in local databases” similar to what you’re seeking?
http://livedocs.adobe.com/labs/flex/3/langref/localDatabaseSQLSupport.html
Paul Robertson has more:
http://probertson.com/articles/2007/06/11/adobe-air-local-sql-databases-and-my-role/
jd/adobe
John
No, the official docs you reference are the same ones (more or less) I was looking at.
The second post you reference is interesting and confirms part of what I’m saying:
Tim
Sorry, I hadn’t seen that link in your post, and it does acknowledge SQLite, so I figured you hadn’t seen it.
For the APIs and Google, I know it was announced earlier this month that the Adobe and Google APIs would converge, but I’d be surprised if that could be completed and documented in time for last week’s massive Flex/Player/AIR launch. (iow, we may not be at the destination yet.)
I’ll pass this link among my partners, though, and maybe another Adobe staffer has better info than I do at this point.
jd/adobe
As John has suggested, the reason for leaving the SQLite name out of the documentation, and also (in my opinion) for the lack of parity between the AIR and Google Gears APIs, involves a somewhat fuzzy combination of:
– development schedules
– beta documentation deadlines
– lack of knowledge of some (then NDA) initiatives
– human limitations =)
That’s the fuzzy summary version — for the fuzzy long version, see my post Why doesn’t Adobe’s AIR dev guide mention SQLite? A response to Tim Anderson.
Paul Robertson
ActionScript Developer/Writer
Platform Developer Documentation
Adobe Systems, Inc.
John,
Can’t see SQLite mentioned, nor can my browser’s page search. It’s “livedocs” though, so it could be changing.
Tim
Paul,
Thanks for this, most encouraging.
Though I think you underestimate the number of existing SQLite developers.
Tim
That is certainly a real possibility =)
Admittedly, already since I wrote that post I’ve seen more evidence of AIR developers with prior SQLite experience in other platforms/contexts. Or perhaps (probably) I’m just more aware of it now?
Paul
you want SQLite ? switch to JNEXT (http://jnext.org)