Resumen: Javascript, iOS, dotNet, Silverlight, Flash, Flex... ¿en qué plataforma voy a desarrollar mi próxima aplicación? Esta pregunta es quizá una de las que más a menudo se plantean a la hora de afrontar un nuevo proyecto. ¿Cuál es mejor? ¿Cuál será más "estable" en el futuro? ¿cuánto costará aprender un nuevo lenguaje/plataforma?
Por supuesto, no hay una única respuesta y son varios los factores que intervienen a la hora de tomar una decisión. Vamos a repasarlos:
Lenguaje
Cada plataforma viene acompañada de uno o varios lenguajes, y aunque para programar conocer los conceptos puede parecer lo más importante, las curvas de aprendizaje de los distintos lenguajes son muy diferentes. Habiendo programado en Java, JavaScript y VisualBasic, dar los primeros pasos en ObjectiveC (el lenguaje de iOS) puede costar más de lo esperado. La línea JavaScript, Java, ActionScript y puede que C# es más o menos sencilla de seguir (en sus primeros pasos).
Plataforma
Se entiende por plataforma al conjunto de utilidades y librerías más el propio lenguaje de programación. En este caso las plataformas "comerciales" como dotNet/Silverlight o Flex nos pueden ofrecer una alternativa más robusta aunque también algo más rígida en el sentido de que dependen de un fabricante, que aunque puede estar más o menos en sintonía con nuestras necesidades, puede moverse en direcciones que no nos interesen en el futuro.
Por otro lado aunque JavaScript no es una plataforma per-se, si podemos considerar el conjunto de APIs, SDKs, etc... como un ecosistema de plataformas donde el problema principal es la elección de la más adecuada.
Un buen método para hacerlo es ver si las librerías que vamos a usar están soportadas por algún tipo de "fundación" o "forja" en la que estén implicados universidades, empresas privadas y desarrolladores particulares. Siendo así es menos probable que el proyecto sea abandonado y nos garantice estabilidad, y que la toma de decisiones sea coherente con el proyecto.
Herramientas auxiliares
Aunque muchos programadores siguen utilizando el bloc de notas en sus distintas versiones (vi, notepad, etc...), contar un IDE integrado es, hoy en día una pieza clave para lanzar un proyecto. El motivo es que un buen IDE permite hacer un prototipo de nuestra aplicación en muy poco tiempo. En esta línea tanto Flex como dotNet/Silverlight o iOS van algo por delante del resto, permitiendo arrastrar y soltar componentes visuales al más puro estilo Visual Basic 6.
Compatibilidad
Aquí, sin lugar a dudas, JavaScript se lleva todos los triunfos. Funciona en todos los navegadores (con ligeros cambios) y en todas las plataformas. Incluso tenemos librerías de JavaScript que pueden imitar el look & feel de plataformas nativas como iOS, hasta el punto de que puede costar diferenciarlas.
Por el contrario el resto de opciones nos mete de lleno en guerras de navegadores, patentes, etc... Flash no funciona en iOS, iOS es solo para iOS, Silverlight es solo para plataforma Windows (salvo MoonLight). Por tanto, si optamos por una de estas opciones tendremos que tener presente cual va a ser nuestro público objetivo.
Capacidad
Aquí las plataformas comerciales se llevan el premio. Aunque JavaScript ha ido mejorando en rendimiento, mejor dicho los navegadores han ido mejorando su rendimiento con él, sus capacidades están limitadas. El manejo de 3D, audio, vídeo, animaciones, transiciones, o cualquier otro tipo de efectos especiales son más limitados.
En este sentido Flex, Silverlight o iOS nos permiten hacer casi cualquier tipo de virguería, desde juegos en 3D hasta fuegos artificiales en nuestras pantallas a través de un navegador.
Pero además de estos efectos, más o menos espectaculares, hay cuestiones de rendimiento importantes si vamos a manejar información vectorial con miles o cientos de miles de puntos. Mientras javascript se podría quedar sin recursos para hacerlo, cualquiera de las demás plataformas si que nos lo permitirá y este es un aspecto también relevante a la hora de decidirnos.
¿Ganador?
Mi opinión personal es que la inmensa mayoría de los proyectos se pueden (¿y deben?) abordar desde JavaScript, al menos al principio. Sería la opción "por defecto". Solo si, tras analizar los requisitos en cuanto a usuabilidad o rendimiento, javascript se quedara corto, es entonces cuando nos tenemos que plantear otra alternativa.
En cualquier caso JavaScript lleva con nosotros en la web desde el principio, es un superviviente de mil batallas y cuando una tecnología sobrevive tanto tiempo, es bueno pararse a pensar por qué. JavaScript puede parecer un poco desorganizado, pero esa es precisamente su fuerza, su adaptabilidad y además, no podemos olvidar que JavaScript es el lenguaje peor comprendido del mundo (http://javascript.crockford.com/popular.html).

