Silverlight is enticing from my C# background. But I'm concerned about it's penetration. Is it likely to catch on ? OR perhaps I should just bite the bullet and learn Flash.
Does anyone have any advice on which to choose ?
Silverlight is enticing from my C# background. But I'm concerned about it's penetration. Is it likely to catch on ? OR perhaps I should just bite the bullet and learn Flash.
Does anyone have any advice on which to choose ?
Youtube made the choice for the rest of us :)
You really do not want to be constrained by the platforms that you can run on. And more importantly , you should not make this decision on your users behalf.
As a user who is not able to view any Silverlight content I have to strongly advice against it.
You should consider that the Flash player is ubiquitous, while Silverlight is not. Also you can develop for Flash using free tools like the Flex SDK and FlashDevelop.
http://www.adobe.com/products/player_census/flashplayer/version_penetration.html
Silverlight gives you additional pains when it comes to cross-platform compatibility, since the open-source implementation is not 100% compatible and lags behind the official version, so you will have to test like mad to make sure your app works on both Silverlight and Moonlight if you don't want to risk losing an army of Linux users. Nevertheless Moonlight already claims to be compatible with Silverlight 1.0.
edit: fixed post according to comments
At the moment, I would choose Flash. It doesn't seem like Silverlight has the support necessary to really make it a competitor (and it's just not mature, I tried to do things in it and it seems to be lacking some needed functionality). I'm a little skeptical that MS is going to be able to take on Adobe in this market in the end, since really this plays to Adobe's strengths of UI and graphics. Maybe in the longrun, MS will be able to be a competitor, but I don't see it happening anytime soon.
I think the MS's real trouble is going to be with its target audience. I get the impression they are trying to appeal to developers, which, on the whole, aren't really intrested in doing strong UI stuff. Right now I think most (if not all) Silverlight development is on Windows which means that a lot of flash/designer people won't touch it as a matter of principle. I think MS having a Flash like item is a neat idea, but it is playing against a very seasoned opponent which has been successful in forcing MS out of the graphics market for a very long time (that was the real reason they bought macromedia).
I've learned both to some degree. My overall impression:
Flash
Silverlight
Summary:
There is lots to like about both platforms. I think Silverlight will be competetive over time, and may offer a better development experience in the long run. There is a huge existing community of Flash/Flex developers, and Adobe's commitment to that platform isn't going anywhere. Overall, I think having both available will be good for developers.
Bottom line: if you have the time and tools, try both. My advice for Flash- get the trial of Flex Builder if you don't already have it. As a developer you'll find it a more familiar environment.
UPDATE: If you're looking for apples-to-apples comparisons of Flash and Silverlight: http://www.shinedraw.com/
With the amount of weight that Microsoft has to put behind Silverlight, I expect we'll see market penetration with it down the road. Microsoft simply cannot afford to not be a part of this market and it's clear that they realize this. It's just a matter of time before Silverlight gains equivalent market share to Adobe.
Whether or not you go with Silverlight now depends a lot on your target audience. If your target is any random person surfing the web stumbling upon your site then it's probably best to stick with Flash for now. If you have a relatively captive audience who is going to be using your site for a specific reason regardless of your technology choice then you can safely go with Silverlight.
Just to debunk the "doesn't work on linux" thoughts on Silverlight, moonlight is out now:
http://weblogs.asp.net/scottgu/archive/2009/02/11/moonlight-1-0-release.aspx
Is it really an either/or? Take 2 hours to play with each. As a developer, you should learn as much as possible. Now, which you use in production is another matter, but if you learn both, you'll be able to intelligently make the decision that's right for your project.
Why is it a question of one or the other? The more tools you have in your belt, the better.
I'm primarily an Adobe developer with Flash/Flex, but I do some SL dev as well. If you're a C# developer then I think you will definitely find Silverlight has less of a learning curve. I can't tell how many times the more traditionally trained Java/C# people I work with have looked at some ActionScript and been positively baffled by it. To people who are more accustomed to the traditional software dev world, ActionScript is full of quirks.
That being said, Flash has the wider reach and greater acceptance right now. I think one of the big hurdles for Silverlight is that people are hesitant to install stuff when a browser prompts them. It's gaining, but I think it has a long way to go.
So to answer your question, Flash is more immediately marketable, has many more learning resources, and has proven staying power. Silverlight may be a great skill to have in the near future, and for a C# developer it will come easily.
I think it really depends on the urgency of what you're trying to accomplish.
The nice thing about Flash is that it's ECMAScript, so it reinforces (to some extent) your JavaScript chops.
On my todo list is trying a project using one codebase that works in both Silverlight (with Managed JavaScript) and Flash (with ActionScript).
For building browser deployed applications, Silverlight beats flash every day of the week, in terms of power and built-for-the-programmer-from-the-ground-up. [Not that I hate actionscript...just saying that Silverlight/WPF/.NET/VS is much more powerful and built for a Software Engineer).
For browser penetration, Flash kills Silverlight (as of 02/2009). Could change eventually, and may not matter to you...if you build the killer app, they will come.
Can anyone compare the design versus program portion? In Silverlight, designers use Expression Blend, and Programmers use Visual Studio. It appears to work well (is Expression Blend available for the Mac? I think it is). I do not know which is BETTER.
The best answer is here http://blog.webjak.net/2009/02/11/evangelising-silverlight/
I think it depends entirely on who your audience is. If this is going to be for the average web user (web site open to the public) then Flash would be a good choice. I think you can still find some Flash components on Microsoft's site.
Otherwise it's totally up to you. For example, if it's just for learning or for a web site where you don't care if people can see your content then Silverlight is appropriate as well.
Some really good signs about Silverlight:
Flash ActionScript3.0 is ECMA based, so if you learn that you can easily convert to JavaScript or hAXe
I would go for flash. more jobs as flash developer also atleast here in Sweden. Im gonna start looking into hAXe myself, since the haxe project started a c++ convertor. Write haxe, compile as c++ , that's pretty awesome.
If you're into 3d you should check up google o3d, it's javascript controlled, it's an option and I think WebGL will be huge in the future and it's javascript controlled also.
I loved Flash development for many years. But then I've always been an unusual developer who likes the graphics, animation, and user interface side of things as well as the more technical side of coding. You can in fact combine these passions in Flash development and make some pretty cool stuff. I've done projects involving Flash for CiCi's Pizza, DART, and many others.
Lately though, I've been doing a lot more Silverlight development for some of my own projects. Namely, regexhero.net and silverlightshaders.net have been getting a lot of my attention. So since I officially have experience with both Flash and Silverlight I guess I'll chime in.
In my opinion, your choice should depend on a couple things:
1.) Are you a .NET developer? Or more of a Javascript kind of guy?
Since you've already stated that you have a C# background, I think you'll find the learning curve with Silverlight a bit easier. On the other hand, Flash and it's actionscript language reminds me of Javascript in many ways. It's typically harder to debug and just not quite as neat and well-organized as .NET. That's just something you have to put up with as a Flash developer.
2.) More importantly, what are you planning on building?
If you're building a nice-looking menu with animations and transitions, or some sort of promo, then it's simple -- use Flash. The Flash IDE/designer makes it easy to build motion tweens and layer effects on top of eachother. And it's also pretty good about allowing you to draw bezier curves and such inside the designer. To this end I think it has the Silverlight (Blend) user-interface beat. And then there are far more users with Flash already installed which of course you should always take into account.
But if you're building something that requires a lot of coding in the back-end then I'd strongly consider Silverlight. Silverlight has support for multithreading. Flash doesn't. Silverlight is built upon an abridged version of the .NET framework. Flash isn't. I think you'll find working with Silverlight code not only easier, but more powerful as well.