Flash Player 11, AIR 3, and Flex/Flash Builder 4.6

Today is a pretty big day for Adobe developers. We’re officially announcing Flash Player 11, AIR 3, and Flex 4.6 and Flash Builder 4.6. The bits will be available in early October, but we’re announcing things today to help provide developers with information on what’s coming. I’ve been at Adobe for 4 years now and it’s been a very interesting 4 years as the landscape has evolved. It’s definitely been an up and down ride for Adobe developers, but the world has never been a better place for interactive developers, and these set of releases provide a ton of functionality aimed at helping Adobe developers create content in the most cutting edge places.

Gaming

We’ve been doing a lot of work to help enable console-esque games on top of the Flash Platform. Flash Player 11 includes Stage3D, which is going to open up a whole new world for game developers. Zombie Tycoon and Tanki are initial examples of what can be done and I can’t wait to see what comes of it. I’m reminded very much of the early days of Flash where a bunch of creative people were given a technology that was pretty open-ended and poked and prodded to create a bunch of very cool things. I think we’ll see that kind of revolution with Stage3D because of the ubiquity of Flash and the creativity of our developer community. Also in the gaming bucket is a framework we’re working on called Starling, which leverages Stage3D to create a super-fast way of doing parts of 2D games. It’s a great merger between the underlying technology/performance benefits of Stage3D and the kinds of things people want to do in 2D games. I think it’s also going to see some traction beyond games as agencies start to use it to enhance 2D content.

Mobile Applications

Flex and AIR have really found a great place in mobile applications. The performance enhancements in 2.7 made building native-experiences with AIR possible and we’ve seen some great examples of that in action including Machinarium and Caltrain Times. I’ve been impressed with performance on my 100 Days of Exercise application on iOS. I’m incredibly, incredibly excited by what this means for Flash. There’s a definite need to create mobile apps that can be deployed to multiple application stores. The Flash Platform provides a way to create great looking, high-design applications with near-native performance that can run on multiple devices. That’s a big deal.

And this release of AIR 3 goes where we haven’t gone before on the Flash Platform with native extensions. Now if there are features that aren’t included in AIR, like access to a credit card reader, you can build those extensions in native code and then link them to your AIR applications and leverage those libraries. It’s a great mix of native for specific use cases and AIR/Flash for fantastic user interfaces. It’s a big, big, big deal to be able to extend the platform and it’s a huge step.

I also think we have one of the best mobile-tool chains out there. Flash Builder 4.6 is going to help with creating those native extensions while also enabling the use of captive runtime in AIR so your applications don’t need to rely on the external AIR runtime on Android. Combine that with the enhancements that are coming in Flex 4.6 and it adds up to a world class mobile development platform that lets you reach more devices that matter. Flex 4.6 is especially exciting because of the new components that have been added. Flex and AIR are far and away the best toolset for interactive developers or any mobile developer who needs to create content for multiple devices. The apps you can build with Flex and AIR are going to stand out from the boring, standard apps that have started to litter app stores. Creativity will win the day and creativity is at the core of Flex/AIR.

Beyond

So this is a huge release, and I’m excited. But I’m also excited about the future of Adobe and how we are responding and will continue to respond to the evolving marketplace. As Danny Winokur, VP and GM of the Flash Platform, said recently:

“We’re not so concerned about what the right technology is for that as long as we’ll be able to deliver those experiences. We’re working with Microsoft and other members of the HTML community including Google, Apple, and others to enable rich experiences on HTML5.”

This is not a technology war. Adobe is about enabling developers to build the best possible experiences with the technology they want. We want to build tools and services that cater to that ethos. That takes the form of cutting-edge gaming features like Stage3D and world-class mobile app features with Flex, AIR and Flash Builder. But HTML5 is exciting for a lot of reasons, and Adobe will help developers there as well. If you’re an interactive developer, the future is very, very bright for you.

So you better get a good pair of sunglasses.

David Pogue on Flash on Devices

There is a really good blog post by David Pogue of the New York Times on his experience with Flash up today:

Occasional videos (unfortunately, including my own, on nytimes.com) looked blocky and blotchy. But most of the time, videos looked great and games played smoothly — where you could play them at all without mouse or keyboard. That’s amazing, considering Flash for Mobile uses only one-fifth the processing power of a computer’s Flash.

One of the best things about the article is that I think it’s 100% accurate. Some stuff isn’t going to work. Some videos will stutter and others aren’t going to play (Hulu currently doesn’t allow you to stream their content to smartphones with their Flash player). But a lot of stuff does work. We’ve put a ton of effort into the mobile player and I’ve personally been pretty happy with how much existing content works.

