PhoneGap also allows web developers who don't know Java or Objective-C (in the case of Android and iOS) an opportunity to create rich apps using their familiar technologies and an arguably quicker method for creating rich apps for most other developers. In the case of Android, it's as simple as creating a new project, including the PhoneGap jar and tweaking a couple of values in one of your activities to get going with PhoneGap. For iOS, once you install the PhoneGap software, you can create new PhoneGap projects through XCode, which have most everything configured for you.
If you want all the UI of your application to be in HTML, then PhoneGap is a great option, especially when paired with a mobile web library, such as jQuery Mobile or Sencha Touch. But if you want to create a hybrid UI with native and HTML components, then things can get a bit hairy trying to make the two coexist. At least in the case of Android, you must inflate any XML layout views in code and then insert them in the root LinearLayout around the default WebView if you want to do something like create toolbars above and below the WebView. The timing of exactly when you do this is also important, as the WebView can get sized incorrectly otherwise.
All Plugins are run on a separate thread than the UI, so if you want to modify any Views from within a Plugin, you are out of luck unless you take an alternative approach. One trick I have found is to register Broadcast Receivers in your Activity. Then, you can broadcast intents from your Plugin and manipulate the Views from inside the broadcast receiver of your activity. It's far from ideal, but it definitely works.
For now, I still think there's a lot of benefit in creating completely native rich apps. And seeing how the growth of mobile OSs such as Android has yet to stagnate, if you're a developer who wants to create rich apps, then it's definitely worth your time and effort to learn how to do it. The job market speaks loudly to this point, as native rich app developers are in hot demand right now and in hot tech markets like Austin, TX, you will have no trouble finding work as an Android or iOS developer. At the bare minimum, you should consider mixing native UI and HTML5, which as I stated earlier is not exactly straight-forward with PhoneGap and requires you to think outside the box a little.
Kyle is a senior software engineer specializing in web/Android development living in Austin TX. He's a self-professed "gadget freak" whose passion for mobile devices drove him to jump into the mobile industry in 2010. He enjoys the fast-paced nature of the mobile tech industry, as it provides him constant opportunities to learn and tons of motivation to do some innovation of his own.