Flash is as open as HTML

What most people miss-understand is: It’s not the Flash Player which is supposed to be “open” or not. It’s the Flash/SWF specification, which is open. The Player is not and no-one said that it is.

Think of it like this:

  • HTML is based on an open specification made by the W3C. Browsers interpret HTML in order to provide web content.
  • Flash is based on an open specification made by Adobe. Flash Players can interpret SWF in order to provide web content.

The fact that Adobe’s Flash Player is the most spread doesn’t make Flash a “bad” technology.
Some years ago, the Internet Explorer was the most dominant web browser on the web. It was buggy (and still is) and proprietary and all but did anybody blame HTML on that? I’m sure no-one did.
If people say now that the Flash Player should be open: Is every browser manufacturer in the world now supposed to open their browser source as well? – I don’t think so.
It’s the same with Flash. The format is open, the Player is not.
It’s not Adobe’s fault that there are no other competitors which offer versions of Flash Player that can compete with the original one by Adobe.

Flash is not contra-productive to an open web
Don’t get me wrong. I personally don’t like proprietary systems but I can understand companies that don’t want to open their software.
For an open web, this isn’t important though. What needs to be open is the format, not the player/browser which renders/interprets the content.

Just to make things clear

  • I am not an Adobe-fanboy.
  • I hate the Flash Player, but I love Adobe’s tools to create content of any type.
  • I am not an Apple-hater. I own a Macbook myself and I love it.
  • I want as much control over my devices as possible. Thus, I own an Android phone.
    No company in the world should be allowed to tell me what I should install on my phone and what not.
    I can’t install Flash on an iPhone? – Won’t buy it. That simple.

There is no HTML5 vs. Flash

Ok, hands down. Sooner or later, Flash will not be relevant to the WWW anymore. Flash videos will be replaced by <video> while animations will use <canvas> and <audio> in HTML5.

There are a few things Flash can do, but HTML5 cannot, like:

  • Webcam support
  • Binary sockets (not web-sockets!)

But these features will sooner or later be covered by HTML as well, so there is no need for Flash anymore on the web.

But what about the Desktop?

As I already stated, Flash could become the next-gen Java-replacement for Desktop applications.

The reason why I think so is simple:

  • Flash/Flex applications are easier and faster to develop than Java (thanks to MXML). This improves workflow and thus reduces costs for software companies.
  • There is already a wide range of developers that have experience with Flash development, so there is no new programming language/technology to learn for these people. They can start develop rich desktop applications right away.
  • Flash-based desktop-applications simply provide a nicer user-interface and their look ‘n’ feel is “smoother” than Swing.
  • The Photoshop/Illustrator-Catalyst-FlashBuilder workflow is great and definitely enhances work of designers and developers. There is nothing compared to that in classic software development.

So, what I want to basically say is:

HTML5/Ajax for Web and Flash/Flex/AIR for the Desktop!

That’s why I think that both are not competitors. Their future lies on two difference battlefields.

Flash Player 10.1 performance explosion

I am currently writing my diploma thesis at the University of Ulm on performance issues regarding Rich Internet Application technologies like Adobe Flash/Flex, JavaFX, Silverlight and various JavaScript solutions.
(Update: It’s done! :-) )

I started back in December when I first noticed that Adobe’s Flash Player seriously has some performance issues. It always was by far the slowest of all technologies.
Today, I retried some of my self-written benchmarks using the new Flash Player 10.1 RC4 and I was absolutely blown away. The new version is so fast, it’s absolutely incredible.
I am not done yet with my thesis until mid-July, so I won’t publish to much about it here but I thought it might be interesting to show just one benchmark-result here.

I don’t want to go to much into detail regarding the test implementations since these might change til July, so if you want to know more about the exact details on my benchmark, you gotta wait til I am done with my thesis. So long, think of this as a “preview” ;-) since some things might still change. The final test/benchmark will be revealed in 2 months when it’s 100% finished. I just didn’t want to post anything that’s not done yet. As already said, this is just a little teaser for the final benchmark.

Test setup
All tests were run on a Macbook Pro with an Intel Core 2 Duo at 2.53 GHz and 8 GB of RAM.
Tests, which require a plugin were running using Safari.
Additionally, I also ran some JavaScript-based tests on Firefox, Google Chrome and Safari.
The code base for all tests is basically the same, except for differences regarding Syntax, of course. This makes all test results comparable.

Results (Click to enlarge):

All values are in milliseconds [ms] => Less is better

