I\'m in the trade of developing business web applications. They are mostly internal-use, sometimes with a partner zone, but rarely available to the public internet. They are
I've run a successful small business (myself, plus 2 other partners) developing web apps for large financial services firms (Fidelity, Hancock, Vanguard, T.Rowe Price) for 7 years using nothing but Flash.
For the first few years (2001-2004), I felt like we were ahead of the curve - very few other companies were using Flash to develop robust, "real-business" web apps. In 2005-2008, I felt like we had lots of competition. Now, I'm starting to see the end of the road - JS and Ajax now make it pretty easy to do all the things we used Flash for (asynchronous communication, highly responsive interactivity, charting, graphing, drag-and-drop, etc.)
Here's a few of my opinions:
Flash can definitely handle "real" business applications - our clients use our apps to run or integrate with trading systems, risk management applications, portfolio monitoring, and other business critical functions. Anyone who says Flash can't handle such things are mis-informed.
I developed desktop applications for years before starting my own business. Flash was the first technology that allowed me to do in a web-app as much as I could do in a desktop app.
Flash does allow us to develop once, and run on any browser
Flash gives us a much larger array of UI controls and widgets - when a specific type of interaction requires more than just a text box or radio button or drop-down menu, we can build whatever we need. Some apps require novel interaction affordances
That said, in our experience, a web app must look like a web app, otherwise users won't get it. So, even though you can build any type of UI control or interface you want, you should probably build them to look exactly like standard HTML controls, and EXTEND their behaviors, but never change them. Don't expect users to learn something new.
If you pay attention, you can keep your Flash apps more lightweight than a comparable JS/Ajax implementation. Get rid of extraneous graphics, animations, unnecessary fonts. We've build serious quantitative Monte-Carlo simulations/financial planning apps that were lighter than many of the popular AJAX libraries.
The biggest downside is managing your app/sharing the workload with other developers. Bottom line - there just aren't that many Flash developers, and fewer established coding standards or frameworks. So, know in advance that you'll probably own the app yourself for as long as it lives. If you have clients that will take over the app once you deliver it, they'll have a hard time finding new developers to manage/extend it.
The second biggest downside is that you're beholden to Adobe. If they decide to discontinue Flash, we're stuck.
As someone else pointed out, accessibility is a real problem. There are workarounds, but it's a LOT of extra work, whereas it's often 'free' if you use HTML. (Although AJAX/JS also can have huge accessibility problems as well).
I don't expect that the iPhone will ever support Flash. While Flash is essentially ubiquitous on desktops, it may never make it to mobile. (Adobe offers FlashLite for mobile, but I don't know much about it. Seems like the uptake has been pretty minimal.)
While other technologies are catching up (and surpassing it in some cases), I think Flash has at least another year or two of useful life.
Hope that's helpful. Good luck.
Flash seems to have been the next big thing in interactive applications for years now. However, for whatever reason it has never happened. I don't think it will ever happen now for the following reasons:
All this considered, to me Javascript is the future of interactive applications.
It puts your application in a box.
If you're happy with the limitations that box brings then all well and good, but as well as gaining easier access to a rich UI you will have some constraints placed upon you. E.g. If you need your application to have search capabilities, you may have to write your own rather than relying on google (for external) or an internal index server (presumably you could still use an indexing service to a backend database and would then be able to access that through your flash app?)
I haven't written a Flash app for about 7 years. When I did, it was fun and reasonably easy to get small toys up and running, but I never considered for a serious app - long time ago though - I suspect things have changed.
Flash would solve all this. It would instantly run on all browsers and all platforms.
Instantly?
loading... 23% ...
;-)
Having said all that, I actually quite like Flex, but for the reasons above, I view it as little more than a toy.
A big reason is accessibility. In a sufficiently big organization you will have a few users who need bigger text, screen readers, braille terminals or higher contrast. There are existing, well-established technologies for using those with "normal" web applications (if they don't rely too heavily on JavaScript usually).
Those technologies usually fall flat on their face as soon as your content is trapped in flash.
Very simple: because the current incarnations of Flash are still too bug-ridden. For example, there is a problem with accented character input under Linux that is pretty much a show-stopper. I have also tested several frameworks recently that offer both JS and Flash as client-side technology and it took me only minutes to write small examples that behaved incorrectly with Flash.