But it won’t all work. And all kinds of developers (HTML, Flash, native) need to think about how to optimize their content for mobile devices. We’ve created a pretty damn impressive runtime on mobile devices that enables some great experiences. But developers who think mobile first are going to be the ones who really succeed. You can head over to m.flash.com on your phones to see some of the mobile-optimized experiences in action.

Flash Player “Square” With IE9, Native 64-bit Support

Flash Player SquareToday you can go download the beta of IE9 and from what I’ve seen it looks like it’s pretty damn impressive. We also released a version of Flash Player, codenamed “Square” which not only has support for IE9, but includes a bunch of code collaboration that we did with Microsoft to create a really streamlined experience. The Flash Player Team Blog has a bunch of info:

As part of our collaboration with Microsoft’s Internet Explorer team over the past few months, Flash Player “Square” has been enhanced to directly support the hardware-accelerated graphics capabilities in the newest version of IE. Flash Player “Square” leverages the new GPU support available with Internet Explorer 9 Beta to deliver a faster and more responsive user experience with Flash-based content. In our internal testing, we’ve seen significant improvements in Flash Player graphics performance – exceeding 35% in Internet Explorer 9 Beta compared to Flash Player running in previous versions of IE. While the performance improvements will vary based on the type of content and how it’s created, bitmap-heavy content for Flash Player will experience the greatest benefit. Flash-enabled content that’s embedded as transparent (wmode=”transparent”) will also run more efficiently given the benefits of offloading the HTML and Flash content compositing to the GPU. Try it out by downloading the Internet Explorer 9 Beta and the Flash Player “Square” preview. We’d appreciate your feedback and observations on performance.

So right off the bat with IE9 you get hardware support for Flash. We’ve also (finally) got native 64-bit binaries for Mac, Linux, and Windows. It’s been a long time coming, but we hope you get a chance to test these versions out and give us feedback.

We’re only a couple of months from MAX, and this gives you a taste of some of the things we’ve been working on. Between the work on HTML5 with Dreamweaver and Illustrator and the work the Flash Platform teams have been doing, it’s going to be an incredible year for RIAs and for Adobe designers/developers.

New Flash Player with H.264 GPU Decoding for Mac

Thibault Imbert just blogged about the release of Flash Player 10.1.82.76, which includes support for H.264 GPU decoding on the Mac.

You should notice now a nice difference when playing H.264 content on your Mac in terms of CPU usage. We rarely enable new features in security releases but we really wanted to enable such a cool feature. For more details about it, Tinic already posted about this.

Some of you may remember talk of a Flash Player “Gala” that was put out as a beta right before Flash Player 10.1 was released. The GPU decoding didn’t make it into the 10.1 release so we had to wait for a security release to add it. That security release is here and it should make quite a bit of difference for Mac users who are playing H.264 video through Flash Player.

Using Flash Player 10.1 and AIR 2 in Flash Builder

I didn’t realize until Renaun blogged it that the Flex 4.1 SDK includes Flash Player 10.1 and AIR 2. One of the biggest pains for me during the beta period was copying over files and folders to merge the 4.0 SDK with AIR and Flash Player so I could do development in Flash Builder. I didn’t know they were doing a 4.1 that included both of the new runtimes.

That means you can grab the Flex 4.1 SDK, and using Flash Builder 4 you can add it to your list of SDKs and start taking advantage of the new APIs including multi-touch, geolocation, and socket server. As Renaun mentioned, make sure you target Flash Player 10.1 or above in your project when you’re selecting the new SDK or you won’t be able to use the new APIs.

Flash on!

Testing Battery Life and Performance with Flash Player on the Nexus One

When I did my video of various bits of Flash content running on the Nexus One, the overwhelming theme that kept coming up was battery life. I know battery life is something that both users and Flash developers are curious about. Flash provides access to a wealth of rich content. Video, games, and animation are all things that are much more processor intensive than rendering static images and text. In general, Flash content’s impact on battery life is comparable to other similar multimedia technologies. Where Flash really shines though, is that it uses the same amount of battery as other technologies, while providing a much richer experience with significantly better performance.

With all of the questions I wanted to provide some numbers about battery life but didn’t think that my rudimentary tests would be very good so I asked Vinay Ramani, the group product manager for mobile runtimes if his team had any data. These are very early initial tests but I thought they were worth sharing. You’ll be seeing more in-depth stress tests from us soon but hopefully these early numbers give you an idea of the fairly small impact that Flash Player in the browser has on battery life.

These are pretty close to clean-room tests. The team hooked up the meters and performed each test under a strict set of conditions:

  • Wi-Fi – off
  • 3G – on
  • OTA Push – off
  • Volume – on, at one notch
  • Bluetooth – off
  • Only browser is loaded, nothing else
  • 3G, lying flat on a table