In numbers:

  • Flash Player 10.1: 528 ms
  • JavaScript (Safari 4.0.5): 1015 ms
  • JavaScript (Google Chrome 5.0.375.29: 1039 ms
  • Silverlight 4.0.50401.0: 1300 ms
  • JavaFX 1.3 (JRE 1.6.0_17): 1392 ms
  • Firefox 3.6.3: 1449 ms
  • JavaFX 1.2 (JRE 1.6.0_17): 1635 ms
  • Flash Player 10.0: 3201 ms

Adobe, what the hell did you do???

Note: Please be aware, that I am basically testing FP 10.1 vs FP 10.0 here. This has nothing to do with the latest RC4 version of FP 10.1 since I haven’t done any tests with older release candidates yet.

Update: Added test results for JavaFX 1.3 and fixed a mistake regarding the test results for Firefox.

Update II: According to a blog entry of Tinic Uro, an engineer at Adobe Systems, the reason why Flash Player 10.1 works so well on Mac OS is Apple’s Core Animation Framework (Thanks to Matthew for the link!)
What I really liked about this blog post is the following:

“You might have noticed that Core Animation is a Cocoa API. Yes, Flash Player 10.1 is a true Cocoa app now (with a Carbon fallback to support Firefox and Opera which are not Cocoa yet).”

Flash Player is a true Cocoa application now? Nice.

Please, Adobe. Give us the Ajax Builder!

I think, I already mentioned that I really like Adobe’s products for creating animations and rich internet applications, which are namely Flash Professional, Flash Builder, Catalyst and Illustrator. What I don’t like is the target platform: The Flash Player. So, after all these debates about Flash, isn’t it time to simply drop the Flash Player and add an additional compiler option for Flash Builder and Flash Professional? Yes, you guessed right. I am talking about HTML5 deployment. Wouldn’t it be great if one could build rich internet applications using technologies like ActionScript3 and MXML, which are both superior to JavaScript and pure HTML, without being forced to target the Flash Player? Flash Professional could simply render into HTML5’s <Canvas> element. It has already been shown, that this is possible. Flash Builder could simply transform the code base into HTML/Ajax, similar to the client-side part of GWT. I know that I might sound a bit childish here but, I’d call this “Ajax Builder” :-D

Don’t get me wrong. I didn’t say: “Replace the Flash compiler option.” – This is important since there are still some things HTML5 can’t handle, like webcam support for example.
=> No Flash, no ChatRoulette.
So, til HTML5 is ready to completely replace Flash, both compiler options must be offered.

Also, the whole Illustrator-Catalyst-FlashBuilder workflow should be kept and optimized for HTML5. Although Catalyst is still in its baby-shoes and has some serious mis-concepts, the basic idea is great. Adobe should keep working on this.

Further, AIR shouldn’t be canceled if Flash gets (ever) dropped. Instead, AIR could be a great way to bring Ajax-based rich internet applications to the desktop (and mobiles).

The benefit is clearly visible: Flash-developers can keep using their knowledge about AS3, MXML and Adobe’s software products, but simply target a Flash-free platform.
In the same time, all this Flash-sucks-no!-Flash-is-great-blahblah would finally come to an end.

Update: Seems like, Adobe heard me :-)

Google Chrome Flash debugger not connecting to Flex/Flash Builder?

If your Flex/Flash Builder has suddenly problems connecting to your Flash debugger, you might be using Google Chrome.

It seems like Google started bundling the Flash Player together with Chrome, which has an automatic updating engine (in the background) and thus you probably didn’t notice the update. This integrated version of Flash Player is the standard version of the plug-in and not the debugger version. Hence, whenever you view Flash content through Google Chrome, the used runtime is not the one you installed on your local operating system.

Currently, there are two workarounds for this:

  1. Manually replace the Chrome Flash player with the debugger version (Thanks to Josh for the how-to).
  2. Use a different browser for testing your Flash applications in.

Workaround #1

Follow these steps:

  1. Go to chrome://plugins
  2. (For Google Chrome version 6.x and higher only: Click the “details” link in the top right corner.)
  3. Find the entries that say “Flash”.
  4. On Windows 7, deactivate the entry, which has the following path:


    On MacOS X, the path is:

    /Applications/Google Chrome.app/Contents/Versions/chrome_version/Flash Player Plugin for Chrome.plugin

    This will disable the integrated Flash Player bundled with Google Chrome. Watch out not to disable your operating system’s default Flash Player (debugger). You can see the difference in the installation path: The global Flash Player is not installed into a directory associated with Chrome.

workaround #2

In Flex/Flash Builder (or Eclipse), simply go to Preferences -> General -> Web Browser and hit “Use external Web Browser“. Then pick Safari, Firefox or whatever you prefer. This choice will then be your “development test browser”, while you can use Chrome for your daily surfing needs.