Estamos en casa, llaman a la puerta y aparece un comercial de alguna compañía energética con una tablet buscando cómo poder hacernos más felices con una oferta. Viajando en el tren vemos en nuestro móvil Android un capítulo de una serie de Netflix que habíamos dejado a medias en nuestro SmartTv. Salimos a correr y tenemos en nuestro smartwatch una aplicación registrando nuestras marcas que después podremos ver en nuestra tablet o en nuestro MacBookPro. Todo está conectado y disponible para interactuar.
Este escenario hace que, desde el punto de vista de desarrollo software, se tenga que realizar un gran esfuerzo en desarrollar programas para diferentes plataformas y sistemas operativos. Y si nos centramos en la interacción con el usuario y sus interfaces, el esfuerzo sigue creciendo al intentar mantener una UI homogénea y agradable para el cliente.
Las nuevas tendencias de mercado y la necesidad de reducir el "time-to-market" hacen que exista una búsqueda continua por minimizar la inversión que se realiza al crear y mantener aplicaciones en las diferentes plataformas.
Fruto de esta necesidad, e intentando aportar algo diferencial, nace Flutter.
Flutter es un framework open-source de Google para crear, inicialmente, aplicaciones nativas para iOS y Android, aunque a día de hoy, tiene múltiples proyectos "satélite" para que también tenga como destino aplicaciones Linux, Windows, MacOS, Web y Fuchsia (futuro sistema operativo para móviles de Google). Su primera versión oficial se liberó el 4 de diciembre de 2018 y recientemente ha liberado su versión 1.2.
Para desarrollar en Flutter, tenemos que hacerlo con el lenguaje Dart, un lenguaje de programación de código abierto y desarrollado por Google. A modo de resumen, está orientado a objetos, tiene máquina virtual propia (DartVM) con una sintaxis parecida a Java, aunque con un concepto de trabajo más cercano a JavaScript.
Si queremos desarrollar en Flutter, tenemos que tener claro que no tiene entorno propio de desarrollo como tal, pero sí existen plugins para IntelliJ, Android Studio y Visual Studio Code.
Comparando Flutter con otros frameworks con el mismo propósito (generación de aplicaciones multiplataforma), podemos encontrar ionic, React Native y Xamarin.forms, entre otros. Pero antes de entrar en las odiosas comparaciones, encuadremos brevemente a cada uno de ellos:
Sin entrar en grandes detalles técnicos podríamos decir que:
- Tanto ionic, React Native y Flutter utilizan Dart, que tiene ciertas similitudes con JavaScript.
- Xamarin.forms y Flutter comparten ciertas similitudes en el planteamiento de la estructura interna del framework, así como la orientación a "widgets".
- Flutter, Xamarin.forms y React Native tienen un mejor rendimiento al ejecutar código nativo de forma directa, mientras que ionic tiene un rendimiento menor al ejecutarse en un web view.
- Al realizar desarrollo web sobre ionic, éste se posiciona como el mejor en cuanto a versatilidad a la hora de generar interfaces de usuario atractivas.
Después de llevar un tiempo siguiéndole la pista a Flutter, podríamos adoptarlo como framework de desarrollo para:
De igual modo, no utilizaría Flutter en:
La reciente liberación de Flutter hace que, a día de hoy, haya aumentado el número de búsquedas en Google, así como el número de entradas en foros técnicos como Stack Overflow. Aunque tiene presencia en la web, competidores del desarrollo multiplataforma (como ionic o React Native), le llevan bastante ventaja.
Flutter proporciona muchas ventajas pero no está en posición de desbancar a los frameworks nativos debido a las limitaciones en cuanto a la interacción con hardware, así como por las limitaciones en cuanto a "customización" de componentes.
Con respecto a sus competidores, dada la facilidad de desarrollo, Flutter puede ser la mejor opción si queremos generar un producto rápido y visual, pero no llega a tener el grado de madurez de cualquiera de ellos.
Como conclusión, Flutter es una gran apuesta de futuro y un framework al que hay que seguirle la pista, sobre todo si se confirma como SDK para el futuro sistema operativo Google Fuchsia.
Antonio Jesús Ocaña
Antonio es Jefe de Equipo del Departamento de Consultoría de DXD. Está especializado en gestión de proyectos (Certificación CAPM) multidisciplinarios y de múltiples tecnologías (JAVA, Angular, JSF). También ha trabajado en nuevos desarrollos, mantenimiento evolutivo de la banca (proyectos de intranet, internet, procesos de contratación, riesgos, prepagos, tarjetas, transferencias, etc.), y en proyectos para la administración pública (Junta de Andalucía y Ministerio de Innovación y Ciencia).