Also, keep in mind that this is ALL done in software. Hardware acceleration is coming down the road but we wanted to make sure that this thing ran lean and mean in software without hardware acceleration at first. We also have ways that developers can control how SWF content loads on their pages so they can give certain SWF files priority and the Flash Player will give those a higher percentage of the resources. This should result in a smoother browsing experience.

Video

Video is probably the thing I get asked the most about with respect to battery life and it’s a good thing to compare because since both Flash Player and the Nexus One’s native player support H.264 you can get a good feel for how the battery life stacks up between native H.264 and H.264 video played through Flash Player. The team used the same YouTube video, one encoded at H.264 baseline level 2.1 at 30 fps with a resolution of 480 x 270. They did two sets of tests, one was on full brightness and the other was on half brightness. Then they just kept playing the video over and over again.

On full brightness, the Nexus One without Flash Player got 3 hours and 45 minutes. Playing the video through Flash Player gave a battery life of 3 hours and 8 minutes. Not a big dropoff. At half brightness it was even better. The Nexus One without Flash got 3 hours 56 minutes and the Flash version got 3 hours and 31 minutes. Just a 10.5% change, which isn’t bad at all considering everything Flash Player does.

Gaming

As you can see from the Flash/non-Flash tests, video is pretty intensive no matter what. What was even better was the battery life around games. There wasn’t a good way to test non-Flash versus Flash, but the team took a couple of popular Flash games, Tic-Tac-Toe and Alchemist, and played them until the battery died.

Tic-Tac-Toe lasted 6 hours and 49 minutes while the device could play Alchemist on the Nexus One for 7 hours and 7 minutes. While they aren’t intense 3D games, that’s pretty spectacular battery life and this was on full screen brightness. If you’re a game developer you can be sure that people playing your Flash game are going to be able to play it for a loooong time.

Animation

Let’s also quickly talk about HTML5 and Flash Player on mobile devices both in terms of performance and battery life. The team used the exploding balls test from Cameron Adams and tested the Canvas versions and the Flash versions. This one is a little tricky because part of the impact on battery life is how many CPU cycles are being used. And the higher the frame rate, the more CPU content is going to use. So it’s tough to compare HTML5 and Flash content directly because right now HTML5 content just doesn’t run very well on devices. The canvas example runs at 6.7 frames per second while the Flash version runs at about 24 frames per second. The difference between those ends up being minimal even though Flash has so many more frames per second. With the canvas test you get about 3.1 hours of battery life and with Flash Player you get 2.9 hours of battery life. A difference of about 12 minutes. We’re going to be doing some more exact tests around this where we equalize frames per second, so you should see some dramatic improvements once the test can be normalized.

This is just a sample of some of the early numbers that we’re getting. As I said, we’ll have some more detailed tests soon, but this should show that the hit for running richer content isn’t as big as one would think. The teams have done an absolutely phenomenal job of creating a runtime that performs on par with the desktop player and doesn’t sacrifice much at all in the way of battery life. If you’re a Flash developer, the exact same things that got you excited about Flash Player on the desktop now apply to mobile devices. The mobile world is your oyster Flashers.

Now Flash on.

Examples of Flash Content Running on Android

On Friday I gave the Keynote at Flash Camp Seattle and as part of that keynote I tried to show off Flash Player 10.1 running on Nexus One. Unfortunately the demo didn’t go well and it got some attention around the web. I’ve had a great experience with Flash on my Nexus One but in this case I was running an interim Flash Player build, one I probably should not have installed, and one that I definitely should not have used for any public demos

After I saw Jeff’s blog post, I sat down, upgraded my Flash Player, and went through and tested some of the sites I use on a regular basis. The experience was fantastic. Everything from the Eco Zoo to the NHL video site runs almost flawlessly. While it won’t make up for my mistake at Flash Camp, I recorded a video so people could see an experience that will be much closer to the final experience with Flash Player on Android.

It’s been cool to see so many Flash sites work on mobile devices. However because there is such a variety of Flash content out on the web, it’s important to understand that not all of it is going to run on devices like the Nexus One, both because of lower hardware capabilities of devices and because of user interface design.

A lot of people are clearly interested in Flash Player on mobile devices. It’s a big issue, and I feel terrible that my unpreparedness ended up being a strike against Flash on mobile devices. We’ll be releasing a public version of Flash Player 10.1 at Google I/O and would love to hear how your Flash sites perform. You can always submit issues by using the open Flash Player bug base.

PhysicalFoursquare – A Flash Player 10.1 Demo App Using the Foursquare API

As you’ve seen, we’re getting close to having a version of Flash Player 10.1 that will be available to the broader public. And a lot of the evangelists have been creating some cool demos of how Flash Player 10.1 behaves on the Nexus One.

I wanted to do something slightly different and build more of a functional application.

