HTML(5)+JS replaces Silverlight

Microsoft’s Silverlight was initially a competitor to Adobe’s Flash technology. This is a rich internet application framework for developing web applications with tight developer control over user interface, allowing for complex, desktop-like applications. They can also provide powerful back-end data interactivity and often allow development of stand-alone, offline “Smart Apps” which can pre-cache data, and live outside the browser.
Nonetheless, it requires a plug-in and does not run natively in the browser. It grew into an issue once portable devices had become popular. Most users prefer using websites where you do not need to install anything new. Especially, after HTML(5) partial release made JavaScript more powerful and able to completely replace such a technology as Silverlight.
There have been many changes in the fate of Silverlight so far: Microsoft will support it only until 2021, DevExpress will not put Silverlight controls into a separate product anymore, Google has no further plans to fix compatibility in Chrome, etc. Fewer and fewer customers are willing to use Silverlight in building new web applications. The main focus of web development now is one-page applications on JavaScript+HTML(5) using API services.html5+js_logo
Here are a few thoughts and highlights about the two technologies:

  1. User experience (compelling UI, accessibility, intuitiveness /ease-of-use, accessibility from multiple devices, accessibility from multiple platforms): you can create large and good-looking applications with Silverlight, but the user will still need to install a plug-in on device. Now that JavaScript is a mainstream, there are a lot of libraries with cross-browser controls. You can build almost as complex applications as with Silverlight even with JQuery-UI. Media tags in HTML(5) can be used instead of Silverlight players.
  2. Infrastructure (easy/flexible deployment, monitorability): You can produce bundles and use RequireJS to load your libraries, implement some kind of dependency injection, maintain the cache and versions. HTML(5) Local Storage can be used for the local repositories as in Silverlight.
  3. Performance (client-side resource usage, asynchronicity, UI responsiveness, initial load times): With JavaScript all requests can be based on callbacks, so you can make UI changes while waiting for response. In addition, you can load scripts when users are working with some parts of application, and use lazy loading. All of that may improve loading performance of application and make it faster than Silverlight.
  4. Code/Architecture (simplicity, maintainability, flexibility, power, testability, feedback cycle, learning curve, potential efficiency, extensibility): You can find a lot of examples of classic patterns usage in JavaScript. Moreover, the patterns were specifically created for JavaScript applications. Since it is a huge fast-growing community, the amount of developers who work with JavaScript is unconditionally bigger than the one for Silverlight. That’s the reason why you can find the answer to almost every question popping up in the development process. In case you use popular libraries you can update the software with a newer version without compilation. There are unit test tools and with them you can create stable applications. Developers can start learning with simple notepad and default browser. You don’t need the Silverlight spy, only browser or free tools such as Firebug.
  5. People (limited number of required skills, mindshare, documentation, community support, commercial support): As I’ve mentioned before, it is a fast-growing community. JavaScript and HTML(5) are open standards. You can find as much information, suggestions, patterns, best practices, as you wish. Maybe even more than that.
  6. Strategics (future-proof, standards-compliant, differentiator, backing, vision): First of all, the mobile story (yet again!) pretty much kills it. Android and iOS do not support it. We already know it’s never going to work on iOS and as long as it doesn’t work on iOS, Android has no reasonable grounds to provide any support either. While internal business applications are certainly a large part of what we’re going to do in the next couple of years, we’re also going to build things that are available publicly and to a large variety of people. Going with Silverlight for the internal applications and HTML(5) for the public-facing applications wouldn’t be very cost-efficient on top of everything, because we have to train our developers for both of the case scenarios. And it wouldn’t make much sense anyway since HTML(5) is a great fit for internal business apps as well.
  7. License, Cost (do we have access to the code?): It is standardly supported by browsers. All you need is a browser and the notepad. You can of course buy IDEs and some libraries, but you do not have to do it in the first place.
  8. Tools: For Silverlight it is the old Visual Studio, and an optional choice between developer’s SDK and the Silverlight spy. For HTML(5) you can use everything from the notepad to Web Storm. More libraries, more tools are available. The majority of internet giants have separate JavaScript APIs and SDKs. There are so many tools and options that this can easily turn into a disadvantage rather than an advantage. “You must choose, but choose wisely”.
  9. Security: the only one part where Silverlight is unquestionably better. You don’t really have to worry about common issues such as XSS, CSRF and other vulnerabilities that are so frequent in web-development.

JavaScript and HTML(5) have enough power and tools to replace Silverlight. There are a lot of questions and issues but the community will find out the answers. It is not the matter of “Should we use Silverlight or HTML5” anymore. We’d better use HTML(5)+JavaScript because the future is behind it.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>