The trend toward using Web technologies for application development, even outside of the Web browser, is here to stay. The recent revelation that Windows 8 will have provisions for writing apps using the HTML5 technologies merely cements this shift in the development world. So the question is: How are you going to deal with it?
HTML5 changes the game by adding support for things like video streaming, multithreaded and asynchronous processing (via the "Web Workers" message passing system), direct communications through sockets, and more. While the idea that a document format standard has these capabilities may be horrifying to some (including myself), this is the direction that HTML is headed in, and it has backing from Apple, Microsoft, Google, Mozilla, Adobe, and more. In addition, the various frameworks out there make it very easy to directly connect Web applications to backend Web services. As a result, HTML5 is now as capable as technologies like Silverlight, Flash, Flex/AIR, and JavaFX for many tasks (though there are still some things that those technologies do better).
Here are the technologies that you will want to learn to get started:
- HTML5: While HTML5 may not be a fully finalized standard yet, it is not changing very much at this stage. Right now, it is usable and has a decent amount of implementation in browsers. You should start learning it now.
- CSS: If you are not already familiar with CSS, now is a good time to learn it. Browser support keeps improving, and Internet Explorer 6 is now a small enough portion of the market that many developers feel safe in ignoring it.
- Web services: Every major server-side development language has a framework or set of libraries for easily producing Web services, such as Windows Communication Foundation (WCF) in .NET. It should not take much learning to understand the basics. You will want to especially learn how to produce JSON output, which is quickly becoming the lingua franca of Web applications. Also make sure that you understand RESTful Web services. While they may be more work to consume than SOAP services are in a modern development environment, they are much more universally accessible.
- jQuery: jQuery has become the client-side development framework to use; it seemingly can do it all. With an extensive set of plugins, if there is a client UI trick you need to try, there is a good chance that jQuery can do it for you.
These technologies form the basis of a number of different development systems now. Mobile web sites are a good way to reach the most mobile users with the least amount of effort. Tools like Appcelerator's Titanium allow you to use web technologies within its system on a number of platforms, including mobile and desktop. Other systems, like OutSystem's Agile Platform (disclaimer: I have a number of ties to them that are explained in my disclosure) wrap libraries like jQuery to make developing web apps for desktop or mobile use extremely easy. Windows 8, while details are still murky, looks like it will be using Internet Explorer 9 (or whatever version is current by then) as a runtime environment around HTML5 technologies to act as local applications outside of an obvious browser window. One would presume that these apps would have enhanced privileges, access to local resources, and other opportunities to behave more like native applications.
Educating yourself about the above listed core technologies is a smart move, and after Microsoft's BUILD event in September, we should know enough about the company's plans for Windows 8 to fine tune the strategy and discover what else needs to be learned.
Justin James is the Lead Architect for Conigent.