To present the situation in an overly simplistic way we could state the following: Applications to the right side of the spectrum, that is native development, have greater functionality and a better performance and user experience, but no cross-platform support. Applications to the left side of the spectrum have poorer functionality, performance and user experience but have excellent cross platform support. Of course, that is a very generalised statement and is not always the case.
On the far right of the spectrum we have approaches such as Objective C for iOS and Java for Android, the native language to the device. By coding natively we are able to access the full range of features that the device offers. On the far left we have approaches like Sencha Touch and jQuery Mobile. This allows us to develop cross platform applications using web technologies, but we are limited to what can be accessed by the browser.
Then we have everything that’s left in the middle, which can still be divided into more categories. On the more right leaning side of the middle there are approaches like Xamarin which utilise native code. Xamarin allows developers to code in C# and this is later converted into the native code of the different mobile platforms that are supported. Then on the more left leaning side of the middle there is PhoneGap. PhoneGap can be combined with Sencha Touch, but PhoneGap’s purpose is to create a bridge between the browser and the native functions of the device, allowing for a greater amount of access to features than a web application would typically have – placing it more towards the native side of the spectrum than Sencha Touch.
To summarise: Native applications use the native language of the device, web applications utilise the devices browser to display the application and hybrid applications use a mixture of these two approaches.
In the comments, khalid asked for a clear example of the distinction between the approaches and I think it would be useful to include that here.
This little infographic I made might help to show the difference between the different approaches:
There are a myriad of approaches to mobile application development and in the end you have to choose the one that suits you. I believe web approaches such as Sencha Touch will continue to grow in the future and rival the use of native development, but there’s certainly a lot of debate, as there is with anything, surrounding which approach is better.