As I just mentioned I've been hearing Flash "experts" say all kinds of things about Silverlight and rarely, rarely, rarely are they ever true. For instance, two days ago I actually heard someone say "...then you have Microsoft's Silverlight and what a piece of junk. I mean... come on... it doesn't even do video! How can you expect to compete with Flash when you don't even support video!" Of course, when you say something with a smile and the right tone, you immediately get people to agree with you. In reality, however, not only will Silverlight 1.1 support video, Silverlight 1.0 supports video (in all kinds of awesome ways). Furthermore, video is one of the core features of Silverlight! In fact, Scott Guthrie over at Microsoft has an awesome blog entry published last night discussing some of the great media intensive features Silverlight brings (he also shows clients actually using Silverlight!) So, I'm not sure were people get their information (an Adobe forum??) but it's clearly a product of propaganda, not of truth. Perhaps people should watch demos of a technology and ask a Silverlight expert about the technology before listening to the anti-Microsoft Flash advocate's explanation of their competition. It's just a thought. Actually, that idea could go into every area of life.
In one sense Silverlight isn't going to touch Flash. That is, in the Silverlight 1.0 sense. This version of Silverlight doesn't do anything but video and graphics. If you want to do more, you're going to be building your components by creating them from using graphics components. However, in another sense there is no competition between Silverlight and Flash because of a simple DOA: Flash is Dead On the Arrival of the next Silverlight. Period. If you want to do comparisons, then it may be better to compare Silverlight with Adobe Flex. You can't have a fair comparison between Silverlight and Flash. That's like comparing Firefox to Internet Explorer. Firefox is a development integration and web suite where as Internet Explorer is a COM component thrown into a shell application. Flash does all kinds of awesome animations and graphics, but is slower than even Java (and that's slow!) when it comes to applications whereas Silverlight is WPF for the Web backed by the power and depth of the .NET framework and by CLS languages. Flash requires that you cough up hundreds of dollars to use an extremely non-intuitive timeline based system whereas Silverlight allows you to use anything from notepad to Visual Studio and follows a much more intuitive event based model (Flash can do events and SilverLight can do timelines, but I'm talking in general). Furthermore, Silverlight is designed after the XHTML/CSS and WPF model of design and development separation that allows developers to do what they do best and designers to do what they do best at the same time in the same project with no conflicts. Where as in the XHTML/CSS model, developers create raw XML and designers create CSS designs and in WPF/Silverlight developers breath the life of logic into a solution while the designers are breathing the life of beauty in to it. One is using Visual Studio and the other is using Expression Blend. Or one is using Visual Studio Express and the other is using... um... Visual Studio Express. You don't need expensive tools.
Something I don't think people realize that Silverlight isn't all that new. It's basically "WPF for the Web". Personally, I think the naming is kind of weird. I mean, it seems completely backwards. WPF/E was the project codename and Silverlight is the product name. That sounds like the opposite of what Microsoft's naming people usually do. You would think that Silverlight would be the project codename and that WPF/E or "WPF Web Edition" or something would be the final product name. It's with the name of Silverlight that people get the idea that Silverlight is a completely new Microsoft technology, when in reality it's simply "WPF for the Web". You need to learn WPF before you get near Silverlight (unless you just want to be a hacking coder, not a professional) and you really need to learn .NET development before you learn WPF. It's an incredibly powerful technology that seamlessly fits in with the many other .NET technologies. If you try to jump into Silverlight without learning WPF you won't have a clue what's going on. You will be completely confused why the technology even exists and probably go off telling people that Microsoft made a new useless technology simply to take over a new market. I expect that to be exactly what the Flash people will be doing. Also, if you try to learn WPF (or ASP.NET or WCF or any other .NET technology) without understanding the fundamentals and paradigms of .NET, you will probably hate those technologies and complain about how hard .NET is to learn or use. I've seen this before and it's always based on ignorance of .NET or confusion of .NET. So, if you go to hit up Silverlight, make sure you understand WPF and .NET first. I don't mean you "did some projects" WPF or .NET. Your experience has nothing to do with your skill. Did you study the paradigms and philosophies of .NET and WPF? Do you understand dependency properties? Routed events? XAML? No? Then you need to fulfill the prerequisites first.
- Silverlight 1.0 Download
- Expression Encoder 1.0 (also released today -- where do people come off saying Silverlight doesn't do video?)
- Scott Guthrie's Blog Entry on Silverlight-- very, very good! READ THIS BLOG ENTRY. He mentions Silverlight for Linux too.
- Windows Presentation Foundation Unleashed by Adam Nathan
- Framework Design Guidelines (the only .NET book you ever really need-- learn .NET right!)