Client side web development with fancy graphics - what are the candidate tools? Which are going to "win"?
October 29, 2010 11:53 PM
I'm trying to get my head round the wealth of technologies available for creating "Rich" internet applications - featuring sound, graphics, interaction, animation - specifically from the client side. Flash, ActionScript, Silverlight, Expression, JavaFX, Java, HTML5, JavaScript, JQuery... In particular, I'm looking for the long view, preferably from people working in the field: what skills do you think you will you be looking for in new recruits a few years from now? And why?
I keep hearing flash is dead - but is it? JavaFX is changing - but how much? HTML5 is the future - but for animation, isn't that just the canvas element with JavaScript? What's the next Bejewelled Blitz going to be written in? How about FarmVille?
I keep hearing flash is dead - but is it? JavaFX is changing - but how much? HTML5 is the future - but for animation, isn't that just the canvas element with JavaScript? What's the next Bejewelled Blitz going to be written in? How about FarmVille?
Javascript already works, jQuery, etc, just make it easier to build things cross-browser.
JavaFX has all the downsides of normal Java applets, including a smaller userbase compared with flash.
Flash isn't dead now, probably won't be in the future, and certainly won't be until all of the IE-using-masses upgrade to a modern version. How soon will that be? Flex has good support for building RIAs, with better deployment than java, and no dependency on IE.
CSS3 support will probably continue to improve, but what's the chances the IE team will get it right and deployed inside of the next 5 years?
So: javascript, flash.
posted by beerbajay at 4:13 AM on October 30, 2010
JavaFX has all the downsides of normal Java applets, including a smaller userbase compared with flash.
Flash isn't dead now, probably won't be in the future, and certainly won't be until all of the IE-using-masses upgrade to a modern version. How soon will that be? Flex has good support for building RIAs, with better deployment than java, and no dependency on IE.
CSS3 support will probably continue to improve, but what's the chances the IE team will get it right and deployed inside of the next 5 years?
So: javascript, flash.
posted by beerbajay at 4:13 AM on October 30, 2010
There really is no such thing as a long view in this field. Technologies are constantly changing, from the programs used to view pages to the hardware that runs them. Nobody knows what the landscape will be like a few years in the future. You have to be adaptive and able to pick up new skills, but that's pretty much true of any programming job.
Besides, your audience matters as much as anything else when choosing a technology. Look at these stats of Chinese users -- about 60% are still using IE6, and roughly 90% of them are using XP which means the highest version they could install is IE8 which doesn't support HTML5 and only supports parts of CSS3. They probably are on IE6 in the first place because downloading IE7 or 8 requires genuine validation which they fail. This is 2010, not 2004. If you were going to design a site that you wanted them to use, pretty much your only choice is Flash. But in the same 2010 if you want anyone on an iOS device to use your site, you can forget about Flash. So, audience matters too.
posted by Rhomboid at 5:24 AM on October 30, 2010
Besides, your audience matters as much as anything else when choosing a technology. Look at these stats of Chinese users -- about 60% are still using IE6, and roughly 90% of them are using XP which means the highest version they could install is IE8 which doesn't support HTML5 and only supports parts of CSS3. They probably are on IE6 in the first place because downloading IE7 or 8 requires genuine validation which they fail. This is 2010, not 2004. If you were going to design a site that you wanted them to use, pretty much your only choice is Flash. But in the same 2010 if you want anyone on an iOS device to use your site, you can forget about Flash. So, audience matters too.
posted by Rhomboid at 5:24 AM on October 30, 2010
It depends on what you want to do, and who your intended audience is. I would expect that all of the technologies you list will still be active (ie potentially get you a job) in a few years. Some are on the wax, some on the wane, but all of them will still be in widespread use for something or other.
posted by contrarian at 5:38 AM on October 30, 2010
posted by contrarian at 5:38 AM on October 30, 2010
Agree with empath. HTML 5, CSS 3, JavaScript is the cleanest move. Probably set you up for 5 years or so. With JavaScript I would highly, highly recommend JQuery. So damn easy to use, lightweight, and it has a great community. Two thumbs up.
Java is definitely NOT the way to go. JavaFX is not that common either.
Flash is probably not bad, but the ramp up to get anything done is pretty significant. You need to buy flash developers tools and spend some time mucking with it, and, at the end of the day, you're using ActionScript in there as well.
posted by kryptonik at 6:53 AM on October 30, 2010
Java is definitely NOT the way to go. JavaFX is not that common either.
Flash is probably not bad, but the ramp up to get anything done is pretty significant. You need to buy flash developers tools and spend some time mucking with it, and, at the end of the day, you're using ActionScript in there as well.
posted by kryptonik at 6:53 AM on October 30, 2010
Dude, Google chrome frame means you can use all the HTML5 goodness as plug in, just like flash. So you can still use it in IE6 or whatever.
I would go with "HTML5" rather then flash. Although it seems like "HTML5" is just the label people are applying to HTML+Javascript these days. First it was DHTML, then Ajax, and now HTML5. HTML5 ads the canvas tag, which is a big deal.
posted by delmoi at 7:05 AM on October 30, 2010
I would go with "HTML5" rather then flash. Although it seems like "HTML5" is just the label people are applying to HTML+Javascript these days. First it was DHTML, then Ajax, and now HTML5. HTML5 ads the canvas tag, which is a big deal.
posted by delmoi at 7:05 AM on October 30, 2010
HTML5, CSS3, JavaScript. It seems to be where things are trending, and where a lot of big companies are investing resources.
posted by chunking express at 8:05 AM on October 30, 2010
posted by chunking express at 8:05 AM on October 30, 2010
It wouldn't surprise me at all if future versions of the Flash IDE started to export projects to Javascript/Canvas as well as SWF - if that's the trend, Adobe will probably be working on getting a piece of the action.
Personally I'd say go with what you enjoy, because that'll inspire you to keep learning. Try to pick up new things and try out new technologies as you go along. Having a broad knowledge as well as a focus is a definite asset.
posted by le morte de bea arthur at 11:39 AM on October 30, 2010
Personally I'd say go with what you enjoy, because that'll inspire you to keep learning. Try to pick up new things and try out new technologies as you go along. Having a broad knowledge as well as a focus is a definite asset.
posted by le morte de bea arthur at 11:39 AM on October 30, 2010
I'm with kalessin. I hire for one of the world's largest companies. I'm not nearly as concerned with what RIA technologies you know as I am in seeing what you've accomplished with them. If you are creative, and technically inclined, I'll train you to use a specific toolset for a specific job. What I can't train you to do is be creative. Concentrate on demonstrating that you think fast, you think cleverly, and you can articulate your vision.
That said, I also think empath and kryptonik are spot on in suggesting HTML5 + CSS3 + JS. We can debate how long it will be before those are the dominant building blocks, but frankly, anyone who thinks those won't be the blocks doesn't know what they're talking about. Flash may have a place for some time to come, but it will be increasingly limited; learning Flash as a springboard to outputting HTML5/CSS3/JS is a waste of time. Learn how those things work without Flash as a intermediary, and you'll be better positioned for the market 5 years from now.
Along the same lines, don't start using jQuery (or any other JS library tool) until you clearly understand the underlying stuff. jQuery, et. al., are there to provide shortcuts and to shield you from the idiocies of cross-browser behavior; don't rely on them to produce functionality you would otherwise be unable to understand or create.
posted by OneMonkeysUncle at 12:03 PM on October 30, 2010
That said, I also think empath and kryptonik are spot on in suggesting HTML5 + CSS3 + JS. We can debate how long it will be before those are the dominant building blocks, but frankly, anyone who thinks those won't be the blocks doesn't know what they're talking about. Flash may have a place for some time to come, but it will be increasingly limited; learning Flash as a springboard to outputting HTML5/CSS3/JS is a waste of time. Learn how those things work without Flash as a intermediary, and you'll be better positioned for the market 5 years from now.
Along the same lines, don't start using jQuery (or any other JS library tool) until you clearly understand the underlying stuff. jQuery, et. al., are there to provide shortcuts and to shield you from the idiocies of cross-browser behavior; don't rely on them to produce functionality you would otherwise be unable to understand or create.
posted by OneMonkeysUncle at 12:03 PM on October 30, 2010
Not that this will come as a surprise to anyone, but you can take silverlight off your list for certain.
Flash still has its uses, but it's clearly trending down in favor of HTML5 (Adobe, who are not fools, clearly are preparing for this.)
Java has been a distant also-ran on the clientside for years and years. Personally I think Apple just signaled the last nail in its coffin.
HTML5 is the future - but for animation, isn't that just the canvas element with JavaScript
That and some CSS3 animation capability. (Just as Flash is "just" a plugin element with ActionScript.)
jQuery, et. al., are there to provide shortcuts and to shield you from the idiocies of cross-browser behavior; don't rely on them to produce functionality you would otherwise be unable to understand or create.
I get where this is coming from, but jQuery adoption is at this point so widespread, and it's so powerful, and the cross-browser idiocy it shields you from is so unnecessary, I wouldn't be surprised to see it turn into a de facto core element of in-browser javascript before too long. It used to be something I had to talk people into using; these days even my stodgiest corporate clients already have it. (Heck, even Microsoft is contributing to it these days.)
posted by ook at 12:42 PM on October 30, 2010
Flash still has its uses, but it's clearly trending down in favor of HTML5 (Adobe, who are not fools, clearly are preparing for this.)
Java has been a distant also-ran on the clientside for years and years. Personally I think Apple just signaled the last nail in its coffin.
HTML5 is the future - but for animation, isn't that just the canvas element with JavaScript
That and some CSS3 animation capability. (Just as Flash is "just" a plugin element with ActionScript.)
jQuery, et. al., are there to provide shortcuts and to shield you from the idiocies of cross-browser behavior; don't rely on them to produce functionality you would otherwise be unable to understand or create.
I get where this is coming from, but jQuery adoption is at this point so widespread, and it's so powerful, and the cross-browser idiocy it shields you from is so unnecessary, I wouldn't be surprised to see it turn into a de facto core element of in-browser javascript before too long. It used to be something I had to talk people into using; these days even my stodgiest corporate clients already have it. (Heck, even Microsoft is contributing to it these days.)
posted by ook at 12:42 PM on October 30, 2010
Just because nobody's come right out and said this, your list of technologies one might consider is kind of broken:
> Flash, ActionScript, Silverlight, Expression, JavaFX, Java, HTML5, JavaScript, JQuery
Actionscript is the language for scripting Flash. JQuery is a framework for simplifying Javascript development. Expression is an application for doing web development using other things already on your list, and so on.
So your question boils down to "things the browser doesn't do natively" (Flash, Silverlight, Java) and "things the browser does do natively" (the combination of HTML/CSS/Javascript).
posted by AmbroseChapel at 1:49 PM on October 30, 2010
> Flash, ActionScript, Silverlight, Expression, JavaFX, Java, HTML5, JavaScript, JQuery
Actionscript is the language for scripting Flash. JQuery is a framework for simplifying Javascript development. Expression is an application for doing web development using other things already on your list, and so on.
So your question boils down to "things the browser doesn't do natively" (Flash, Silverlight, Java) and "things the browser does do natively" (the combination of HTML/CSS/Javascript).
posted by AmbroseChapel at 1:49 PM on October 30, 2010
Depends on what you're doing. For real animation, Flash is still king at the moment because you can do all kinds of things you can't do performantly with JS/Canvas yet. The best demo's are still pretty crappy games, while I've seen some amazing Flash games. Until canvas is hardware accelerated for the majority of people (as it is in IE9) it's only going to get used to render simple 2D graphics (e.g. charts)
For websites and applications, HTML + CSS + JS all the way. Flash was never meant to make full websites in; people just abused it as such. This is going to be the tech of the future because of the underlying principles and broad support from the major companies and browser vendors -- and mainly because it works for text content: content is separated from presentation. Added bonus: forms etc. work like they do in the other parts of your OS, allowing for a logical transition. (In Flash you'd have to recreate a scrollbar, for instance)
From a recruiter standpoint I'd look for someone who:
* Knows how to handle his computer (can type fast and accurately, knows his OS and others, can find information fast, masters his text editor of choice)
* Knows how to program - it doesn't really matter what language
* Learns quickly
posted by wolfr at 2:40 PM on October 30, 2010
For websites and applications, HTML + CSS + JS all the way. Flash was never meant to make full websites in; people just abused it as such. This is going to be the tech of the future because of the underlying principles and broad support from the major companies and browser vendors -- and mainly because it works for text content: content is separated from presentation. Added bonus: forms etc. work like they do in the other parts of your OS, allowing for a logical transition. (In Flash you'd have to recreate a scrollbar, for instance)
From a recruiter standpoint I'd look for someone who:
* Knows how to handle his computer (can type fast and accurately, knows his OS and others, can find information fast, masters his text editor of choice)
* Knows how to program - it doesn't really matter what language
* Learns quickly
posted by wolfr at 2:40 PM on October 30, 2010
>> jQuery, et. al., are there to provide shortcuts and to shield you from the idiocies of cross-browser
>> behavior; don't rely on them to produce functionality you would otherwise be unable to
>> understand or create.
> I get where this is coming from, but jQuery adoption is at this point so widespread, and it's so
> powerful, and the cross-browser idiocy it shields you from is so unnecessary, I wouldn't be
> surprised to see it turn into a de facto core element of in-browser javascript before too long.
Uhh, I think this is more in the vein of "know how memory allocation works before using garbage collection". In this case, it's crucial to understand the DOM API, javascript callbacks, etc before getting deep into JQuery and thinking it's all "magic". That approach works until something is broken, or you need to extend JQuery.
posted by mezamashii at 4:09 PM on October 30, 2010
>> behavior; don't rely on them to produce functionality you would otherwise be unable to
>> understand or create.
> I get where this is coming from, but jQuery adoption is at this point so widespread, and it's so
> powerful, and the cross-browser idiocy it shields you from is so unnecessary, I wouldn't be
> surprised to see it turn into a de facto core element of in-browser javascript before too long.
Uhh, I think this is more in the vein of "know how memory allocation works before using garbage collection". In this case, it's crucial to understand the DOM API, javascript callbacks, etc before getting deep into JQuery and thinking it's all "magic". That approach works until something is broken, or you need to extend JQuery.
posted by mezamashii at 4:09 PM on October 30, 2010
HTML5 + CSS3 is just now picking up steam, so it will definitely be must know in the not-too-far future.
I definitely think that it will be several years before Flash starts to decline, especially for applications with heavy sound, graphics, and animation. IMO, the whole "Flash is dead" meme is really premature.
JavaScript and jQuery are must-know skills.
Java isn't really used for client side development, but a large amount of backend development is done with Java, especially for corporate IT environments, so it's good to at least have a working knowledge of it.
JavaFX, Silverlight, and Expression are going to be niche skills (not necessarily a bad thing, though.) Really, you can safely ignore JavaFX.
posted by kenliu at 10:56 PM on October 30, 2010
I definitely think that it will be several years before Flash starts to decline, especially for applications with heavy sound, graphics, and animation. IMO, the whole "Flash is dead" meme is really premature.
JavaScript and jQuery are must-know skills.
Java isn't really used for client side development, but a large amount of backend development is done with Java, especially for corporate IT environments, so it's good to at least have a working knowledge of it.
JavaFX, Silverlight, and Expression are going to be niche skills (not necessarily a bad thing, though.) Really, you can safely ignore JavaFX.
posted by kenliu at 10:56 PM on October 30, 2010
Uhh, I think this is more in the vein of "know how memory allocation works before using garbage collection". In this case, it's crucial to understand the DOM API, javascript callbacks, etc
Like I said, I get where it's coming from. But I literally can't remember the last time I needed to use the DOM API directly. I really do believe that jQuery is going to seem less and less like an extension that sits on top of javascript, and more just part of the language itself.
I know we're all supposed to pretend that in a pinch we'd be able to rewrite our web apps in raw assembly code; we've opened up every single black box to see its inner workings, we're on a first name basis with every turtle all the way down. But we all know it's not true. At a certain point you're going to be depending on something that may as well be magic. "know the basics" is always good advice, it's just a matter of what you choose to define as "basic". The parts of javascript that jQuery replaces are parts of javascript that I'm increasingly comfortable with the idea of never needing to think about ever again.
posted by ook at 5:32 PM on October 31, 2010
Like I said, I get where it's coming from. But I literally can't remember the last time I needed to use the DOM API directly. I really do believe that jQuery is going to seem less and less like an extension that sits on top of javascript, and more just part of the language itself.
I know we're all supposed to pretend that in a pinch we'd be able to rewrite our web apps in raw assembly code; we've opened up every single black box to see its inner workings, we're on a first name basis with every turtle all the way down. But we all know it's not true. At a certain point you're going to be depending on something that may as well be magic. "know the basics" is always good advice, it's just a matter of what you choose to define as "basic". The parts of javascript that jQuery replaces are parts of javascript that I'm increasingly comfortable with the idea of never needing to think about ever again.
posted by ook at 5:32 PM on October 31, 2010
Many thanks for your answers - I was leaning towards HTML5 & JavaScript and this confirms my prejudices. You've also convinced me that I really need to look more deeply into JQuery.
Just in case any of you are still following this via their activity... here's a quick followup question: Are many people using dojo? Is that worth a look?
posted by handee at 12:47 AM on November 12, 2010
Just in case any of you are still following this via their activity... here's a quick followup question: Are many people using dojo? Is that worth a look?
posted by handee at 12:47 AM on November 12, 2010
Here's an analysis showing significant market share for JQuery.
http://elie.im/blog/web/45-of-the-popular-websites-use-a-javascript-framework/
I've seen similar analyses elsewhere.
Note that just because something is popular (in the tech world) doesn't necessarily make it BETTER. Due to market pressures, you generally have to have working knowledge of the latest most popular tool or technology, but a lot of times having knowledge of some niche technology is going to be the thing that lands you a job.
posted by kenliu at 5:47 PM on November 12, 2010
http://elie.im/blog/web/45-of-the-popular-websites-use-a-javascript-framework/
I've seen similar analyses elsewhere.
Note that just because something is popular (in the tech world) doesn't necessarily make it BETTER. Due to market pressures, you generally have to have working knowledge of the latest most popular tool or technology, but a lot of times having knowledge of some niche technology is going to be the thing that lands you a job.
posted by kenliu at 5:47 PM on November 12, 2010
This thread is closed to new comments.
posted by JonB at 1:01 AM on October 30, 2010