Anup Shah on WPF and Silverlight (Programming Garden)

IT 's For You!!!

Tuesday, July 24, 2012

Silverlight vs. HTML 5


Most of the Silverlight Details are from this Silverlight Blog Post



Silverlight
HTML5
Can be programmed with a statically-typed .net language like C#, which is compiled and a lot of errors can be caught at compile time.
Requires extensive javascript coding to extract maximum functionality, which is not compiled and errors are prone, requiring extensive testing. Also requires extensive CSS/CSS3 knowledge and usage.
Silverlight is a plugin works the same in IE and all other browsers.
HTML5 is a work in progress, the standards body scheduled to complete specs in 2022, could work differently in different browsers. Also it might require using the DOM elements supported by the different browsers. Requires understanding of the browser sensibilities to the DOM elements, since all browsers are not standards compliant, especially IE.
UPDATE on 02/14/2011: HTML5 Spec to be completed in 2014, check this updated articlehttp://www.w3.org/News/2011.html#entry-9015
With newer versions of Silverlight released, newer browser versions should support the older versions of silverlight. If we build in Silverlight 4.0 and the application is running fine. If a newer version of a browser is released which will not support Silverlight 4.0( instead it supports a newer version of Silverlight), we may have to stop the users from upgrading to a newer version of browser.
HTML5 as it is now, is not supported in older versions of the browser like IE6 and IE7. HTML5 is also evolving and newer browser versions will have better support for HTML5, but it may work differently in different browsers, since there is no defined HTML5 standard as yet and it is a work in progress. But for the most part, HTML5 once built should work in newer versions of the browser.
Silverlight requires a plugin required to be installed in the browser, as of now it is not bundled into the browser. Some systems might not allow to install plugins.
HTML5 is built into the newer versions of the browser, no plugin required.
Easier to program complex and rich functionality with a known language like C#
Javascript is evolving faster, there are rich libraries like jQuery which provide rich functionality but not equivalent to Silverlight.
Silverlight video plays as long as the silverlight plugin is installed in the broswer. Will not work on Apple devices like iPad and iPhone.
Depending on the encoding, if the video is encoded in H.264, HTML5 will play the video in IE and Safari without installing any additional plugin. Also works on Apple devices like iPad and iPhone. Firefox, Chrome and Opera support Theora or Vorbis encoding, with support for WebM soon. Requires the video to be encoded in more than one codec to support all browsers.
Silverlight on smartphones is a disadvantage since it is resource hungry and not supported on all platforms.
HTML5 is lightweight comparatively since it is built into the browser and it does not take up as much resources.
Silverlight application performance will be better since it is already parsed and compiled into bytecode form.
Javascript performance is increasing rapidly with better javascript engines in the newer browsers, but since it is dynamically typed language it might not be the same as the statically-typed and compiled silverlight.
Intellectual Property Protection is better with Silverlight, since it is not easy to reverse engineer a silverlight application.
There is no easy way to obfuscate HTML and Javascript, so competitors can easily view the source.
Webkit layout engine based smartphone browsers like Safari, Chrome and Opera do not support Silverlight. Webkit is evolving fast as the mobile browser standard.
HTML5, Javascript and Css work well on Webkit based browsers. Webkit javascript core called SquirrelFish compiles JavaScript into native machine code, eliminating the need for a bytecode interpreter and thus speeding up Javascript execution.
Client side local storage using IsolatedStorage, upto 1MB, can be increased with permissions. Need to store in files and read from files. Data stored in the local storage can be encrypted for security.
HTML5 supports SQLLite, a lightweight client side database, can be saved and retrived as queries. Can store upto 5MB, not supported on all browsers. Currently only Safari, Chrome and Opera. Not supported in IE yet. Local storage data cannot be encrypted like Silverlight storage.
Silverlight can access the Webcam/Microphone on the users desktop, providing richer media experiences.
HTML5 does not support access to the WebCam/Microphone as of yet.
Silverlight videos content can be protected through DRM( Digital Rights Management).
HTML5 videos do not support DRM
Silverlight supports adaptive smooth streaming, Silverlight videos are encoded into 3 definitions, depending on the bandwidth availability, it will stream the appropriate quality, like the highest quality for the most bandwidth and the lowest quality for the least bandwidth.
No such support in HTML5
Silverlight media supports Information Overlay/Picture in Picture.
Not supported by default.
Great Stereoscopic 3D video support out of the box.
Supports 3D, but not as good as Silverlight.
Ability to broadcast live( video/audio) or streaming.
Not supported at this time.
Comes with a full set of 60+ pre-built controls with customizable styles, also with several third party enhanced control libraries available.
Need to work with available open source javascript plugins, or can build functionality using Javascript, HTML5 and CSS/CSS3. To get some of the functionality of advanced Silverlight controls, requires a lot of scripting work.
Powerful data visualization through charting controls and Silverlight Pivotviewer.
Plugins and libraries are available, but are not as rich as the Silverlight controls.
Flexible data support including databinding, binary XML, LINQ and local storage.
There is no 2-way databinding support, as well as support for LINQ.  HTML5 does support 2 flavors of local storage including SQLLite.
Provides Multicasting support, but it works on the UDP protocol, which has a limitation since it is blocked by most common firewalls. Also packet security needs to be built by the user since the packet delivered cannot be guaranteed to be the same as the packet sent. But great for interactive web applications.
No multicasting support yet.
Responsive UI with .net and Multithreading.
Can provide somewhat seamless experience through AJAX, but may not be the same as Silverlight.
Conflicting recent views from Microsoft about the future of Silverlight, creating some doubts in the minds of developers. Some confusion about MS going to keep improving on Silverlight or put more efforts into better HTM5 standards support.
HTML5 is evolving, so no way to know if there are going to be a lot of changes or even if it requires tweaking code with future versions.
Silverlight works on most browsers and versions.
HTML5 is partially supported in Safari, Chrome and Firefox. IE still does not support HTML5
Newer desktops, laptops, smartphones and tablets are coming with 2 or more processor cores. Silverlight on .net framework is capable of scaling upto 8 processor cores.
Javascript does not support true parallelism, it may come in the future, but not right now.
Silverlight provides rich functionality out of the box or third party control libraries, easy to upgrade an existing application with newer versions of the controls, since most controls are built with backward compatibility, can be upgraded easily by just referencing newer dlls.
To get all the functionality of the Silverlight controls, need more than one javascript framework, library or plugin. All of them are not fully tested, so need to upgrade several code sources to keep up with the upgrades. Also all upgrades might not have proper backward compatibility.
Silverlight can be written once and deployed to the web/desktop. ( Unfortunately cannot be deployed on Windows Phone 7 since it uses a different set of lightweight controls)
HTML5 is a markup language for the web. It needs a web browser to render itself.
Silverlight multi-touch support can take advantage of the next-generation hardware natively.
Depends on the multi-touch support of the browser.
Silverlight can offload media rendering to the GPU  for Hardware Acceleration. More than one control which supports Hardware Acceleration, 3D and Pixel shaders.
No Hardware Acceleration support as of yet. Plans to support it in the future using WebGL technology for the HTML Canvas. WebGL will bring Hardware Acceleration, 3D and pixel shaders.
Current web is built on the request/response architecture. A user makes a request for a page to the server, the server sends back the page to the client. After that the page remains static. With Silverlight, if there is a change in the content in the server, it can be easily reflected in the client with the Publisher/Subscriber architecture using net.tcp or WCF duplex pooling.
Not so easy and elegant to do with AJAX and javascript, requires lot more coding and also performance is slower.
Faster development with better IDE, tools and controls. Also use existing developer language strengths.
Development tools are evolving for javascript, HTML and CSS.
Silverlight content is not indexed by the Search Engines, not good for Search Engine Optimization.
HTML is Search Engine friendly, with HTML5 more semantic capabilities are being added for providing better content to the Search Engines.

No comments:

Post a Comment