How to choose client side technologies for a new web project.
-
Why shouldn't we use Flash? Why should we use AJAX (DHTML/Javascript)? Should we support IE6? I'm wrestling with these questions for a new web product, and I'd like insight from others. This is for a consumer oriented web app (as opposed to B2B). A richly interactive UI is considered essential. It may well be that Flash is the only way to achieve what is being imagined, but I personally think AJAX could provide a very satisfactory experience. We also have the question of whether to support IE6. I think the top arguments for Flash are: Most capable. Single platform to target (acknowledging performance differences between OSs) Likely highest productivity (richer development tools, better testing frameworks, not having to worry as much about multiple browser versions) Better integration with client OS for things like drag and drop, file uploads, etc Am I wrong about any of these? The thing is, I think these things have been true for quite a while, and yet Google chose AJAX for Gmail and Google Maps, Yahoo for their remade mail client & Flickr, which started out being mostly Flash has now converted most of it to AJAX. The main downside I see for Flash could be equally true for AJAX: bookmarkability/sharability is hindered since displayed URL likely doesn't recreate the current view. The other issues are harder for me to quantify:Flash isn't "cool"Flash isn't openWhat else should I be thinking about? How have you made your decisions? Real numbers would be appreciated (are http://www.adobe.com/products/player_census/flashplayer/version_penetration.html anything close to accurate?) There is also the issue of IE6 support. Numbers aren't declining quickly enough, and it seems likely that the holdouts are computers in businesses. Our app isn't going to be "work related" for most people, but the reality is, people use such apps from work all the time. We don't want people to be unable to use our app from work. On the other hand, using Flash would help work around a lot of IE6 issues.
-
Answer:
My company does a tremendous amount of web software development for other companies -- we use both flex and ajax quite a bit. Flex-based development has three primary advantages as I see it. It can support binary transmission of data back and forth between the client and server, which can result in significant improvements *if* your app ships lots of data between the two. It has better support for offloading certain processor intensive tasks to the client machine. Things that might be expensive to do on a server for thousands of simultaneous users can be cheap to do on the client PC for one user at at time. And the development tools for flex development are better, meaning a developer just starting out with either technology will produce a given front end faster in flex than ajax. Don't use just flash, by the way. A flex code base is cheaper to maintain and extend over time. Ajax is great for browser compatibility, search engine readability (and will stay ahead for at least 6-12 more months), and integration with the native browser environment (bookmark, history, tabbed browsing, and back button support, for example). If the UI you're planning is primarily about "saving clicks" - i.e. allowing users to enter data, manipulate objects and navigate faster, look to Ajax. If your UI is about offloading processor intensive operations to the client PC, moving huge amounts of data, multimedia support -- or if you have a developer inexperienced in either platform, you should probably consider flex.
Good Brain at Ask.Metafilter.Com Visit the source
Other answers
The other issues are harder for me to quantify: * Flash isn't "cool" * Flash isn't open Neither of these is true if you use Flex to make your swf files. By "open" I assume you mean you have to use Adobe's IDE to develop. With Flex you can develop in Notepad and use a command line compiler if you're so inclined. Actionscript is not an "open" language I guess but then neither is java or HTML. "Cool" is a lot more subjective. But the late 90s thing of the stupid flash intro with the techno music is over. Flex is very cool right now- not many people know about it, but people doing cutting-edge web stuff do. The best part of Flex, besides being completely cross browser, is that you can do object oriented development on the frontend. Everyone has Flash player, unless you're targeting some weird locked-down corporate environment. Think of it this way- do you know anyone who's never once watched a Yotube video? (The thing about the mobile platforms may be a valid point, if we're talking about iPhone anyway.)
drjimmy11
Regarding mobile browsers, given the form factor, CPU power and bandwidth constraints, I view them as a whole 'nother issue. I'm not so sure about that. Nearly every AJAXy site I've visited on an iPhone has performed quite acceptably, and iPhone-esque gadgets are going to be skyrocketing in popularity over the next few years. The iPhone itself may never support flash; the others will have varying levels of performance depending on CPU and OS issues. Flash, on both my Mac and work machine (Windows) is a horribly ugly resource hog. I've never seen an AJAX site cripple my performance to anywhere near the level Flash can. It's at the point where I actively avoid flash, block it everywhere possible, etc. Adobe claims that Flash 10 will be better, but I'm going to remain a skeptic till I see it. As for load times, while they can be annoying with really huge ajax, compared to flash... well, it's the difference between picking up your four-year-old niece and having her 170 lb father jump into your arms. Also, Flash totally breaks forward/back/bookmarkability, whereas AJAX doesn't have to (look at gmail, where it works as expected) and GET can be used to compensate quite a bit. There are other issues that may or may not be fixable by a good developer in Flash - like the fact that OS keyboard shortcuts never seem to work, that the UI is never the same twice, that it never seems to scale well to my browser size - but I'm past the point of caring. I work with Flash often enough to remind me why I don't like it, and for all the problems of AJAX, if it's an option at all I'd strongly recommend it over Adobe's user-abuse system.
Tomorrowful
I'd caution against using MeFi to ask advice on Flash vs. anything. Any thread (whether it's MeFi or Ask) that invokes the 'F' word tends to attract a particular species of web denizen that will find one way or another of echoing http://www.useit.com/alertbox/20001029.html. I would argue that you're not getting a representative sample of opinion here; MeFites (and particularly those drawn like moths to this kind of question) are generally not typical web users; we're the kind of people who wouldn't use IE if it dispensed gold bricks, and would probably be happier if Flickr were text-only.
le morte de bea arthur
BTW: If you are ever working with a someone claiming to be a flash "dev" and they have an .FLA file which is not trivial (eg: all of their functionality is not in classes in external .as files) then run away. Run far away. They are ripping you off.
Riemann
Just wanted to chime in with a little more info on the flash side of things: All of the criticisms leveled against Flash in this thread have merit for the vast majority of Flash on the web today. (especially the large file size download, no deep-linking / back button integration and poor performance) However, these are issues that were created by poor quality flash development (which is the norm, due to the above mentioned trend of designers trying to be devs) and is not an issue with the underlying player. It is quite possible to create Flash projects which are much lighter than comparable AJAX and that offer a much richer feature set. I have created a fully functional streaming video player with UI controls and playlist capability which weighed in at 12K. The company logo GIF in the HTML page hosting the player was bigger than the player itself. But again, this is the (very rare) exception not the rule. Especially since Flash 9 (which introduced an entirely new programming language and new virtual machine) it is technically possible to create extremely lightweight and performant Flash projects. 90% of people who put "Flash" on their resume wouldn't be able to sure. But the language itself (Actionscript 3) is essentially ECMA 4 and is much easier to code for than Javascript from the point of the view of a real OOP developer (someone coming from C++, C# or Java background as opposed to a 'scripter ). Just one example: Actionscript 3 is a typed language (huzah!) and supports a decent (if not as robust as C# or Java) set of OOP constructs like classes, interfaces, inheritance etc... In comparison trying to organize a non-trivial application using prototypes in javascript is like shaving with a rusty hook. Just as a side note: If you are doing any further reading on the subject remember that Flex 1 & 1.5 are a completely different product than Flex 2 or 3 (and 1 and 1.5 sucked. badly. Like ColdFusion bad. I don't know why they didn't just drop that dog of a product name when they created the actually pretty-damn-cool Flex 2). Also remember that any performance metrics you see from Flash 8 or prior really have no bearing on Flash 9 or later as 9 is based on a different programming language and runs in a virtual machine (in practice it's about 5-10x faster depending on what you are doing).
Riemann
On my rather old laptop with a fat bandwidth pipe, most Flash ironically loads quickly and runs quite acceptably while many "rich" AJAX frameworks hang during initial load for sometimes quite long and unacceptable periods of time. GMail is a classic offender here.
meehawl
You haven't given us any hints about what sort of interactivity you require (which is fine, you obviously don't want to be sharing trade secrets on the interwebs) so we can't really give solid advice, only data points for you to consider. In that spirit, here are some data points: Flash costs more money to develop in. You need specific tools from specific vendors, and you need to hire specific talent to develop in it. However any decent IDE (Eclipse has an excellent JavaScript plugin) handles JavaScript and HTML just fine. Many of these are free and will integrate with your back end environment. e.g. you can use Visual Studio to code your UI (JavaScript and all) and turn around and crank out some business objects. Likewise with Eclipse (for Java/J2EE based sites, or PHP with the PDT plugin. That level of integration saves you time and money. All of your team members can standardize on one platform instead of having your IDE and a copy of Flash Studio. Likewise Flash devs tend to come from a graphic design background (which is just fine) but often don't have the programming chops. Not that you won't find some person who is a good designer and a good developer...it's just that those folks are rare and expensive. You don't want to have to hire a "flash guy" who only does "flash" and sits around most of the time. There are a number of JavaScript frameworks today which handle slick UI stuff out of the box and handle all of the cross browser (even IE6) out of the box. Yahoo's tools have been mentioned above. Look into Dojo and Prototype + Scriptaculous as well. If you do go with Flash, make sure that you get the authoring files (the *.fla file) into version control and off your developers computer. If you work with a contractor or a freelancer, stipulate that in your contract. Once the flash movie has been compiled, if you don't have the original flash project file, it is very very very very difficult to make changes without going to the flash guy for help. it is a very common business practice of snakes and other lower life forms to hold these things hostage for large sums of money. Javascript and HTML is ultimately just plain old text which any good developer can figure out.
device55
I don't know how common this is, but personally I block Flash with Flashblock, and I have to have a really, really good reason to click on something and load it. If I were to go to your site and a big Flash block popped up, I'd probably just navigate away unless I had a very specific reason for going there. And then, I'd secretly curse you anyway. I'd say about 80-90% of the time I go to a site with Flash, I either don't load it, or just immediately navigate away. It's obnoxious, it's slow, it tends to hang my browser, and most of the time it's just gratuitous and the sign of a site that values form over function. Perhaps that wouldn't be true of your site, but if it's all done in Flash, I may never bother to find out. So far, I have yet to feel like I'm missing out on anything by doing this.
Kadin2048
drjimmy11 >Actionscript is not an "open" language I guess but then neither is java or HTML. Silliest thing I've read all week. Going back to the original post, I think the question comes down to this: "A richly interactive UI is considered essential." What does that mean? Maybe if you explain it, it will come down to "something which can only be done in Flash". That's my basic rule. If you have a requirement which can only be achieved with Flash, because it requires, say, zooming in and out of a map with arbitrary levels of zoom, as opposed to Google Maps' discrete levels, that's what you have to do. In all other circumstances, you avoid Flash.
AmbroseChapel
Related Q & A:
- How do i copy my friendlist to a new main yahooaccount?Best solution by Yahoo! Answers
- How do I install Windows XP on a new hard drive?Best solution by Super User
- How do I know when I need a new LCD monitor?Best solution by answers.yahoo.com
- How do I know if I need a new carberator?Best solution by chacha.com
- How do I set up Yahoo for a new computer?Best solution by dell.com
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.