Update on Apollo (m2 release)

Sorry for the lack of posts lately. I have been traveling a lot (Korea Max, and now in Europe), as well as focusing on an internal Apollo release. I wanted to make up for the lack of posts though by giving everyone an update on what is going on with Apollo.

As I mentioned above, we just had another internal Apollo release. This release, named M2, is our third internal release and includes a number of new features including:

  • HTML Support within Flash content (woot!)
  • Updated File System API (with both Synchronous and Asynchronous APIs)
  • Initial implementation of express install from the web browser
  • Updates to the Windowing API (although we don’t have multiple window support yet)
  • Initial Flex Framework support of Apollo (i.e. HTML control, ApolloApplication component).
  • lots more

We have added our initial HTML support, and it is pretty cool. Right now HTML only works within Flash / Flex content. i.e. you cant have a top level HTML Apollo application yet. The thing that is really cool though about the HTML support via Flash, is that the HTML is rendered via the Flash display stack, and thus anything that you can do with content on Flash’s display list (blur, rotate, etc…), you can also do with HTML (and the HTML remains interactive). You can find more details on this video of the the HTML session from Max that I posted a couple of weeks ago.Right now, you can specify a URL for the HTML control to load (remote or local), or give it a string of HTML to render. Remember, that this is a full HTML engine (WebKit), so all HTML, CSS, JavaScript, etc… is supported.Another cool thing that was included in M2, was a pretty significant update to the File I/O API. In general the APIs were cleaned up and rationalized, but the biggest thing was the addition of a synchronous File API (in M1 all File I/O was Asynchronous). This provides a lot of flexibility for the developer, and makes it even easier to read / write data to and from the file system.One little gem that I discovered in the APIs was the File.writeObject() and File.readObject() methods. Basically, this will take an ActionScript object and write it out to the file system (or read it from the file system). Using the registerClassAlias API or meta data, you can even serialize and de-serialize custom classes. This makes it super simple to persist application state between sessions.For example, here is the code from Ascension (an Apollo mp3 player I am working on) that saves and loads the song library:[code]//this is the code the loads and de-serializes an Array of Songsprivate function onFileReadComplete(event:Event):void{var fs:FileStream = FileStream(event.target);//this reads the file as ActionScript data (in this case//an Array of Songsvar data:Array = (fs.readObject()) as Array;fs.close();for each(var s:Song in data){addSong(s);}}//this serializes the current Array of Songs to the file systempublic function save():void{//createLibPath just returns the path to the file//where the songs are serializedvar fr:File = new File(createLibPath());var fileStream:FileStream = new FileStream();fileStream.openAsync(fr, FileMode.WRITE);//songs.source is an Array of Song instancesfileStream.writeObject(songs.source);fileStream.close();}[/code]I use ASYNC APIs here as I don’t know how large the song library for the user will be. This ensures that the app will not lock up and freeze even if loading / saving a very large song library.The team is now starting to work on the next release (M3). Tons of new stuff going in including support for HTML / JavaScript based applications. I will post more info on this a little further into the development cycle.Anyways, that is a quick update on what has been going on with Apollo. Pretty much everyone we have shown Apollo too has been pretty excited about it, which is cool (especially considering that we are still pretty early in the development process). Expect to hear and see more over the next couple of months.As usual, you can find more info on Apollo at:http://www.adobe.com/go/apollo

12 Responses to Update on Apollo (m2 release)

  1. Tom says:

    that’s very cool, is there any planned support for working with DLL’s?

  2. mike chambers says:

    –is there any planned support for working with DLL’s?–probably not for 1.0.Keep an eye on this item in the FAQ for more info:http://labs.adobe.com/wiki/index.php/Apollo:developerfaq#Will_developers_be_able_to_extend_Apollo_with_native_code.3Fmike chambersmesh@adobe.com

  3. Benjamin says:

    Hi Mike,that does not sound like a public alpha is around the corner. Any details when it will be available for us to play? Going crazy checking labs every day – need this now to play with – take me in the beta :-)Will we be able to package command line tools with apollo.ThanxBenz

  4. mike chambers says:

    –Any details when it will be available for us to play?–Currently targetting early 2007 for labs release. More info here:http://labs.adobe.com/wiki/index.php/Apollo:developerfaq#When_will_Apollo_be_released.3Fmike chambersmesh@adobe.com

  5. Savvas says:

    Thanks for sharing Mike..Everyday Apollo looks more and more sexy!

  6. matt says:

    Building a browser with Apollo seems like a no-brainer. I’d like to see tabed browsing with a 3d flash(Sandy) Alt-Tab window effect.Example:http://mannu.livejournal.com/383661.htmlMaybe add some side-panel navigation. All the ingredients for a better browser are there. Adobe (or someone with access to Apollo) just needs to put is all together.Looking forward to it.

  7. Ian Turgeon says:

    Mike, I’ve appreciated the close contact with the Flash (and related) teams through the past MAX events, this year some of the Apollo guys indicated that we should strike up conversations regarding HTML rendering in future Flash Players, and if that was something us developers were interested in.I can speak for my entire team (who’s eyes lit up when I shared Apollo’s HTML rendering) that we most definitely would plead and beg for this feature. We often find ourselves stuck limiting users to very simple text rendering for content they should have the power to make beautiful.With that said, we are also very excited to see the options Apollo adds to our wonderful and growing Flash Platform.My only question is: Is the Apollo API going to be exposed to AS2 at all or are we to expect to see this entirely as an AS3 implementation?We absolutely can’t wait to get our hands on it. Keep pushing it guy’s I think everyone’s pretty excited.

  8. Yarm says:

    Anyone know if the HtmlComponent find its way into the non-appollo Flex 2 stack?IMHO this is a **key** piece that would open the way to a wider application of Flex. There is the Flex IFrame that sort of works (essentially it is a hack).

  9. Phillip Kerman says:

    It all sounds cool. However, I’m not exactly sure what milestone numbering system you’re using. Of course it varies by company, but my experience has been:M0 just a specM1 functional prototypeM2 artwork and 95% of featuresM3 locked down features and art, hopefully only a few bugsM4 bug free and all deployment testedRelease.How does this compare to your M2? I mean, early 2007 is soon for a big project. And your numbering is different than what I’d expect especially if your M2 doesn’t have a lot of new features. I’m just curious.Thanks.

  10. John Farrar says:

    Since Flex Builder is one way to build content for Apollo… and NO BODY seems to answer this question… where do we get a current debug version for the current version of Flash?

  11. almis says:

    Hi Mike,The company I work for is currently working on a proof-of-concept project using Flash Professional 9 alpha release from Labs. The primary limitation that prevent us from proceeding past the demo stage is that there appear to be no way to write to a file on the local file system. Since your article references an “update to the File I/O API” I wonder if we may have overlooked the existense of a File I/O implementation in the alpha version? Thanks!