- I will miss being able to declare classes using a sane syntax (Coffeescript helps in this regard)
- I will miss the optional type annotations, which caught many a bug for me (you can use JSDoc annotations + closure compiler, but only if you like placing a verbose comment in front of every single variable declaration)
- I will miss having an IDE that can actually do code completion (this not possible without type annotations, so it's not coming to Javascript any time soon)
- I will miss interfaces
- I will miss namespaces (there are various ways to hack namespaces into Javascript. They are all letdowns.)
- I will miss color transform filters, drop shadow filters, and blur filters (might become part of CSS if Adobe's proposal gets approval)
- I will miss the (mostly excellent) API documentation (MDN tries its best, but is not even close)
- I will miss masks (of any arbitrary shape)
- I will miss being able to create and dispatch my own events without having to use someone else's event framework
- I will miss having all my resources compiled into one blob and loaded together, rather than having to worry about preloading all of my UI images
- But most of all, I will miss performance. Yeah, Flash is buggy/slow/memory hog blahblahblahblah. But have you tried doing anything graphically complex in HTML5? Holy shit, your processor will scream. Things that Flash used to laugh at will bring Chrome to its knees. Don't get me started with IE.
So no, Flash is not great. It has a ton of warts. But HTML5 is not ready. Not even close. So we're going to have to spend the next ~2-3 years in techno limbo while it catches up. And that makes me sad.
HTML5 is particularly not ready on mobile. For example...don't use gradients, since they kill performance. Oh, and don't use opacity either, since that also kills performance. Seriously? I need to build a UI that doesn't use opacity animations? FFFfffuuuu--
Apologies for sounding like a grumpy old man, but promises of "someone will come and fix it with a standard...at some point" don't really get me excited. I worry that in vilifying all the things that Flash did wrong, the web world is going to ignore all the things it did right, and refuse to integrate those things into HTML.
don't use gradients, since they kill performance.
Oh, and don't use opacity either, since that also
kills performance. Seriously?
The problem with the Flash player is that by design it assumes all applications have such needs, like opacity, gradients and animations, when this is not the case. Even with the drawbacks you mention, an interface built with jQTouch for example is pretty snappy on the iPhone. See the demo: http://jqtouch.com/Android in particular is indeed having problems and I wasn't at all pleased with the results I got from jQuery Mobile. On the other hand Android has this problem with the UI in general, as hardware-accelerated graphics has been its weak point.
But you're comparing here the performance of browsers on mobile phones with the performance of Flash on the desktop. Adobe has yet to come up with a decent alternative for mobiles. I have Flash on my Android browser and I'm really not impressed. In fact, I deactivated it.
Things that Flash used to laugh at will bring Chrome to its knees.
That goes both ways too ... try loading 5000 thumbnails in a Flash UI and compare it with Chrome. I do that whenever I organize my Flickr account.Also in Chrome special effects may not be so snappy, but animations and games are doable. And they only added accelerated graphics support recently (I'm not even sure if it's enabled on my computer). Example: http://chrome.angrybirds.com/
Angry Birds is indeed not representative of what normal people will do with HTML/JS, as Rovio engineers are pretty talented. But I know dozens of games created in Flash that are less impressive and more sluggish than this Angry Birds version ... the truth is, good developers will make snappy and cool things using any technology. Bad developers won't.
And this may be an anecdote, but I never, ever used a Flash interface that I liked using. I even hate it whenever I'm viewing a YouTube video because it blocks my browser's normal shortcuts.
Agree. An example is graph visualization. Fire up your CPU monitor and go to http://arborjs.org/atlas/ and view this very cool physics-driven mesh visualization written in Javascript. You'll see the needle jump to 95% or more. On my relatively modern laptop, if I run this for more than a few minutes, it shuts off due to overheating. Also, this app does not work on IE.
By contrast, I can run an similar Flash-based visualization and CPU usage ratchets up to 60 or 70% but not more, and it works on IE.
If it's vector, it can be done with SVG/CSS3
…drop shadow filters…
box-shadow?
…and blur filters
Canvas?
http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.h...
I will miss masks (of any arbitrary shape)
PNG with alpha?
…rather than having to worry about preloading all of my UI images
Something like this may work:
$("#blob").bind("load", function () {});
or even: body { display: none; }
<body onLoad="$("body").fadeIn();">
But most of all, I will miss performance. Yeah, Flash is buggy/slow/memory hog blahblahblahblah. But have you tried doing anything graphically complex in HTML5? Holy shit, your processor will scream. Things that Flash used to laugh at will bring Chrome to its knees. Don't get me started with IE.Not on a Mac. Even a freaking side banner will make the CPU spike. There are a few cases where it is slower, but it's rare and we can all help optimize.
HTML5 is particularly not ready on mobile. For example...don't use gradients, since they kill performance. Oh, and don't use opacity either, since that also kills performance. Seriously? I need to build a UI that doesn't use opacity animations? FFFfffuuuu--
Android or iOS? I'm actually pretty impressed with the hardware accelerated effects I can get in iOS if I don't do much stuff at the same time.
Check this link:
http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-maki...
HTML is the new HTML5
How much more awesome will HTML, JavaScript, and CSS get when Flash finally goes away?
I believe if the Flash development environment was available for JS/HTML5 today, Flash hackers would be much more excited about it. It's not the fact that Flash is going away that causes sadness. Rather, it's the gap between that and having an equally powerful environment for JS/HTML5.
Another thing I forgot to mention ... Adobe already has an AS3 to Javascript compiler that produces Google Closure compliant code (or this is the plan anyway) and they are using it internally for their own projects.
And you forgot to mention one of the main issues with Flash: security (or the lack of thereof), it has had so many holes it is starting to make Active X look good (hyperbole, I know, but not by much).
However, the Flash runtime is the reason people complain about Flash. It is slow, it leaks memory, it crashes like crazy and has been a second-class citizen on every platform other than Windows since forever.
JS/HTML5 on the other hand is a mess in terms of development tools. But it is getting more and more reliable. And it's a real standard with multiple implementations that are extremely competitive. Apple was right for excluding Flash from their mobile browser, as for mobile phones HTML5 is currently much better, even though the technology powering it is newer than Flash.
Adobe's current plans are to build development tools for HTML5/JS too. They are even pushing for improvements in the standard, like CSS3 Regions.