Flash is lame -- a list of things I dislike about Adobe's browser plug-in
A few of my frustrations with Flash as a web developer
These are just a few of the friustrations I've experienced while devloping web applications using Flash in recent years, which I wanted to vent on my blog. Thanks for listening, I feel better already. Blogging is good therapy for Flash victims.
I'll come back to this page and keep in up to date with other examples, so bookmark now if you're interested. :)
- The IDE. The problem is, there's no integrated development environment for Flash! It's closed, proprietary technology, and the only way to create/edit Flash apps is using the over-priced software sold by Adobe. Indeed, this is how Adobe makes money from Flash; it's their business model for the product. Yet it is not a proper IDE. Any serious developer/ programmer, who has experienced a real IDE, e.g. Visual Studio (for .NET, SIlverlight, etc) or Eclipse (for Java, etc), will be appauled with Adobe's attempt at an IDE. Silverlight doesn't even require an IDE, and the best part is that you can even create and manipulate apps at runtime with pure JavaScript. We could explore the ISE issues in great detail on this point, so watch this space for updates...
- No built-in support for playlists. The most compelling reason for using a browser plug-in like Silverlight or Flash on a web page today is arguably for embedding multimedia. Silverlight and Flash are currently the best way to add video or audio to a website. Yet Flash has no native support for playlists! Anybody with any experience of an alternative product, like Silverlight or even Windows Media Player, will be astonished the first time they try to use Flash to build a media player. To surface media from a file or stream in Silverlight, you can just set the Source attribute of a MediaElement to the URI of the file or stream. To use a playlist, just set the value of Source to the URI of a suitable playlist. There's native support for playlist formats like ASX out-of-the-box. If a Flash developer wants to use a playlist, he has to add the functionality himself, right down to the XML parsing! It's insane. Yet designers and developers the world over are wasting precious time jumping through hoops like this to work around Adobe's deficiencies every day.
- A lame, counter-intuitive object model, and a programming language that seems incomlete. For example, if you want your Flash application to interact with the web page container in which it is embedded, you have to actually write proprietary ActionScript code to make that happen. This is achieved using the addCallback method of a curious class called ExternalInterface. But being Flash, there is no way to remove the "callback "! So, if you want the functionality to change, you have to write extra code to handle it -- rather than just binding the event to a different function as we could in a decent programming environment. In comparason, of course, a Silverlight app offers this functionality by default and offers a complete range of functionality too, through the very simple and efficient Silverlight-JavaScript bridge.
- Inconsistent, unhelpful functionality. For instance, if you're playing a video or audio stream and you want to know when the media has finised playing, you might try to use the onPlayStatus event of your instance of the NetStream class. But as Adobe's own documentation points out, "properties or methods cannot be added to a NetStream object at runtime ". Well, when else would you want to do it? In other words, you can't easily add or remove event listeners programatically. Apparently, it's reasonable to expect developers to hard-code and tie-down event listeners when the application is written, rather than providing a dynamic object model to make applications as flexible and versatile as possible. I won't even compare this to the simple, intuitive capabilities in Silverlight, it's just completely nuts in Flash.
- Things work differently in Flash and AIR. There's been a lot of hype about Flash being so cool because you can use it on the desktop through AIR. But only if developers are willing to take on a major headache for their users, because these are not very compatible technologies. Almost every page of "ActionScript 3 " documentation seems to have warnings about how one thing or another is different in AIR. It's akin to supporting two different development environments, though Adobe wants them both marketed as AS3. Meanwhile, Silverlight 3 works in and out of browser, and the only major differences are the genuine differences imposed by the different environments.
Flash is currently the most widely used browser plug in. It's well-established. I recall the early days years ago when a new plug-in developed by Macromedia, called ";Shockwave Flash"; (SWF) at the time, first began to appear on a few of pioneering websites, particularly websites wanting to produce simple animations like cartoons. It produced enhanced web user experiences, despite initial problems and glitches. SWF soon overtook Sun's Java Applets. Eventually, Macrobedia was taken over by Adobe.
Today Flash the market-leader, used in most RIA apps and online adverts. It's still problematic, with problems ranging from memory leaks, and web browsers or computers crashing, through to serious bugs that compromise the security of the user allowing hackers to take control or visuses to infect the system. Recent examples include hackers using Flash ads on major websites to infect people's computers.
Adobe has enjoyed a monopoly for too long. The corporation has been resting on its laurels, and Flash has fallen behind, to the point where it is a long way from the standards expected by professional web developers.
Fortunately, Flash now has some healthy competition from Silverlight. Even the editor of Macworld magazine acknowleges that Silverlight is much better than Flash, and of course it takes a lot for a serious Mac fanboy to praise a Microsoft product, There are various tools available to convert Flash apps to Silverlight.
14 November 2009
Tags: flash problems adobe complaints criticisms silverlight flash vs silverlight comparison lame technology ria client browser plug-in review
Comments: 11
Add Comment
Your comment at Neosmart.com indicated you were using Macromedia Flash Player 6. That's quite antique. Did you misreport?
"the only way to create/edit Flash apps is using the over-priced software sold by Adobe"
How can you write such old untruths?
jd/adobe
Hi John, it's nice to hear from somebody at Adobe. It's interesting to see somebody at Adobe using a Macromedia email address, that's old-school!
Yes I believe the machine in question actually had Flash 6 on it. The error message was a direct copy/paste from IE8. IMHO it would have been useful if the website had prompted me to upgrade, for a better user experience. Personally I tend to develop using CS3, and publish for at least Flash player 8 or 9 to make good use of handy features like Shared Objects and XML Sockets.
It's true that you need the Flash software from Adobe if you want to create and edit Flash applications. This concern is not "old" or a "falsehood". It's one of the most common criticisms expressed about the product. No other software can do all the things that Adobe's software can do. And I don't think Adobe would really reccomend using anything other than the official software to develop Flash, would they? That's why countless other people agree with me. It's also true surely, if we're honest, that good IDEs like Visual Studio and Eclipse are very much better than Adobe's offering, and Flash could be greatly improved by keeping up with proper IDEs.
My list of frustrations here is not a negative thing. It's constructive criticism. Think of it as a wish-list for my ideal rich web client technology! :) Today, Silverlight has everything.
Just checking... that machine with Player 6, you did upgrade it, right? Security improvements have come out for the current Player 10, as well as Player 9 for intranets, but the older engines made browser requests that we now realize they shouldn't. (Best to be safe & current, that's my main point.)
For SWF production, use whatever you like... most of the recommendations I see within Adobe are to use tools that make the most sense for you. (I'm still surprised that Microsoft introduced Silverlight instead of letting Visual Studio compile to SWF, but that's a separate issue.... ;-)
jd/adobe
I'm not at all surprised that Microsoft introduced Silverlight instead of adding the ability to deploy SWF. Though I'd love to use Visual Studio for everything. I think it all makes sense once you understand .NET and Visual Studio. Firstly, Silverlight is different to Flash. Indeed, for me Silverlight is better than Flash. I can do things with a Silverlight app that I can't do with a Flash app. I prefer .NET framework to what Flash has to offer. I prefer to use typical programming languages like C#, or even Java, Python or VB.NET, rather than ActionScript. Secondly, MS isn't trying to make VS do everything; better than that, MS makes it easy for anybody to add custom functionality to VS. The list goes on, this is an essay topic. ;)
However, I am surprised that Adobe hasn't released an add-on for Visual Studio to allow Flash development. VS is almost infinitely extendable. I use several plug-ins and utilities -- e.g. ReSharper to make development easier, and ReXapper a third-party utility for re-packaging the Silverlight XAP file (the equivalent of a SWF file) to make it even smaller.
That machine with Flash 6 isn't mine, it's within an organisation, and the user privileges are too restricted to allow installation of Flash. It could be worse -- not so long ago every machine there had IE7 and no ability to upgrade! I agree with you 100% that it's best to be current, now if only we could persuade the rest of the world!
The reason I love Silverlight more than Flash/Flex is not "I love Microsoft"; instead, I love Microsoft all because those Non-Microsoft produces are NOT really that good.
I have knowledge about Microsoft's COM, ActiveX and ActiveScript technology, that means I know the real reason why the older version Flash Player won'd work in a form, and know how the Flash Player lame in the truth.
As an ActiveX object, Flash Player for IE should implement IDispatch interface and expose its methods to the IE DOM.
But in face, they(MM/Adobe) didn't do it right, they didn't make Flash Player for IE maintain its methods through IDispatch, nor by itself; they made the "player" try to access the IE DOM and find itself in the DOM tree -- in an older version, it used a script like "idOfFlashPlayer.xxxxxx" -- for adding a "callback", this caused it won't be able to find itself when it is in a form.
In the newer version, they changed this behavior, and used document.getElementById, but there is still a problem: In many cases, this "addCallback" will finally cause a closure circular in IE, which is the main reason users experience memory leak on IE's early version(till IE 7).
Also, I can't imagine how a RIA content provider which will slow itself down when trying to render a large content could become popular, nor how people still bound on the lame thing and won't move to a better one.
I don't speak English natively, please forgive me if I made anything went wrong in my words.
Thanks for sharing your thoughts. :)
I don't understand what you mean when you say that you must have CS3 to create Flash applications. I rarely use CS3 to create Flash apps. Most of the time I use the free FlashDevelop program with the free Flex SDK. To be honest, this little program is good enough to make me start to be annoyed with certain aspects of Visual Studio. It's by far the best IDE for pure actionscript coding.
You mentioned Eclipse. Adobe's Flex Builder (now Flash Builder) is based on Eclipse, and there is a plug-in for Eclipse that can be used instead. More recently, you also have the option of a third party plugin called Amethyst coming up to give you actionscript editing in Visual Studio.
I'm glad to hear people like Silverlight, because it gives me hope that I may one day learn to like it. But for now, I certainly can't say I like it as much as Flash. Some of the things you complain about having to do, such as XML parsing, are things that I look forward to doing in actionscript as opposed to C#. I also find the display list system in flash is a lot more intuitive to work with.
Thanks for sharing you rthoughts, Alex. I reckon you're in the minority, not using CS3 for Flash work. ;)
I am not really on either side of this debate but I have an interest in programming languages and DSLs and the way I understand it you might not even want to give the expressiveness of language like Java and C# on the client side programming mostly because that facilitates business logic development on the client side. In some projects this is just fine but in a good number of projects you can assume developing business logic in the GUI layer can cause serious problems to scalability and maintainability of an application. I understand that seasoned programmers know how to do this right but in my experience less experienced programmers are more attracted to front end development and even if that is not the case you still want to be able to make use of more junior programmers (mostly do to financial reasons) and have a little peace of mind that things can not go horribly wrong.
My 0.02
Hey Farzad, thanks for sharing your two cents worth! ;)
I certainly take on board your point about the hazzards of of plug-ins in the hands of bad developers. With Flash, it's more like designers trying to do programming, with some really messy results. (E.g. Badly produced Flash ads which look nice but slow-down or crash the web page are all too common. And often the same effect could have been achieved without even using Flash!)
I wouldn't say a particular language can make the developer more likely to put business logic in the wrong place. But I do prefer to see client-side programming work done by real programmers, and that includes JavaScript development. I also prefer development work to be done with a real programming language like C# and in a proper IDE like Visual Studio.
Update: Amazon's LOVEFILM online movie service drops Flash and upgrades to Silverlight (LOVEFILM Blog)