¿Existe una manera conveniente de construir una aplicación web y móvil desde una única base de código? ¿Qué tan lejos es el momento en que podremos tener una sola base de código conveniente?

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.

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.

El equipo de AngularJS de Google dio un paso importante en la historia de reutilización entre la web y los dispositivos móviles. Su Angular 2.0 está diseñado de tal manera que puede usarlo en la web (como era posible con Angular 1.X), pero también puede usarlo con NativeScript para entregar una aplicación móvil nativa mientras reutiliza toda la lógica comercial del aplicación escrita en JavaScript o TypeScript. Luego, las partes de la interfaz de usuario que desea reutilizar también están disponibles mediante el uso de directivas angulares. En la web, esas directivas utilizarán los componentes web, pero en los dispositivos móviles representarán los componentes nativos de la interfaz de usuario de NativeScript.

De esta forma, podrá reutilizar las piezas que desee, pero también proporcionará una apariencia nativa para su aplicación móvil escribiendo la IU específica para apuntar solo a los dispositivos móviles.

Espero que esto responda tu pregunta. Hay una publicación de blog más detallada disponible en el blog AngularJS: creación de aplicaciones móviles con Angular 2 y NativeScript y un excelente video de 20 minutos sobre cómo puede usar Angular 2 y NativeScript para compartir código entre la web y la aplicación nativa.

siga AngularJS y NativeScript para obtener aún más actualizaciones sobre este tema durante 2016.

Te daré mi opinión personal.

Dudo que la UI / UX de múltiples dispositivos converja. Creo que los datos y las aplicaciones serán cada vez más abstractos y de alguna manera podrán conectarse a cualquier interfaz de usuario.

Con el fin de unificar la interfaz de usuario de escritorio, web, móvil, relojes, etc., implicaría un gran esfuerzo para romper los intereses de las empresas, la base de código de los desarrolladores y las opiniones de los diseñadores, pero en su mayoría problemas comerciales.

Pero sí, podríamos ver una simplificación o diferencias cada vez menores de cómo funciona la interfaz de usuario.

En cuanto a la tecnología, es muy difícil tener una base de código para todo (al menos como la solución de facto). Internet seguirá cambiando y los dispositivos se multiplicarán. Por varias razones, dichos dispositivos se seguirán creando utilizando diferentes idiomas y los idiomas nativos siempre obtendrán soluciones de visualización web. Dado que la experiencia del usuario es lo que siempre guía el éxito de los productos, gana la solución con un mejor rendimiento.

Veremos más y más soluciones de aplicaciones híbridas, pero siempre se pondrán al día con el resto.

No estoy siendo pesimista aquí, creo que esto es muy emocionante. Pone la responsabilidad en nuestras manos y nos hace pensar “¿qué puedo hacer para mejorar esto?”. El desarrollo de código abstracto y reutilizable será cada vez más difícil. Solo espero que esto signifique que nos divertiremos más y más haciéndolo 🙂

PD: Soy un gran fanático de React Native, Phonegap, Ionic y todo lo demás y siempre espero usarlos siempre que sea posible.

Si bien estoy de acuerdo en que las capacidades de html5, css3 y el último JavaScript (ES5 y el próximo ES6) han dado a luz aplicaciones web que son iguales a sus alternativas nativas, debo decir que soy bastante escéptico de que las plataformas converjan.
En primer lugar, para permitir que las tecnologías que ha mencionado (y sin duda sean los candidatos más serios para el desarrollo de aplicaciones móviles a través de JavaScript), los proveedores de plataformas móviles populares tendrán que brindar un soporte mucho mejor para su WebView (especialmente Android ) Sin él, las aplicaciones móviles creadas con Ionic, Angular, React, etc. no son lo suficientemente integradas. Lo que puede lograr fácilmente escribiendo el código de su aplicación de forma nativa en iOS y Android, y tampoco es un requisito tan sofisticado.
Esto, creo, no sucederá pronto, ya que las empresas han gastado demasiados recursos para desarrollar sus plataformas y SDK para simplemente abandonarlo y / o introducir HTML / JavaScript como una alternativa de “navaja suiza” para sus ecosistemas de aplicaciones. Entonces, la razón es más política.

Ciertamente no percibo la tendencia que mencionaste. Tomando como ejemplo las plataformas de Apple, OS X ciertamente ha adoptado los aprendizajes de iOS, pero de ninguna manera los paradigmas de la interfaz táctil son intercambiables con los paradigmas del mouse / trackpad + teclado.

Algunos se han referido a React Native, que es la primera tecnología que tiene una posibilidad plausible de lograr esto. Sin embargo, todavía tiene limitaciones; en particular, el marco es “aprender una vez, escribir en cualquier lugar” – NO “escribir una vez, ejecutar en cualquier lugar”. Históricamente hablando, este último ha fallado bastante consistentemente. Eso se aplica incluso a un único paradigma de interfaz de usuario (por ejemplo, computadora de escritorio, O móvil, no ambos) que abarca múltiples sistemas; Todavía es difícil escribir una aplicación de Windows, Linux y Mac y aún es difícil escribir una aplicación de Android, Windows Phone e iOS. De lo que estás hablando es de un paso más allá, con una base de código que admite tanto la experiencia de escritorio (¿y específicamente la Web?) Como múltiples plataformas móviles.

