Dart ha captado por sorpresa la atención (y ciertas esperanzas) de los desarrolladores Android. Todo a raíz de un experimento mostrado hace unos pocos días en la conferencia Dart Developer Summit. El experimento en cuestión es Sky, un pequeño conjunto de componentes en forma de framework para desarrollar aplicaciones Android sin Java, creadas integramente con Dart (un lenguaje creado inicialmente con la intención de sustituir a JavaScript en la web y en más ámbitos)
Vayamos con cautela. Estamos leyendo titulares demasiado apasionados que coronan a Dart como el sucesor de Java. Algunos algunos se aventuran a afirmar que el propio Google estudia abandonar Java y centrarse en Dart. Para ser preciso habría que tener en cuenta lo qué implica Java en Android y lo inmensos-dispersos que a veces son los equipo de trabajo de Google, los cuales muchas veces compiten entre ellos y les gusta experimentar con las diversas tecnologías: desarrollar apps con Dart, de momento, podría ser un experimento más. Aún no hemos visto pronunciarse al equipo de Android ¿Quizás en la Google IO veamos algo totalmente distinto y sorprendente?
¿Que hemos podido ver en el experimento Sky (Dart en Android)?
Eric Seidel ha sido en el encargado de mostrar las bondades de Sky a la audiencia del Dart Developer Summit. Lo podéis ver en vídeo, son apenas unos treinta minutos en los que muestra unas pinceladas de Sky. Nos sitúa en qué parte de las pila de componentes se sitúa Dart y Sky.
En el par de demos, nos muestra cómo programar el clásico “Hello World” íntegramente en Dart, aunque es realmente un par de líneas nos muestra la estructura básica del código que debemos escribir con Sky y cómo se definen las aplicaciones Dart sobre Android. Después pasamos a ver algo ya más interesante de cómo Sky integra una serie de widget de la UI (algo de Material Design que han ido construyendo) como el Actionbar, animaciones, listas, drawer. Eso va ser uno de los retos más interesantes como los desarrolladores podrán construir interfaces atractivas a través de Dart que respeten Material Design.
Como broche desvelaron que ya tienen una app subida a Google Play: Sky Demo, una aplicación del tiempo sin demasiadas pretensiones pero que sirve para demostrar que es posible, aunque lejos de ver algo más complejo de momento que eso.
¿Qué puede aportar Dart a Android?
Dart y Android, un rumor que viene de lejos. Hace casi un año, Cyril Mottier, un reputado desarrollador Android dentro de la comunidad open source hacia una profunda reflexión previa al Google IO del 2014 dónde catalogaba Dart el futuro de Android: un lenguaje promovido por Google para dominar todas las plataformas.
No es nuevo que Dart se integre en Android, véase su wiki para ver cómo ejecutar la Dart VM bajo Android o como probar Dart Web Apps sin compilar a JavaScript gracias a Chromium. Los intentos son numerosos, aunque aún nunca como apps nativas como ha mostrado Sky.
Además nos encontramos cierto mensaje que deja claras las intenciones de cualquier intento de adjudicar este lenguaje a Android si más. La comunidad Open Source está invitada a experimentar con ambos.
“We think that would be pretty cool, but you’d have to ask the Android team. Both Dart and Android are open source, so maybe the community can make it happen.”
También existe otra vía para crear actualmente apps en Dart en Android. Se trata de crear webapps que se ejecuten en bajo chromium combinadas por ejemplo con Polymer.
Las promesas de Dart en Android
Dart sobre Android promete un refresco de los componentes de la interfaz de usuario por encima de los 120 Frame Per Second, el estándar actual en apps móviles es de 60 FPS. Algo que puede hacer mucho más fluida la interacción gestual o las animaciones que vemos. El hilo principal de la UI no se bloquea y el usuario no percibe ninguna latencia o parada de su interacción.
Contar con un lenguaje 100% pensando en la web, tanto en el front como en el backend. El siguiente acercamiento de Dart en su roadmap para este año son los móviles. Quizás ese conocimiento web pueda impulsar eliminar los rancios componentes XML y portarlos a HTML5 aprovechando su valor.
El sueño de poder modificar el código de las apps en remoto basándonos en los componentes HTTP permitiría a los desarrolladores cambiar de forma reactiva las apps de forma sincronizada como si de una web se tratará. Aun soy escéptico de los problemas que puede acarrear y cómo sería el proceso, pero sin duda es por donde se encaminan otras alternativas como React Native de Facebook.
Y otro apunte es que Dart está concebido para ser agnóstico, por lo que ya se empieza a escuchar otros experimentos sobre Dart en iOS tan sólo con lograr ejecutar la VM en la plataforma. Uno de ellos es Dart Fletch.
Y por último, librarse de la burocracia de Java y sus litigios con Oracle. No depender de una compañía que le cuesta tanto fomentar un lenguaje con tanto poder, pero anclado en sus tradicionalismos y legacy code. En Android aún no soportar Java 8 y probablemente tardaremos en verlo por uno u otro motivo, así que.
Retos a los que se enfrenta Android si quiere eliminar Java
Cuidado. Abandonar Java sin más no es tan fácil en Android. No representa un lenguaje sin más. La carga de Java en Android es inmensa, ya sea por la máquina virtual que ejecuta o la gran cantidad de APIs que serían necesarias de migrar.
A partir de Android 4.4 se paso a disponer de una máquina VM como ART, habría que ver como Dart es capaz de correr sobre, en cooperación o sustituyeno la Dalvik VM o ART. Además de tener en cuenta sobre que versiones estaría disponible
Al menos que Dart con Sky ofrezca un sistema que permita interoperar con código Java en las librerías ya existente es muy difícil llegar a un estado que iguale las herramientas para crear apps actualmente. ¿Quizás unos Google Play Service en Dart? ¿Herramientas de construcción de apps como Gradle en Dart o de testing? Y lo más obvio, el soporte en Android Studio para Dart. Creo que son piezas fundamentales para plantearse el cambio.
La curva de aprendizaje y el gran número de desarrolladores Java existente. El reto es que Dart sea atractivo para ellos. En principio lo es, pero debe convencer con una sintaxis y flexibilidad a priori mayor pero que cambia el paradigma actual de programación de los existente programadores Android.
Otras alternativas a Java como lenguaje en Android
Las alternativas basadas en la JVM pisan fuerte como Scala, un lenguaje maduro fuertemente usado en entorno de backend que ya es usado con éxito por distintas compañías que además tiene la ventaja de interoperar con todo lo existente de Java actualmente. Otra posibilidad es Kotlin impulsada por JetBrain la compañía responsable detrás de la base de Android Studio.
Más información | Dart Sky para Android
Ver todos los comentarios en https://www.xatakandroid.com
VER 17 Comentarios