Ted Patrick > { Events & Community } > Adobe Systems


Adobe AIR for cross-Windows® development

Developing native desktop applications for the many permutations of the Microsoft® Windows® operating system is a really difficult problem for software developers and corporate IT. In many cases applications have migrated to the web browser to simply avoid the fragmented native API's of the operating system. Writing a single application that works across all version of Microsoft® Windows® is often an impossible task. Worse Microsoft deprecates support of certain operating systems as they push new operating systems, tools, and dependencies. For example, WPF is only supported on Microsoft® Windows® XP Service Pack 2 (Must add .NET 3.0) and Microsoft® Windows® Vista® (native) leaving the many XP and 2000 customers without few options for using the latest software. Even Microsoft® Silverlight only supports up to Windows XP Service Pack 2 or higher for browser based applications.

Enter Adobe AIR!

Adobe AIR supports the following Microsoft® Windows® operating systems today with 100% feature equivalance:

Microsoft® Windows® 2000
Microsoft® Windows® XP
Microsoft® Windows® Vista® Home Premium
Microsoft® Windows® Vista® Business
Microsoft® Windows® Vista® Ultimate
Microsoft® Windows® Vista® Enterprise

Keys:
- Same .AIR file installs on all supported OS's
- Same API's on all supported OS's
- Seamless support for Apple OSX (All versions) and Linux
- Leverage all existing HTML/JS/Flash/PDF content in a single runtime.
- Local SQLite database (included)
- WEBKIT browser engine (included)
- System Notifications (included)
- Flash Player (included)
- Native file system support (included)
- PDF support (included)
- Network detection (included)

Basically if you are thinking about building an native desktop application on Microsoft® Windows®, you might want to take a look at Adobe AIR. You will get more reach with existing operating systems and you get full Apple OSX and Linux support all for $0. I think it will come to pass that AIR really is changing the game in terms of software reach.

Cheers,

Ted :)

30onair.com Stats

130 Videos, 50,451 video views, 357920 seconds watched or 994 hours watched

Get out there and make a video for 30onair.com!



Cheers,

Ted :)

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!

Cheers,

Ted :)

I keep seeing everyone (press, bloggers) mix up the comparable technology offerings between Microsoft and Adobe. Not that they really compare in quality but rather the deployment targets are identical. There is a huge difference between a browser plug-in and a cross-platform desktop runtime.

Here is how things are comparable:

Web Browser Plug-ins:

Adobe Flash Player 9.0 (soon 10.0)
vs.
Microsoft SilverLight 1.0 (soon 2.0)


Cross-Platform Desktop Runtimes:

Adobe AIR 1.0
vs.
Microsoft ________ (aka ... nada, zip zilch)


Note: Microsoft doesn't have a cross-platform desktop runtime and has not shown one publicly at this time.

In other words:

Adobe Flash Player 9.0 is to the web browser
as
Microsoft Silverlight 1.0 is to the web browser.

Adobe AIR 1.0 is to the desktop
as
Microsoft ________ is to the desktop.

Hope that helps clear the AIR!

Ted :)

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.

Cheers,

Ted :)

123 Go!

Make something great! Long post in the am. W00t go flex 3!

Ted :)

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


Cheers,

Ted :)

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 Adobe.com. 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!

Ted :)

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...



Ted :)

There are a number of different ways to make a video for "30onair". First off you just need to get video onto YouTube.com and this either involves:

1. Recording live using "Quick Capture" (webcam required) HERE.

2. Uploading a digital video file HERE.

Using "Quick Capture" is easy if you have a webcam and microphone (especially if you have a mac, it just works). "Quick Capture" uses Adobe Flash Player to capture video and record it directly onto YouTube.com. For quick video testimonials this is clearly the easiest route.

For uploaded videos, the options expand dramatically as YouTube supports the following video file formats for upload: .WMV, .AVI, .MOV, .MPG. Anyone that can create these files can contibute and these formats support the video record option on nearly all digital cameras. Yes the little Canon Elph can be used to record video for 30onair too.

The more interesting options show up when you look at screen capture/screen recording as these files are perfect for demoing applications you have made or projects think are great. There are a few nice screen recording tools out there:

Adobe Captivate
IShowU (MAC)
Camtasia Studio
ScreenFlow (MAC Leopard)
ScreenMimic

There are also a large class of software for Vlogging (Blogging in video). These allow you to integrate all sorts of sources to create a video containing mixed audio, effects, and many include a teleprompter.

