For a long time, I was contemplating on the best strategy for client application development, mobile clients, or desktop client applications. The problem with native client application development is usually the difficulty of building the UI and applying changes to it over time. Since I did both web development and client development I am accustomed in the web area for the ease of UI creation as well as applying changes to it. In web development all you have to do is have a good designer create something very cool for you, turn it into XHTML/CSS/JS and you have got your UI ready. If you have changed then just modify the HTML/CSS and you are done. For native clients, it is a whole different story. Although UI frameworks and libraries have evolved greatly over time still programming the UI in a structural or object-oriented 3rd generation language is slow and cumbersome needless to say about changes. And I have to add that it never comes out so lovely as web-based designs.
Adobe Air has introduced a new programming pattern with their ability to make a web application behave like a native client application while all the UI hassle is taken away. Basically, they provide a window frame and inside of it you have a special web browser (I guess WebKit) and within the web view, you can have all your beautiful web stuff while integration to the logic and general native application capabilities is easy. This development pattern can be applied to many other development frameworks including QT which has embedded WebKit capabilities, Android Java, Windows Mobile IE view, and others.
Another cool thing you get with this approach is the ease of platform porting where the UI is already compatible with other platforms since it is based on Web standards.