El comentario más importante que podría hacer sobre esto es: recuerde mantenerse enfocado en la experiencia del usuario por encima de la tecnología. La mayoría de los usuarios no se preocupan en absoluto por la tecnología utilizada para crear sus aplicaciones; les importa lo bien que funcionan, lo que incluye rendimiento, confiabilidad, sensibilidad de diseño, belleza y muchas otras propiedades de alto nivel. La mayoría de los frameworks o tecnologías que intentan proporcionar funcionalidad multiplataforma / cross-idiom necesitan inyectar capas de direccionamiento indirecto entre el programador y el hardware que generalmente reducen el rendimiento y limitan el grado de integración / comportamiento nativo del sistema que se puede lograr.

Esto es incluso cierto para React Native, pero ese equipo sabiamente ha logrado un gran equilibrio al comprender esta compensación: no pretenden ejecutar la misma base de código en Web y Mobile, sino que intentan mantener los gastos generales a un nivel aceptable y tener un posibilidad de tener éxito como marco móvil multiplataforma. No puedo subestimar los desafíos involucrados (y, por lo tanto, mi mayor respaldo a la calidad del equipo de RN), incluso solo la plataforma Android tiene una cantidad sorprendente de inconsistencias y limitaciones en comparación con iOS, y la prueba real vendrá cuando el La versión de Android está disponible para evaluar.

Si observamos el escenario actual de desarrollo de aplicaciones, es difícil encontrar un marco de desarrollo de aplicaciones que pueda abordar efectivamente el requisito de construir una aplicación móvil y web a partir de una base de código único. Pero, si considera los marcos de desarrollo de aplicaciones multiplataforma contemporáneos, como el teléfono, etc., ofrecen una gran comodidad en el desarrollo de aplicaciones para diversas plataformas. Los marcos basados ​​en HTML5 se pueden aprovechar para desarrollar las aplicaciones web y el mismo código se puede utilizar en gran medida también para las aplicaciones móviles.

Sin embargo, requiere un ajuste fino para la plataforma móvil en la que desea ejecutar la aplicación, pero el mismo código se puede usar hasta 60% – 90%. La mayoría de los marcos de desarrollo de aplicaciones multiplataforma usan HTML5, SS y JavaScript. Sin embargo, el escenario no sería el mismo dentro de un año y seguramente habrá marcos de desarrollo de aplicaciones que respaldarán por completo la idea de escribir una vez y usar en cualquier lugar.

Outsource2India es líder del mercado en ofrecer servicios de desarrollo de aplicaciones móviles y web a sus clientes en todo el mundo. Ofrece servicios de desarrollo de aplicaciones orientados a la calidad con una increíble rentabilidad, tiempos de comercialización más rápidos y tiempos de respuesta rápidos. Para obtener más información sobre nuestros servicios, inicie sesión en Desarrollo de aplicaciones móviles – Outsource2india

Soy más un programador / ingeniero que un desarrollador web, por lo que podría no ser la persona adecuada para preguntar. Personalmente, creo que hasta que podamos obtener la experiencia MISMA EXACTA de HTML / JS / CSS, como lo hacemos con el código 100% nativo, siempre tendrá una empresa que impulse “lo que funciona mejor” para ellos. Además de eso, Google literalmente odia a Microsoft, por lo que no imagino que sus idiomas nativos converjan pronto.

En pocas palabras, siempre que haya más de un sistema operativo, habrá más de un idioma.

Desde una perspectiva comercial, no creo que suceda nunca. Caso en cuestión, mira las herramientas para los productos de Apple. Te dicen lo que vas a usar y cómo debes hacerlo. Período. Independientemente de lo que digan los desarrolladores. Podrían escuchar grupos focales aquí y allá, ¿comprar en su mayor parte? No.

Eres una técnica. Nómbrame 1 aplicación exitosa que tenga la misma base de código para una aplicación móvil y un sitio web. Simplemente no existe. Ser exitoso significa crear una aplicación que brinde la mejor experiencia de usuario de una manera que se usen los usuarios para esa plataforma en particular. Incluso Google no puede lograrlo, y les gusta mucho Javascript / html. Sus aplicaciones de Gmail para iOS y Android son nativas, no basadas en la web.

Entiendo su dolor de tener que desarrollar aplicaciones para diferentes plataformas en diferentes idiomas con diferentes herramientas y bibliotecas, pero eso no va a desaparecer. Siempre. Así que no piense al revés, sino desde la perspectiva del usuario.

Puede crear una aplicación angular, alojarla en la web y usar Cordova para envolverla en una aplicación móvil nativa. Siempre y cuando realice algunos ajustes de UX, debería poder admitir aplicaciones móviles nativas y aplicaciones web con una base de código compartida.