La diferencia de “uno importante”?
Que una aplicación Cordova puede ejecutarse en Windows, Mac, iPhone, iPad, Android, Windows Phone y otras plataformas.
Una aplicación móvil nativa simple se ejecutará exactamente en una plataforma.
- ¿Qué empresa ofrece servicios de desarrollo de aplicaciones móviles asequibles?
- ¿Cuáles son las 20 principales empresas de desarrollo de aplicaciones de Android?
- ¿Cuáles son las principales cosas que han hecho que Candy Crush, Crossy Road, Clash of Clans y Angry Birds tengan tanto éxito?
- ¿Qué se necesita para crear una aplicación móvil y publicarla?
- ¿Conoces el desarrollo de aplicaciones móviles?
Esa es la diferencia más crítica entre los dos.
Muchas de las otras diferencias comúnmente citadas están relacionadas con el rendimiento o el aspecto de los controles (nativo versus personalizado).
En mi experiencia, un desarrollador sólido puede crear una aplicación móvil con Cordova que tenga un rendimiento indistinguible del de una aplicación nativa. El problema es que Cordova es fácil de usar, y obtienes muchos desarrolladores junior que crean aplicaciones en él. Y los desarrolladores junior son capaces de destruir el rendimiento de cualquier aplicación.
En cuanto a los controles nativos, esa es una decisión estética. La mayoría de las aplicaciones más populares usan una máscara personalizada de todos modos. Estoy escribiendo esto en la aplicación Quora, y no veo ningún control nativo en la pantalla. La aplicación de Facebook es similar. Dada la popularidad del skinning, realmente no entiendo la obsesión por los controles nativos, no cuando lo primero que hacen muchas aplicaciones es personalizar el aspecto de todos modos.
Una diferencia que creo que es relevante es que las plataformas nativas requieren que uses tipos estáticos. Creo que el desarrollo y el mantenimiento a largo plazo de un proyecto se mejora enormemente mediante el uso de tipos estáticos. JavaScript no los tiene, pero TypeScript sí, y puede usar TypeScript con Cordova, por lo que lo recomendaría.