Monthly Archives: February 2008

Extending Adobe Flash Player and Adobe AIR with C and C++ via ActionScript 3

At MAX 2007 we showcased an internal project called “C/C++ to ActionScript Compiler” at the sneaks and Kevin Lynch mentioned the project at Engage 2008 yesterday. The project is a cross-compiler for ActionScript allowing any C or C++ code to run in Adobe Flash Player or Adobe AIR. The project has some interesting implications for extending Adobe’s platform in terms of legacy code, programming languages, and other open source code libraries. The key is that many other programming languages are built atop C/C++ to be more specific:

Java, Python, Ruby, PHP, Lua, Perl, C# (Mono), JavaScript, and many more…

Part of this implementation includes a pattern in ActionScript that allows for “green threading” that supports executing synchronous code in the asynchronous ActionScript virtual machine. The work done here is quite groundbreaking and has highlighted quite a few performance improvements in the current virtual machine while expanding the capability of the platform.

Like many organizations Adobe has lots of legacy C/C++ code ranging from PhotoShop filters, to PDF renderers, to readers and writers of every file format in existence, font libraries, to very complex vector renderers, and text layout code. Beyond Adobe there are many open source libraries that could be leveraged as components as well. The big thing for me is that these are not ports of these libraries, they run identical to the original source code down. For example the behavior of Python in Flash Player is identical to C-Python vs the ported behavior under the IronPython and Jython projects. The goal here is to bring lots of these legacy assets, code libraries, and languages into Flash Player and Adobe AIR perfectly so that any developer can leverage them cross-platform to build software. It would not shock me to see some of these components added into the Flash Player component cache so that they essentially are built into the player on first use.

As an example of the complexity of this project, the engineers ported the C++ version of Quake 1 engine into Flash Player and it worked perfectly and performed well. It is an extreme case but showcased the potential of this project.

To set expectations this project is Adobe internal at this time. It will be interesting to watch how this evolves over time and how much richer Adobe Flash Player and Adobe AIR become as software platforms. We are working on some game changing things, stay tuned!



Why Adobe AIR?

Building cross platform desktop software is very hard, well at least it was. Adobe AIR 1.0 launched this morning and I think it is going to change the face of software. AIR solves some key problems with desktop software and I wanted to touch on the big themes in the release.

One file, many platforms!
AIR applications are deployed as a single AIR file that works identically cross-platform. The api’s within AIR are identical across different operating systems so any application behavior will work the same regardless of where it is running. Regardless if you use HTML/AJAX or Flash/Flex to build your application the API’s are identical and run on MAC/WIN/LIN without issue.

Seamless application update
Updating desktop software is hard. It is one of the primary advantages of browser based applications in that users always get the latest version with every page view. AIR has an auto-update api that allows a developer to simply publish a new AIR file and upgrade all users running the application. Typically application update is part of the installer process but with AIR this is all built in. Security is also integrated so that only a signed AIR file matching the original can update the installed software. This makes updating deployed software easy.

Signed applications
AIR supports application signing from Verisign and Thawte. Security is important and end users need to trust who created an application.

Foundation for better…
AIR allows web developers to do more and provides API’s to allow for deeper integration with both the desktop and the web. Developers can leverage local databases (SQLLlite), integrate with any TCP/IP server with Binary Sockets, fine tune the user interfaces and user interaction with drag/drop and local file systems. This foundation for better is available to anyone who wants to build an application for free.

Large compatible market
Adobe AIR provides developers with the largest compatible deployable market for applications. If you want your application to be widely deployable first, then AIR is the platform for you. The thing is that AIR today supports all the core features for 80+% of applications in the market today. As we move forward those APIs will expand to encompass more software use cases. The key is that any user, independent of their operating system or web browser, can have the exact same experience with the deployed software.

I am looking forward to seeing what you you make with AIR. I firmly believe that this software platform is going to change how we create and deploy software. In a sense the desktop has returned as a place to make widely deployable applications.



Engage 2008 – The future of the Web

The stage is all set for Engage 2008 starting tomorrow morning. Engage is Adobe’s annual conversation on the future of applications and the web. We’re bringing together key thought leaders and influencers to share perspectives from a broad spectrum of industries. It is always interesting when you mix luminaries, leading companies, bloggers, and media for an all day conversation and this year should be especially great.

Here is a look back at Engage 2007:
Talking Apollo with Kevin Lynch at Adobe Engage

Adobe Engage – Faizan Buzdar – Scrybe

Creating Engaging User Experiences

Adobe Engage: Apollo as Web+ rather than Desktop-

Polytheistic Platforms and Apollo

Adobe Engage: Good Morning Apollo

Apollo public alpha coming in the next few weeks

Jeremy Allaire debuts “Aftermix” as part of a re-tooled Brightcove

Adobe Peels Covers Off Apollo

Orbiting Around Users At Adobe Engage

The First Real Web-Based Word Processor

Drinking the Adobe coffee

Killer demo? Listen to the keyboards

Adobe Engage: Fighting Against The Architecture of the Space



Flex 3.0 and AIR 1.0 are days away…

It is a matter of days until the release of Flex 3.0 and Adobe AIR 1.0. I am working all weekend on launch preparation and the Engage 2008 event in San Francisco. In advance I made some changes to my blog, they are hard to miss. The banner will point to the trial download for Flex Builder 3 and Flex 3 SDK seconds after the bits are available at I will also blog when everything is posted.

Again we are days away from Flex 3.0 and AIR 1.0. I am very excited about the release as it looks to be spot on perfect. The Flex SDK, AIR, and Flex Builder enhancements really make this a killer release. I cannot wait to see what you make with it.

See you at launch!


A long time ago in a galaxy far, far away…

It is a period of civil war. Rebel spaceships, striking from a hidden base, have won their first victory against the evil Galactic Empire. During the battle, Rebel spies managed to steal secret plans to the Empire’s ultimate weapon, the Death Star, an armored space station with enough power to destroy an entire planet. Pursued by the Empire’s sinister agents, Princess Leia races home aboard her starship, custodian of the stolen plans that can save her people and restore freedom to the galaxy…