Vlogit
Visual Communicator
iMovie

Also there are a ton of great professional video editing tools as well.

Remember to tag it with "30onair", so we can find it!

Get out there and make some video!

Ted :)

The onAIR Train Tour - European Edition

ALL ABOARD!!!!! Well the onAIR tour is coming to Europe and I will be there. From Madrid to Dublin (March 31-April 11) and Stockholm to Milan (June 2-June 13) we will be hosting developer events on AIR. It will be a great time to catch up with all the developers in Europe.



Look forward to seeing you in Europe!

Cheers,

Ted :)

30onair.com Launched

Today 30onair.com web site launched. Now go make a 30 second video on "Why AIR?", "Why Flex?", "Why Flash?", "Why Flash Player?", "Why JavaScript?", "Why ActionScript?", "Why ColdFusion?", or just plain "Why?". Simply post the video to YouTube.com and tag it with "30onair" so we can find it.

Enjoy 30onair.com and go make a video!

Ted :)

30onair.com - 10000 Video views from 50 videos

I started posting videos last Thursday and the videos on 30onair.com just passed 10,000 total views. This project is just ramping up and by next week we will go from 50 videos to over 200 in the next week. To cover the Flex/AIR launch activities we sent over 400 Flip Video cameras to key customers, agencies, and user group managers around the globe. The Flip cameras make it easy to upload video to YouTube.com and thus to 30onair.com. Simply tag your video with "30onair" and the team will find it.

Having seen many high quality community videos pour in the last few days, I think we are going to be overwhelmed in a weeks time with content.

30onair.com
- What you get when you cross Bunnies in 30 second movie summaries with software developers and social media.

Fun Fun!

Ted :)

Here is the SWF player for the "30onair" top 30 videos. Please feel free to embed this player on your blog or website so others can enjoy the videos covering launch activities for both Flex and AIR. We are really close to launch and the video badge will help spread the word about the releases and showcase your videos posted to youtube.com.



Also if you want to use SWFObject 2 for detection here is a good example.

We have tons of new videos coming to 30onair.com so be on the lookout!

Cheers,

Ted :)

Want to write code for AMP - Adobe Media Player?

If you want to be at the center of RIA development, this role on a leading team at Adobe is the place to be. Adobe is looking for a top notch Senior Computer Scientist with strong Flex or Flash application development experience to join the Adobe Media Player team.

We would like to talk with you!

Please contact Julia Margherita if you are interested in exploring opportunities with Adobe!

Regards,

Ted :)

"30onair" Video API - GData Feeds (RSS and ATOM)

Here is the ATOM/RSS feed for the "30onair" video project for anyone wanting to mash-up the data. The feed contains the top 30 videos and all metadata within. This allows you to follow the videos in any RSS reader. This feed runs from the Google GData API and has a liberal crossdomain.xml file (*) so any Flash Player or AIR applications can use the data api without issue.

ATOM GDATA API
RSS GDATA API

I am interested to see the Adobe AIR applications that come out of this. I am using the feed to generate the "30onair" web site.

Also check out the great community videos rolling in!

Ted :)

"30onair" videos on YouTube

I am working on a video project for the Flex/AIR launch called "30onair". The project involves creating 30 second videos answering one of the following questions: Why Flash Player? Why AIR? Why Flash? Why Flex? Why ColdFusion? Why AJAX? Why JavaScript? Why ActionScript?

Rules:
  1. 30 seconds of video (estimate)
  2. Answer one of the questions above
  3. Be creative.
You can talk about your favorite features, why you use these technologies, or just a guitar tribute to Adobe AIR! The best ones will be showcased on Adobe.com, community blogs, and a soon to be released new web site.

Regardless do this:
TAG: "30onair"
(This is how we find them!)
(Or you can always email ted@adobe.com)

I have some great prizes for the best videos posted.

Have fun and go make something great!

Regards,

Ted :)

The AMF Revolution

The growth of AMF since the release of Blaze DS and the AMF spec has been nothing short of amazing. I continue to see lots of great new server software projects leveraging AMF data formats. This morning I was reading the FlexCoders mailing list and an announcement of a new AMF library "PyAMF - AMF for Python" appeared leveraging Python targeting Twisted (I love twisted), Django, Pylons, TurboGears and CherryPy. Seeing a single project add this much functionality into Python web development is really great for the Flash/Flex developer community.

Python
PyAMF Project
PyAMF Examples

Hats off to the team at PyAMF!

Cheers,

Ted :)

