This post is written from some notes I took at Mike Chambers’ Presentation @ FOTB â€“ Apollo. This is very much as at time of writing and it is very likely that some of this will quickly become out of date information. If anyone spots any glaring mistakes please post a comment and I will rectify it.
“Apollo” is the codename of a new technology from Adobe that has currently reached an internal release. Mike Chambers, Senior Product Manager for Developer Relations at Adobe gave an excellent overview of how Apollo is shaping out. Here is a summary of my notes from his presentation he gave at Flash On The Beach earlier this week.
Apollo is a desktop runtime that enables desktop RIAs built in Flash, Flex, HTML and/or AJAX and any combination there in. One of the key advantages of having a local machine runtime for what have been traditionally web applications, is the ability to make use of local resources such as file I/O (e.g accessing mp3s, saving local images, saving configurations or data for offline working etc.).
Apollo applications will be developed essentially to work locally as per traditional software, however with an inherent access to online technologies, services and APIs. This is essentially freeing online application developers from the restrictions of the browser. No worrying about inappropriate use of the back button, if you need a back button, you implement a back button.
One of the huge advantages and key elements of Apollo is that it is going to be truely cross platform. You can develop for Apollo, deploy to windows, mac, linux. This is huge deal, no cross browser issues OR cross platform issues. One platform = one implementation with no need for dirty hacks and no restrictions on your audience.
When developing an Apollo application, HTML content can contain Flash AND Flash content can contain HTML. This was demonstrated at Mike’s presentation and is something I have been wanting to appear in Flash for a long time. Basically you can add a rendered HTML page to a displaylist in Flash just the same way as you can add any other image. Imagine loading in a HTML document into a movieclip in your Flash movie, being able to apply rotation, scaling, filters etc but still being able to use it as a fully featured HTML page. In the presentation Mike loaded the Adobe homepage, rotated it 45 degrees, scaled it down, applied a blur and then was still able to navigate the site.
The chosen HTML Engine for Apollo is WebKit, this was chosen for the following reasons:
– Open Project
– Proven Technology
– Minimum file size
– Proven ability to run on mobile devices
Another feature of Apollo is that both Flash and HTML can integrate PDF, this wasn’t demonstrated and is still in development. I queried Mike on how downloads would work and he said that plugins will be required as needed. So rather than packaging the huge Acrobat reader to the Apollo runtime installer you can prompt for this if and when needed.
Apollo provides access to several desktop apis
Offiline / Occasionally connected to determine the current connectivity state and whether to poll an online service for the latest information/update personal settings or to use localised resources until a connection is available.
Complete Network support â€“ http, xml/soap Binary and xml sockets
File I/O â€“ synchronous AND asynchronous (sync for small files e.g settings, async for larger files e.g. playlist or photo album)
Local storage / Settings
Drag & Drop files to/from Apollo
System event notifications
These apis leads to potential Apollo apps that can run in the background I.e no need for any sort of UI until if and when needed. Apollo allows custom chrome, this means you have complete control over how your application looks. Shape and Alpha of application on desktop. Mike demonstrated there are currently two modes for chrome, system chrome or transparent chrome. System chrome will present your app in the default chrome for your operating system (I.e. right hand maximise, close minimse buttons in windows or ‘traffic light’ buttons on left in mac)
Installing an Apollo Application
There are currently planned, three methods to install Apollo apps:
.air extension â€“ is a .zip packaged application.xml and swf. These installers are for if the user has Apollo on their machine they can simply double click the .air file et voila.
Native installer â€“ creates windows/mac installer, includes checking for Apollo, if not present will install Apollo then your app
Web Install â€“ â€œExpress installâ€, install direct from web with a check for the Apollo runtime
As you may be able to tell from the write-up I think Apollo is going to be big. It certainly looks to solve a lot of peoples problems and wishes. I would say the biggest thing of the moment is going to be ideas for implementation. We’re all used to either developing web applications or developing software applications. To my mind we’ve never had a platform that so smoothly destroys the boundary between online and offline software development and this new way of thinking will take some getting used to. I’m sure we’ll start off with a nice steady flow of photo galleries, aggregators etc but give it time and there’ll be some application concepts far beyond current considerations.
The following are some notes I made from the presentation that I intend to do some further research on and will post in due course:
- Small runtime footprint â€“ currently 5meg (includes HTML and Flash)
- Currently HTML only runs through Flash
- HTML is rendered via the Flash displayList
- HTML can be manipulated as per bitmaps in Flash â€“ whilst maintaining HTML functionality
- Other plugin integration: Some will be supported â€“ Flash, PDF not quicktime/windows media for 1.0
Low level interaction between HTML/JS and Flash
Flash can manipulate HTML DOM
1.0 will launch for Win and Mac, Linux will be later
Command line tools â€“ adt and adl to assist build of Apollo apps
HTML Flex control
Demo â€“ Google Maps App
Accesses all local contacts, allows click of contact to find where on map they are
Demo â€“ Picture this
Photo from webcam, converts to png, saves to filesystem â€“ could have compressed to jpg with jpg library.
Demo â€“ ScreenPlay
Allows drawing over desktop
Demo â€“ Assassin
Allows monitoring of items on amazon, get desktop alerts for changes in availability, price, comments etc.
At minimum will have 2 files, 1 swf/html/js and 1 xml
Xml â€“ application properties, name, author etc, root application file, specify mac and windows icon or png which will dynamically generate icons
Timeline: beta on labs early 2007
1.0 mid-late 2007
mxna smart category
not aimed at kiosk/cd rom apps
security â€“ undetermined as yet, multiple sandboxes â€“ unknown author = web sandbox (restrict file access etc), digitally signed â€“ full desktop privileges.
Flash player and acrobat reader will be prompted for as required.
Update mechanism for releasing application updates.