Felizmente seré la voz disidente en este hilo. Comparto sus puntos de vista y creo que hay un movimiento creciente detrás del potencial de “escribir una vez, ejecutar en cualquier lugar” basado en estándares web y tecnologías abiertas.
A pesar de algunas fallas tempranas bien publicadas (casi todos apuntan a Facebook para presentar el caso), las tecnologías para soportar aplicaciones web e híbridas / móviles desde una base de código única están evolucionando REALMENTE rápidamente.
Lancé mi startup basado en el sueño de “escribir una vez, correr en cualquier lugar” hace 9 meses. Animado por avances como HTML5, famo.us, Polymer Web Components, Ionic, PhoneGap, etc., vi una convergencia de tecnologías madurando hasta el punto de que las aplicaciones universales finalmente serían una realidad. En verdad, ha sido una lucha dura con muchas frustraciones. Pero la historia de hoy es mucho mejor que hace 9-12 meses, y creo que dentro de 12 meses muchos de los argumentos en contra de las aplicaciones universales ya no serán relevantes para muchos tipos de aplicaciones.
- ¿Qué secuencia de instrucciones de pila usarás para rotar el contenido de los registros R0, R1 y R2?
- ¿Cómo aprenden los informáticos todo lo que necesitan saber para comenzar su propia compañía de software?
- ¿Qué software es realmente bueno para la arquitectura?
- ¿Qué carrera debería elegir, analista de big data o ingeniero de desarrollo de software en las pruebas? ¿Cuál es mejor?
- ¿Es JavaScript un lenguaje de programación imprescindible hoy en día?
Todos los argumentos formulados por los diseñadores y desarrolladores nativos de aplicaciones móviles son los mismos argumentos formulados por los desarrolladores de aplicaciones de escritorio cuando Internet estaba evolucionando. Las aplicaciones web eran demasiado tontas y poco sofisticadas; necesita una aplicación de escritorio para manejar la complejidad real de las aplicaciones comerciales, etc. En pocas palabras, las tecnologías web mejoraron mucho, a las empresas y los usuarios les gustó poder ejecutar sus aplicaciones en un navegador en cualquier tipo de computadora, y las aplicaciones web prosperaron . Las aplicaciones de escritorio no han desaparecido, y todavía hay categorías de aplicaciones que son demasiado sofisticadas para ejecutarse en un navegador (juegos de alta gama, modelado y renderizado 3D, etc.), pero seamos sinceros, muchas más aplicaciones que no se han movido en el navegador Lo mismo ocurre con las aplicaciones móviles nativas. Hay algunas aplicaciones que seguirán necesitando ser escritas de forma nativa, pero creo que a la larga, las aplicaciones móviles híbridas se convertirán en el enfoque dominante.
Es cierto que a los usuarios no les importa qué tecnología se usó para construir su aplicación, pero en general tampoco les importa qué tan cerca coinciden las aplicaciones con las pautas de diseño de interfaz de las plataformas respectivas que usan. A las personas les gusta la consistencia y la simplicidad en las docenas de aplicaciones con las que tienen que trabajar, y les gustan las aplicaciones que funcionan igual en dispositivos y computadoras. Cuando cambié de iOS a Android hace unos años, instalé inmediatamente la misma lista de aplicaciones que había usado en iOS, y me encantaron las que se veían y funcionaban igual en ambos dispositivos.
Aquí hay al menos tres patrones de diseño que se han convertido en agnósticos de plataforma, contra los cuales los * mismos * detractores han criticado:
- DISEÑO PLANO: es más rápido, más fácil y la simplicidad de amor del usuario.
- MENÚ DE HAMBURGUESAS: Una vez más, la simplicidad y la consistencia del amor del usuario.
- TARJETAS: Las tarjetas están en todas partes (y escalan de dispositivos grandes a pequeños muy, muy bien)
Incluso las nuevas aplicaciones universales de Windows 10 han cambiado al menú de hamburguesas (a la típica tormenta de granizo de diseñadores y desarrolladores que denuncian la horrible adopción del patrón * de denominador menos común *. No dejes que todos los * expertos * te echen humo. La mayoría de las tecnologías que han proporcionado mejoras continuas e incrementales que han sido ampliamente aceptadas por la comunidad mundial han sido Internet, en particular relacionadas con la web.
A continuación, presentamos algunos de los desafíos difíciles que enfrentará hoy en día para construir una aplicación móvil híbrida y web:
Animación : en general, la animación es muy importante para establecer una sensación moderna para aplicaciones, navegador o dispositivos móviles, pero especialmente dispositivos móviles. Muchas de las primeras técnicas y bibliotecas de animación no eran muy efectivas, y los primeros dispositivos móviles tenían poco soporte para animaciones aceleradas por hardware en kits de navegador. Hoy en día, en la última generación de dispositivos que se ha resuelto en gran medida con un mejor hardware, mejores kits de navegador y mejores bibliotecas optimizadas para dispositivos móviles híbridos (como VelocityJS). Aún así, si está intentando apuntar a dispositivos Android 2.x, etc., olvídelo.
Rarezas del navegador : nada nuevo aquí, pero las peculiaridades del navegador móvil han sido incluso peores que las peculiaridades del navegador de escritorio. Los dispositivos informan las dimensiones de la pantalla de manera diferente, los eventos de cambio de orientación son inconsistentes, etc. La única buena noticia aquí es que si excava en Internet, la mayoría de estos problemas han sido identificados y hay algunas buenas bibliotecas que enmascaran los problemas, pero requiere * demasiado * mucha investigación y tiempo. Esperemos que esto mejore a medida que mejoren los navegadores en dispositivos móviles.
Datos sin conexión: es muy difícil poder iniciar y ejecutar una aplicación móvil híbrida completamente fuera de línea, pero está mejorando. Muchas tecnologías de datos se han alejado de la consulta y ahora están utilizando sincronización (Firebase, CouchDB / PouchDB, MeteorJS MiniMongo, etc.) que funcionan sin problemas en los estados conectados / desconectados. Desafortunadamente, a partir de este escrito, ninguno de ellos persistirá adecuadamente entre las instancias de la aplicación. Tengo confianza en que esta es una nuez que se romperá pronto (te estoy mirando Firebase).
UI Widgets : este ha sido mi mayor obstáculo. Encontrar un conjunto de widgets de UI bueno, completo y bien probado que funcione en navegadores de escritorio y móviles y en diferentes tamaños de pantalla (y que no se ve ni se siente terrible). No puedes hacerlo tú mismo, es demasiado complicado y demasiado caro. En mi humilde opinión, Ionic llegó primero con un kit bastante completo de widgets de interfaz de usuario que funcionan en todos los dispositivos. Si te gusta Material Design (personalmente me encanta), Angular Material está a punto de llegar a la versión v1.0 y se ve fantástico.
Patrones de diseño universal : esto ha sido un problema en el pasado, pero se ha resuelto principalmente. Hay toneladas de patrones universales para navegación, presentación de datos y alertas / superposiciones, etc. que le permiten diseñar una aplicación con la que el usuario se sentiría muy cómodo en cualquier dispositivo. Los diseños de tarjetas y mampostería se adaptan muy bien a las orientaciones y tamaños de pantalla, las listas y los paneles de detalles pueden colapsarse de lado a lado a superposiciones, etc.
Personalmente, me encanta React, y React Native parece interesante, pero en términos de mis propias inversiones, ahora estoy enfocado en las tecnologías compatibles con Google, que incluyen Angular 2, Angular Material, Polymer Web Components y Material Design en general. Google, en mi opinión, es la única compañía tecnológica importante que tiene y continúa demostrando un compromiso serio con las aplicaciones universales. El hecho de que Material Design es una estrategia de diseño de aplicación * universal * que cruza aplicaciones móviles y de escritorio es un testimonio de esto.
Ciertamente no quiero endulzar la complejidad y la dificultad de “escribir una vez, correr en cualquier lugar” tal como está hoy, pero puedo decirles que es muchísimo mejor de lo que era hace 12, 24 y 36 meses. . Y está mejorando a un ritmo increíblemente rápido, un testimonio de las legiones de diseñadores y programadores que entienden que tener que escribir la misma aplicación una y otra vez para diferentes plataformas móviles es una locura, y tiene casi * nada * que ver con servir Las necesidades de la mayoría de los usuarios.
Con la excepción de la colección de estándares de “web abierta”, la competencia entre compañías tecnológicas asegura que los dispositivos y las plataformas no “convergerán”. Sin embargo, los consumidores y las empresas fuera de la tecnología tienen el poder real ahora, y la tecnología sigue al dinero. Las aplicaciones universales se convertirán en realidad. Similar al movimiento hacia la computación en la nube, las realidades económicas dictarán que prevalecerán las aplicaciones universales.