Dart, ¿el lenguaje de programación perfecto para Android?
Conforme se va acercando el Google I/O del presente año, van apareciendo un gran número de discusiones, artículos, posts, tweets y noticias en la red sobre nuevos lenguajes de programación.
Pero, ¿viene todo esto movido por la presentación de Apple de su nuevo lenguaje Swift en la pasada WWDC 2014? El mes de junio ha sido movido para los desarrolladores de Apple, quienes han llegado a afirmar en algunos foros que Android no está actualizado en comparación con iOS desde el punto de vista de un desarrollador, por el hecho de seguir basados en Java. Hoy vamos a ver el punto de vista de Cyril Mottier, un programador de apps que ha sido reconocido por Google como Google Developer Expert en Android.
El software no puede depender de legisladores, sólo de desarrolladores
Google y Oracle han luchado para que el uso de Java en Android haya sido posible. De hecho, el juicio entre ambas compañías ha sido uno de los más importantes en la historia reciente de la informática, aunque ahora parecen estar en una fase de aguas calmadas. De hecho, para Google es peligroso depender de los lenguajes de programación de los competidores, pues viven bajo la amenaza de demandas.
Los lenguajes de programación deben evolucionar
Para Mottier, Google ya debería haber sustituido Java por otro lenguaje de programación. Personalmente, él cree que Google ha estado trabajando en secreto en un lenguaje de programación para sustituir Java al menos tanto tiempo como lo ha hecho Apple con Swift (desde 2010).
Mucha gente opina que Go sería una buena alternativa, pero otros tantos, como Mottier, piensan que Dart es más apropiado, por razones como que es un lenguaje más maduro y basado en máquina virtual (como ya es Java). Además, se ajusta mejor al ecosistema Google y su curva de aprendizaje es realmente sencilla para los desarrolladores. Es por ello, que no ven sólo a Dart como el posible futuro de Android, sino de la compañía en sí.
Y esto lo opinan desarrolladores como Mottier que se declaran fan de Java, pero que reconocen que Java está en esa fase que empieza a ser necesario pensar en jubilarlo. Ni la revolución de Java 8 puede solucionar las limitaciones, inconvenientes y problemas que Java como lenguaje viene arrastrando, debido a la compatibilidad con versiones anteriores. Y es ahí donde Dart se hace fuerte, pues ha sido pensado para solucionar problemas de desarrollo comunes y recurrentes, muchos de ellos en el flujo de programación, permitiendo ayudar a los desarrolladores a crear APIs realmente sólidas y robustas. Éstas son algunas de las ideas que ofrecen esa solidez a Dart:
- No hay tipos primitivos: todo es un objeto. Y así debería ser en cualquier lenguaje de programación orientado a objetos.
- Lenguaje de programación más sencillo sintácticamente: La creación de constantes públicas puede ser hecha con const, pudiendo olvidar el tan famoso public static final que los desarrolladores Java estamos tan acostumbrados a utilizar. Es más, todo pasaría a ser público por defecto, y privado aquello que empiece por un guión bajo, olvidando también public/private
- Se quitan limitaciones en los constructores. En Java, los constructores debían tener el mismo nombre que la clase para ser reconocidos como tal. Una forma de resolver esto es crear un método de creación estático, lo que está permitido en Dart.
- Paso de parámetros actualizado: Dart permite parámetros posicionales y por nombre, pero también que sean opcionales o tengan valores por defecto, cosa que Java no permite.
- Y un largo etcétera, como interfaces implícitas, mixins…
El futuro: controlar el lenguaje
Para no quedar en ningún momento descolgados frente a los competidores, Google debe tener el control total de los lenguajes de programación que estén usando. Pues tal como hemos comentado, Java 8 ya está aquí, pero posiblemente pase tiempo hasta que Android cuente con él. Es por eso, que Google debe poder mantener y desarroladr el lenguaje a la perfección en todas las plataformas siempre que sea necesario, tal como ha hecho Apple con Swift y Objective-C. Esto permitiría una evolución mucho más rápido de los propios productos de Google, algo que ya estamos viendo con Dart.
De hecho, Dart está hecho para que todo el mundo pueda participar mediante el acceso al código fuente y envío de parches y mejoras. Supuestamente AOSP es igual, pero sólo Google controla Dart, ya que son la única compañía con recursos suficientes para mantener el proyecto y hacerlo evolucionar. Es una forma de mantener el proyecto de código abierto, pero tenerlo bajo control.
Un lenguaje para programarlos a todos
Dart ya está funcionando en web y en servidores. El único gap lo encuentra en Android. Y si portaran Dart a Android, dejarían un único lenguaje que correría en todas las plataformas más importantes (móvil, web y servidor). Un punto más cerca de lo que muchos programadores y empresas desearían:
Escríbelo una vez, ejecútalo donde quieras
No todo es tan bonito para Dart
Dart es un lenguaje bien desarrollado. Pero aún no ha alcanzado la masa crítica para ser considerado como el lenguaje de programación inevitable en el desarrollo web. ¿Por qué? Porque los desarrolladores web no creen que Dart traiga tantas mejoras como para hacer el cambio rentable. Pero, ¿y si fuera el idioma por defecto en Android? Quizá así se estaría ayudando a que este lenguaje fuera adoptado también en el desarrollo web. Y también ayudaría a que un desarrollador Android fuera capaz de crear fácilmente un pequeño sitio web en cualquier momento.
Además, no todos los programadores piensan igual, y hay muchos que piensan que Google no debe reinventar la rueda, aunque tuviera recursos de sobra para ello. Así mismo, dudan que Google quiera deshacerse de todos los lenguajes con los que trabaja, como Python, Java o C++. Además, no todos los lenguajes son los más adecuados para todo tipo de esfuerzos en desarrollo.
Por otro lado, ¿qué pasaría con todas las librerías existentes para proyectos de Google actuales? ¿Habría que pensar en migrarlas todas?
Conclusiones
Nunca es fácil o sencillo hacer un cambio tan drástico. Obviamente, introducir Dart en Android implica mucho trabajo por parte de Google, especialmente en rendimiento, compatibilidad o interoperabilidad. Esto lleva a las dudas sobre si Dart será tan eficiente como Java en dispositivos más restringidos que los navegadores de escritorio o cómo hacer que estas aplicaciones basadas en Dart funcionen en la mayoría de dispositivos. Pero también hay otras dudas que afectan a los desarrolladores, como puede ser el hecho de permitir introducir código de la API de Java en lenguaje Dart y viceversa.
Todas estas preguntas son difíciles de responder, pero es donde Google suele responder. La pregunta es, ¿tiene Google preparado ya un cambio así?
Fuente | Cyril Mottier