Creación de interfaces de usuario multiplataforma en 2017

Hace aproximadamente una década, estaba de moda modelar una GUI en un formato multiplataforma de XML (como XUL) y luego tener un motor de renderizado específico de la plataforma procesar ese archivo XML para mostrar un diseño. Sin embargo, ya no está de moda hacer esto. Hoy, en 2017, la tendencia es construir sus aplicaciones en plataformas que le permitan escribir todo en HTML, CSS y / o JavaScript, sin importar en qué entorno se ejecute su código.

La "primera generación" de este tipo de herramientas produjo básicamente aplicaciones "híbridas", en las que las aplicaciones web se ejecutan sobre WebViews específicos del navegador y específicos de la plataforma. Sin embargo, esta técnica es bastante ineficiente. Sus aplicaciones no se sienten muy "nativas", son bastante hinchadas y tienden a carecer de rendimiento. Sin embargo, es relativamente fácil tener una apariencia coherente en diferentes entornos. Phonegap / Cordova es la plataforma más popular para entornos móviles y NW.js para entornos de escritorio.

La "segunda generación" es diferente: compilan todo para binarios totalmente nativos, específicos de la plataforma. En lugar de confiar en WebViews, se usan widgets "nativos" cuando es posible. Esto le da a su aplicación una apariencia más "nativa", generalmente tiene menos hinchazón y es mucho mejor para el rendimiento. Sin embargo, tendrás más diferencias entre las diferentes plataformas. Los ejemplos son NativeScript , React Native y Tabris.js (todos para entornos móviles).

Desafortunadamente, todavía no hay herramientas de "segunda generación" para computadoras de escritorio. Entonces, en este momento, si desea construir una aplicación de escritorio multiplataforma, está atrapado con herramientas de "primera generación". NW.js tiene una trayectoria más larga que Electron y tiene soporte para varias características que no están presentes en Electron, pero también viene con sus inconvenientes . AppJS es aún más antiguo, pero no es tan maduro, ni tan popular como los otros dos.

De todos modos, su confianza en WebViews significa que su aplicación se sentirá más como una aplicación web que como una aplicación de escritorio. Y los inconvenientes de hinchazón y rendimiento son inevitables con este tipo de solución . Esto significa que nunca obtendrá el mismo rendimiento que el código que escribe directamente en Java o C ++ ni el mismo rendimiento que obtendría en plataformas de "segunda generación", y nunca se sentirá igualmente "nativo". Sin embargo, todavía puede ser la mejor solución, por ejemplo. cuando es más importante tener una apariencia coherente en diferentes plataformas o cuando tienes experiencia como desarrollador web.

Si el rendimiento, la falta de hinchazón y la aplicación que recibe ese sentimiento "nativo" son criterios importantes, es posible que desee esperar un poco más hasta que aparezcan las primeras plataformas de "segunda generación" para el escritorio. Realmente es solo cuestión de tiempo para que las plataformas para aplicaciones de escritorio sigan el mismo camino evolutivo que las plataformas para aplicaciones móviles, aunque en realidad podría venir en la forma de "extensiones de escritorio" para plataformas móviles existentes.

En la forma en que se ve actualmente, parece que pronto podrá escribir aplicaciones "nativas" para computadoras de escritorio y dispositivos móviles con la misma base de código. Dado que React Native ya tiene complementos que agregan soporte para Windows 10 y soporte para MacOS , yo personalmente iría con React Native y le daré tiempo a su equipo de desarrollo hasta que soporten todos los entornos de escritorio que necesito admitir y esas extensiones para escritorio son lo suficientemente maduras para entornos de producción.

Si no puede esperar tanto, no quiere apostar por lo que vendrá en el futuro o si estos criterios no son tan importantes para la aplicación que desea construir hoy, es posible que desee probar algunos de los ". plataformas de primera generación actualmente disponibles y vea cuál es la más adecuada para usted. ¡Solo ten en cuenta los inconvenientes!

Como siempre, elige sabiamente …