¿Cuáles son las ventajas y desventajas del desarrollo HTML5 / CSS3 / JavaScript sobre el uso de Swift y Cocoa Touch para el desarrollo de iOS?

Mirando los detalles de la pregunta (en comentarios de nivel superior), la respuesta corta es H / C / J está bien para muchas clases de desarrollo móvil y generalmente es más simple de codificar que las opciones de S / C. Funcionalmente, hay relativamente pocas cosas que no se pueden lograr con H / C / J + PhoneGap (y otros productos complementarios).

Como se mencionó en los detalles, mucho depende de sus requisitos. Si el rendimiento es una preocupación importante o si la aplicación necesita usar funciones de hardware / software en el lado móvil que no son compatibles con PgoneGap o herramientas similares, puede ser necesario crear extensiones personalizadas. Esto complica la decisión de compensación porque en algún momento la ventaja de trabajar en un compilador nativo (y un solo idioma / depurador IDE + integrado) superará la simplicidad y el inicio rápido que ofrece H / C / J y su experiencia actual. En otras palabras, se vuelve más rápido y más fácil aprender S // C.

Volviendo a la pregunta original (de ninguna manera exhaustiva y basada en gran medida en mis opiniones al codificar usando estas herramientas más comentarios / comentarios de otros):

H / C / J

Pros:

  1. fácil de usar para aplicaciones básicas que no requieren alto rendimiento o acceso a funciones especiales del lado del cliente;
  2. usted (autor de la pregunta original) ya conoce las herramientas;
  3. Los compiladores JIT y las extensiones de PhoneGap (entre otros) continúan mejorando aún más las brechas de función, seguridad y rendimiento;
  4. “Suficientemente bueno” para muchas clases de aplicaciones y se ajusta bien al paradigma de KISS.

Contras:

  1. la falta de una estrecha integración entre los componentes puede hacer un mayor uso de soluciones alternativas y “trucos de código”;
  2. las herramientas son inferiores a las opciones de S / C (en particular, depuradores y ayudantes de refactorización de código);
  3. El “desajuste de impedancia” no solo entre el cliente y el host, sino también entre los componentes del cliente puede generar muchas conversiones de datos y complicaciones de código;
  4. Caprichos de Javascript (personalmente, encuentro la mayoría de estas preocupaciones menores, pero pueden ser un factor decisivo para algunos desarrolladores);
  5. las aplicaciones cliente / shell del navegador frente a las aplicaciones cliente nativas introducen seguridad adicional, memoria y otras fuentes de problemas;
  6. posibles problemas con la aceptación de la tienda de aplicaciones (principalmente en relación con PhoneGap y extensiones);
  7. falta de estándares y pautas de práctica aceptadas del fabricante y de terceros frente a la documentación y capacitación de S / C (es probable que otros no estén de acuerdo con este punto o lo declaren discutible; admitiré que es más una preocupación subjetiva que algunos de los otros puntos).

CAROLINA DEL SUR

Pro

  1. compiladores nativos con buenas herramientas y soporte de terceros;
  2. muy buen rendimiento y capacidad para acceder a casi todos los componentes de hardware y software en el lado del cliente con un manejo mínimo de casos especiales;
  3. estándares relativamente grandes (y en crecimiento) y pautas de mejores prácticas de proveedores y terceros;
  4. estrecha integración de componentes;
  5. excelentes mecanismos de seguridad y control de acceso integrados en las soluciones;
  6. La integración de cliente y host puede ser más simple si se utiliza un lenguaje y marcos comunes.

Contras

  1. la codificación es más compleja (en la mayoría de los casos; ver arriba la advertencia anterior sobre el punto de ruptura);
  2. curva de aprendizaje relativamente empinada para principiantes;
  3. puede impulsar las preocupaciones de optimización de ajuste antes que los problemas funcionales: los estilos de desarrollo son significativamente diferentes, lo que hace que los experimentos y prototipos sean más complejos y costosos (por lo tanto, es menos probable que se realicen).

Solo mis dos centavos. Comentarios y comentarios apreciados.

Definitivamente depende de la aplicación que intentes hacer. Si está haciendo algo con mucho contenido estático que no necesita aprovechar muchas de las capacidades del iPhone, entonces HTML podría funcionar bien para usted. Sin embargo, si está tratando de usar las funciones de Cocoa Touch como HealthKit o Extensibility, entonces el objetivo C es el camino a seguir. Cada actualización de iOS viene con excelentes API nuevas que realmente pueden hacer la diferencia entre una buena aplicación y una gran aplicación, y la programación nativa es la única forma en que podrá usarlas.

Ni siquiera importa para los juegos 🙂 Echa un vistazo a fingerball.mobi en el navegador de tu dispositivo; puede ser un juego en 2D, pero está ejecutando un motor de física bastante decente que simula muchas fuerzas y aún alcanza 60 fps en cualquier dispositivo nuevo .