I come from a Flex background and so I haven’t spent a lot of time creating ActionScript only projects. And while Flex performs pretty well on Flash Player 10.1, doing an AS3 only project gives it a better shot at running, especially as the application gets more complex. So I went with ActionScript only and created an application that uses the foursquare API as well as the Geonames database to find and let me check into physical features like mountains, streams, and lakes when I’m out hiking and want to still be able to check into foursquare.

Thoughts on Building for Mobile Flash

As you’ve seen, a lot of Flash content will just work. And because of the AIR for Android packager, a lot of people will just end up building applications and not worry about creating in-browser Flash apps for mobile devices. But I wanted to try it. A few thoughts:

One, the Flex mobile framework can’t come soon enough. I have so much more respect for the old-school Flashers because rolling everything by hand is a pain. And I had it easy because I was dealing with a fixed resolution since I was specifically targeting the Nexus One.

Two, while I didn’t do much in the way of performance tuning, that’s going to be important. These are pretty beefy devices and we’ve done some great optimizations, but for complex Flash content, tuning your code will be central to a good experience.

Three, as Mike Chambers showed, hover content works, but I found it kind of annoying. The way it’s currently set up, the hover event fires after the down event fires. So using SimpleButton the way I normally use it didn’t quite work because the effect was off. I ended up just making the hover state the same as the down state.

Lastly, I was surprised how much just worked. I pulled a LOT of third party content into this application. Keith Peter’s Minimalcomps, the foursquare AS3 API by Tim Walling, my own AS3 library for Geonames, the Google Maps API, TweenLite, Shannon Hicks’ OAuthAS3 library – and it all worked just fine. Part of what I wanted to test was how much I could throw at the device and I was pleasantly surprised by how well it all worked even on the beta bits of Flash Player 10.1. So when you target these devices, you’ll be able to use a very similar workflow, which I think is important.

To see the application in action, you can check out the video above or test the application in your browser here. You’ll need to have a browser like Firefox 3.6 that supports geolocation and if you check in you’ll be checking in this poor guy. All of the code is available on GitHub and you’re free to do with it what you will. Unfortunately my OAuth implementation was half-assed, so the foursquare checkin didn’t work, but it works in the browser.

Flash Player and Chrome Sitting in a Tree

TechCruch just posted about the news that Adobe and Google are going to be collaborating a bit around Chrome and Flash Player. The basic gist is that Chrome will start integrating Flash Player directly into the browser so that users will always have the most up to date versions and anyone who downloads Chrome won’t need to also install Flash Player. I think that’s good, but the much bigger news in my opinion, is that we’re working with Chrome and Mozilla to revamp the plugin architecture. This has huge implications.

We’ve been using an old-school plugin model for a long time. In fact NPAPI, the plugin interface, stands for Netscape Plugin Application Programming Interface. And as the Wikipedia entry states, it’s so sucessful because it’s so simple. The API basically lets plugins associate themselves with a content type (like a SWF file) and then puts that plugin in charge of all the rendering. There’s not a lot of integration between the plugin and the content in the browser, which means the plugin lives in its own little world and it’s tough to break out. You can do things like ExternalInterface but it’s still pretty hacky.

But under this new plugin model, we’ll have much closer integration at the browser level. There’s a great summary of what this means at the Chromium blog:

Improving the traditional browser plug-in model will make it possible for plug-ins to be just as fast, stable, and secure as the browser’s HTML and JavaScript engines. Over time this will enable HTML, Flash, and other plug-ins to be used together more seamlessly in rendering and scripting.

Think better access to the hardware APIs via this new plug-in model, better access to the DOM, and a generally much better, more stable experience. Flash Player in the browser has always felt a little like a black box largely because of the constraints in the plugin model. Certain things didn’t work quite as you’d expect in a regular HTML site. Hopefully this changes that. In theory this could make it possible to use the save-password feature with your Flex/Flash apps, or make Flash SEO a lot easier, and it allows us to innovate around HTML-Flash integration. If you’ve used AIR, you’ve seen what’s possible when you have complete control over both technologies. This new plugin work makes that easier to do across all browsers that support it. I don’t know when/if we’ll see it, but it’s easier now.

Another benefit is that the API is going to be OS and browser neutral so you won’t see such wildly different performance on different platforms. The hooks that we can use to make the browsing experience better will work across all of the browsers that support the new plugin across all of the operating systems.

Couple of Flash Player 10.1 Nexus One Videos

Last week I did a very quick, Flip Cam-quality video of Flash Player 10.1 running the March Madness on Demand site on a Nexus One. There is some stuttering when I switch from portrait to landscape, but other than that, it plays pretty well. It’s hard to capture with the Flip, but I was pleasantly surprised at how well it worked.

Also, Harish, one of the Adobe Evangelists in India, ported an AIR application he built to a browser app with Flex 4 and shows it running on the Nexus One. It’s pretty slick to see how well a Flex 4 app works on that little device.