This morning Yahoo! releases a new ActionScript API for Maps. Having worked with the API for the past few weeks it is a great component addition to both Flash and Flex. The key to this release is that the YMaps API integrates a complex set of services and controls that you can leverage in your applications for anything geo-releated in under 30Kb.

DOWNLOAD


Here are some of the key features:

Geocoding API - Turn a string address into coordinates (latlong)
Traffic - Get traffic
Directions - Get Directions between points
(NOTE: Seems directions didn't make final release. Will be added in a later release.)
Local Search - Search a map for points of interest
Widgets - Simple widgets to control the maps


1. import com.yahoo.maps.api.YahooMap;
2. var yahooMap:YahooMap = new YahooMap( "YOUR-APPID" , 300 , 300 );
3. this.addChild( yahooMap );






Yahoo Maps in AS3 has been the most requested component at Yahoo Developer Network for some time and it is great to see this release happen.

I can't wait to see how you integrate maps into your application targeting Adobe Flash Player or Adobe AIR runtimes.

Cheers,

Ted :)

New Component Release - Monday 6AM PST

I cannot provide any details but there is a great component set being released on Monday at 6AM. Having worked with this new API for the past few days, it is a really great change for both Flash and Flex developers.


Keep an eye out for news Monday AM, I will be posting then.

Cheers,

Ted :)

ps. Sorry for the teaser, it is worth the wait though!

PrivatePaste.com

I keep finding myself using PrivatePaste.com for sharing code/text with others. As a service it is simple, easy to use, and the URLS are so simple/clean. I also like the fact that you can personalize the URL (ted.adobe.privatepaste.com) to suit your needs as they use a wildcard DNS entry and store data using the full url path. They also have syntax highlighting for ActionScript and XML so flex pasted code looks great.

This morning I posted my first public use of privatepaste.com and will be posting more code here.

MXML Event Example using PrivatePaste and custom url:
http://ted.adobe.privatepaste.com/090U0fToio

I keep thinking that this would make a great API for storing data. Sort of a cross between wiki/storage API for ASCII or AMF..... hmmmmm

Check out Private Paste here.

Cheers,

Ted :)

Kyle Hayes over at Disney Internet Group (DIG) pinged me this morning asking about how event bubbling worked in AS3 using Flex. This seems to be a confusing topic for some as events were completely overhauled in Flash Player 9 and AS3. From the docs:

"The new event model is based on the Document Object Model (DOM) Level 3 Events Specification. Although the SWF file format does not adhere specifically to the Document Object Model standard, there are sufficient similarities between the display list and the structure of the DOM to make implementation of the DOM event model possible. An object on the display list is analogous to a node in the DOM hierarchical structure, and the terms display list object and node are used interchangeably throughout this discussion."

The real key here is that events walk down and up the display list. When an mouse event occurs the event does the following in this order:

Capture Phase (1):
Walk down the display list from the root to the target firing listeners that denote the capture phase (see 'true' argument below). Listeners are fired sequentially from the root to the target at each display object in the tree either by listener priority or the order added.

this.addEventListener( MouseEvent.MOUSE_OVER , onMouseOverEvent , true );


Target Phase (2): When the listener is at the event target this phase occurs. (eg. listening on a button for the 'click' event)

Bubble Phase (3): Walk up the display list from the target to the root firing listeners that denote the bubble phase ('bubble' is the default or see 'false' argument below). Listeners are fired sequentially from the target to the root at each display object in the tree either by listener priority or the order added.

this.addEventListener( MouseEvent.MOUSE_OVER , onMouseOverEvent);

or

this.addEventListener( MouseEvent.MOUSE_OVER , onMouseOverEvent , false );


EVENT EXAMPLE

As a simple proof, I put together a flex example for you to try out. It let's you see events tracing at the application level when you interact with components. The key is that the app is listening for capture and bubble phases at the application object and thus all MouseEvent.MOUSE_OVER events with child components are traced.

Also take a look at the event objects themselves as they have an API too. You can take an event and control later event processing. This is handy if you want to stop an event from propagating or dispatch the event as something else entirely. Just as the mouse can dispatch events, so can ActionScript.


this.dispatchEvent( new MouseEvent( 'SecretMouseEvent' );


Once you see how events are working in the player, you can leverage the patterns of DOM 3 events. They are really handing for doing work as events are coming and going across the display list.

Cheers,

Ted :)




Jobs


Flex Jobs
city, state, zip


© 2008 Ted On Flex