Daniel Dura on Apollo
Some notes from the session:
- Project is in early development
- Individual items/features subject to change
- Accurate as of today (he's showing the latest build from last night)
- Not mock-up, etc. Everything he's showing us is working version
What is Apollo?
Apollo is a cross-OS runtime for building RIAs. Leverage skills in Flash, Flex, HTML, Ajax to build and deploy desktop RIAs.
Targetting the Apollo runtime as several benefits:
- Run across multiple operating systems with any additional work by the developer
- Apps are easier to develop. Leverage existing web technologies instead of
- learning lower-level languages such as C, C++. (i.e., simplicity)
Build applications using the following technologies:
- Combinations of the above
- PDF can be used in any application
- Depends on container being used
- AS3 - Flash/Flex
- JS - HTML/CSS/AJAX
- Cross-environment communication and scripting will be possible
- Complete access to Flash Player and HTML DOMs and APIs
For example, you can embed Flash into a JS container and traverse the Flash DOM from JS. You can walk the DOM in both JS and Flash, transparently.
Rich set of frameworks and APIs:
- Apollo-specific APIs provided by the Apollo runtime and the Apollo framework (e.g., file system API.)
- Flash Player-specific APIs provided by the Flash Player and the Flex Framework (as well as other AS-based libraries and frameworks.)
- Offline/occassionally-connected (like Macromedia Central)
- XML-RPC/SOAP/REST-based web services
- Binary and XML sockets
- Local storage/settings API
- Custom chrome
- Installation: A packaging format (.AIR). Custom format. Contains all assets for application in a single file. Can be emailed, downloaded, etc. Single-click install. Download and install Apollo runtime.
- Application shortcuts will be placed in the correct places for the OS (eg. in Start Menu on Windows.)
- Drag and drop
- Launch native applications: e.g., Building a photo-upload tool and launching iPhoto.
- Cross-application communication: Make it easy to expose the APIs of your applications so that other applications can take advantage of them. Desktop mashups.
Danny's got a couple of AIR files (the installer) and the Apollo runtime (Apollo.msi on Windows) on his desktop.
Pixel Perfect by Christian Cantrell. The installer looks like it was created in Flex. Creates shortcut on desktop. Installation was simple. It's a ruler application. Very cool/simple app. (I use Grab on OS X for measuring areas of the desktop but this looks cooler!)
In Task Manager it's taking up 0 CPU 14,256K memory at the moment. (It has its own process in the Task Manager.) If one Apollo application crashes, it won't affect any other Apollo applications.
Users really don't need to know that they're running Apollo apps. It's just like any other app.
Lookup by Christian Cantrell. App that loads word definitions from a web service. Cool little application. Apollo will allow people to build small desktop applications easily.
File Browser. It's a OS X-style file browser built in Apollo. Neat.
He's now showing an application that loads in your iTunes music and plays them back. Flickr photos based on song that's playing. Cool 3D spectrum analyzer.
Video Demo: Full-screen video of an IMAX Deep Sea video. It's very high quality.
Building a sample Apollo application
Danny is now building an Apollo application in Flex. Basically, it's like any other Flex 2 application with the following differences:
- Add a namespace for apollo (http://www.adobe.com/2006/apollo)
- Use the
- Create an Application.mxml file. This is the manifest file that describes the application
Inside the ApplicationWindow, he puts some regular Flex components (Button, Label).
Application.xml manifest file:
You can use command line compilers to compile Apollo and create Apollo installers. (You don't have to use Flex Builder 2.)
- Public beta by the end of 2006
- Version 1 release: Sometime in 2007
There's a question:
Are there APIs for accessing databases?
No object-relational mapping. They're exploring data support. You can write AMF objects to the file system. AMF is the format of Flash Remoting.
Apollo looks really great. Can't wait to try it out with Flex 2. It's going to open up desktop application development to a large number of web developers.