I was at DevReach 2012 conference in Sofia, Bulgaria on 4th and 5th of October. DevReach is mostly oriented towards Microsoft’s technologies. I am with a Java background, currently writing applications with the full JavaScript technology stack. So my purpose there was to find out how Microsoft has embraced the standard technologies (I will use this term for the three techs - HTML5, CSS3, and JavaScript – till the rest of the post) to build native applications. At the end I saw kind of convergence between web, mobile and desktop development with major role playing, guess who.....JavaScript.

Here are some theory and conclusions.

1. Make a difference between mobile sites and mobile applications
Mobile Sites
Specially designed web sites with responsive design techniques that fit well on any screen sizes. Central distribution model, run inside browser and cannot work offline, no native look and feel.
Mobile Applications
Marketplace distribution model, run as native application with native look and feel in offline mode.
Conclusion: Users prefer mobile apps because of the better performance, and native look and feel. Moreover, they are more willing to pay for something that is downloaded from a marketplace.
Of course, companies want to satisfy these needs.

2. Be aware about different types of mobile applications
All mobile applications have native look and feel. But how this is achieved is a different story. There are several types of mobile applications that differ according to the way they are built – for single or multiple platforms at once - and according to the presence of access to system resources.
Mobile Applications
Built for many platforms at once with standard technologies, run inside the browser, no access to system resources. Native look and feel achieved with Mobile JavaScript libraries like jQuery Mobile.
Native Mobile Applications
Built for single platform, run inside the native container and have access to system resources. Native look and feel achieved with platform's SDK.
Hybrid Mobile Applications
Built for many platforms at once with standard technologies. In the same time they still run inside the native container and have access to system resources.
Conclusion: The native mobile applications could be still the best choice but they do not scale from business point of view. Companies cannot afford building and maintaining for several platforms, so they prefer “write once, run anywhere approach”, which is achieved with hybrid applications developed with standard web technologies.

3. How to develop Hybrid Mobile Applications?
Basically we have two approaches to do it.
Direct Communication with Native API
Leverage the underlying platform directly with the help of direct communication between JavaScript and the native platform's SDK (e.g. UIWebView for Apple, WebView for Androind, WebBrowser for Windows)
Communication with Native API via Abstraction Layer
An abstraction layer isolates the application from the specifics of the native APIs. Such abstraction layer is provided by applications like PhoneGap. It allows you to achieve “write once run anywhere” paradigm. However, one must keep in mind build and packaging phases which also require setting all the tools for particular platform. So if one want to skip these configurations could use web based services like PhoneGap Build by Adobe
4. The convergence between web, mobile and desktop development
As Burke Holland said on one of the lectures: "The Web is Native". There is a trend towards bringing the concept behind hybrid mobile applications to the desktop. Industry is completely motivated about cutting development costs and being able targeting platforms that will be new kids on the block in the future. Here is what different vendors are doing:
Microsoft and Windows 8
WinRT is accessible with standard technologies like JavaScript and their proprietary WinJS API. One could write desktop applications with the standard technology stack. They can be published in Windows Store, downloaded on demand, and used as native desktop application. It is very much the same process as the one used for development of mobile applications.
Google and the Packaged Applications
Packaged Applications by Google have the same intention. Write applications with standard technologies and being able to access the system resources. Until recently these apps were working only in the presence of started Chrome browser, but now this is not a requirement anymore.
Mozilla and Firefox OS
It allows applications built with standard technologies to access the system resources directly. This is the same as Windows 8 direction and Google Packaged App direction. The difference is that the idea here is not implemented as an afterthought. The OS is built with this idea in mind since the very beginning.
5. The Moral for the JavaScript Developer

What is the moral for a JavaScript developer?
Ok, just keep learning JavaScript and know that the technology can be used to write application for any platform out there, using a variety of different approaches. Do not let be confused and defocused by languages like TypeScript, Dart, Coffescript, or another. If sometimes it is a requirement for you to write in such compiled language do not worry about it. If you have advanced level in JavaScript it will not be that hard for you to get into speed in no time with anything that compiles to JavaScript.

6. References
Apart from the great lectures at DevReach 2012 I found some other nice resources:

# Resource Name
1 Mobile Sites vs. Mobile Applications
2 Types of Mobile Applications
3 What is Hybrid Mobile Applications
4 Windows 8 Store Development Center
5 Chrome Packaged Apps
6 Mozilla Firefox OS
7 Phone Gap
8 Phone Gap Build