¿Debo aprender AngularJS ahora o esperar a AngularJS 2.0?
Men? de navegaci?nMen?
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

¿Debo aprender AngularJS ahora o esperar a AngularJS 2.0?

AngularJS2

1ª actualización: septiembre de 2015.
2ª actualización:
oct de 2016.

AngularJS es quizá el framework más popular para el desarrollo de aplicaciones de lado cliente con JavaScript. Es gratuito y Open Source, y está creado y mantenido por Google. Y este último es, precisamente, uno de los motivos que más ha contribuido a su popularidad: al estar detrás el gigante de las búsquedas se asume que habrá predictibilidad y soporte.

En los últimos años habían surgido infinidad de frameworks MVC (basados más o menos estrictamente en el patrón Modelo-Vista-Controlador) para crear aplicaciones web de tipo SPA con JavaScript. Todos ellos son de código abierto, gratuitos y en muchos casos verdaderamente potentes. Apostar por uno de ellos en concreto es una decisión difícil. Ten en cuenta que si necesitas invertir tiempo en aprender el escogido, desarrollar tus aplicaciones con él y mantenerlas en el futuro, debes elegir una opción que te asegure una trayectoria futura predecible y estable. Si de repente se deja de mantener, no se actualiza o cambia tanto que no puedes adaptarte, tienes un problema grave si has creado aplicaciones grandes con él (esta tira de CommitStrip.com lo ilustra muy bien).

Por eso el hecho de que AngularJS estuviese creado y mantenido por Google era como un faro en el horizonte. Lo que mucha gente pensó fue que Angular era la respuesta a todas sus dudas: una plataforma potente, gratuita y mantenida en constante evolución por una de las mayores empresas de Internet. Un sueño hecho realidad. Y de repente AngularJS estaba en todas partes.

BONUS: Descárgate gratis la Guía de buenas prácticas en AngularJS 1.x

Actualmente está ya en su versión 1.5.x y se usa en multitud de aplicaciones reales en todo el mundo. Es decir, es una plataforma estable y probada. Mucha gente la ha definido como "lo que debería haber sido HTML si se hubiese diseñado para crear aplicaciones". Casi nada...

Y de repente... un extraño

Pocos factores podrían empañar el éxito rotundo que es AngularJS. Una de estas pocas cosas es amenazar esa supuesta estabilidad de la plataforma y que, de repente, el futuro no parezca tan claro...

Y eso es precisamente lo que hizo el equipo de Angular e noviembre de 2014. Durante una sesión en la conferencia europea de AngularJS (ng-Europe) dos desarrolladores del equipo, Igor Minar y Tobias Bosch, dejaron caer la bomba: el equipo estaba preparando AngularJS 2.0 y esta nueva versión sería incompatible hacia atrás y no habría una ruta de migración desde 1.x.

Esta nueva versión dinamitará 4 de los 5 pilares del actual AngularJS, no soportará navegadores relativamente recientes (como Internet Explorer 10 por ejemplo, solo la 11), define un nuevo lenguaje de programación por encima de JavaScript (AtScript, inspirado en TypeScript y que luego compila a Dart y a JavaScript TypeScript de Microsoft)...

En realidad Angular 2 no es una nueva versión: es un nuevo framework construido desde cero.

Este anuncio produjo un efecto Osborne de manual. Internet ardió en comentarios, la mayoría de ira. En este asunto no hay término medio: o te encanta la idea o la odias. Y mi sensación es que la mayor parte de la gente repudió la idea precisamente porque va en contra de todo lo que AngularJS representaba: una plataforma estable y de futuro que podías aprender y usar durante años sin preocuparte. Hay quien opina todo lo contrario.

Lo cierto es que la reacción más generalizada fué la de "F*ck Angular!", ahora nos pasaremos a a cualquier otro framework diferente. Y es que si eres un programador con un trabajo real, en el que el mantenimiento y la compatibilidad hacia atrás de las aplicaciones son importantes, un cambio como este te echa tus principios abajo.

Yoda-AngularJS2

La importancia de comunicar bien

Te presento a Rob Eisenberg. Rob es muy conocido porque fue uno de los creadores de Durandal.js, otro framework similar a AngularJS que también tiene mucha aceptación. En abril de 2014 el equipo de AngularJS anunció que Rob dejaba Durandal y se incorporaba a Google para trabajar con ellos en el proyecto. Todo un fichaje. La idea era traer lo mejor de Durandal a Angular y que todavía quedaran menos dudas acerca de cuál era la plataforma preponderante.

Tras varios meses de trabajo, y después del anuncio en ng-Europe, Rob publicó en su influyente blog un artículo sobre AngularJS 2.0 (muy interesante lectura) en el que explicaba con bastante detalle las nuevas funcionalidades que se estaban gestando para Angular 2.0. Además también daba algunas opiniones personales al respecto. A pesar de que el post era muy correcto, se podía intuir que Rob no estaba del todo contento con algunas de las implementaciones. De hecho, 11 días después anunció que abandonaba Angular y regresaba a Durandal.

Bien, hace solo un par de semanas Rob anunció el nuevo framework que está construyendo Durandal: Aurelia.

Aurelia podría considerarse como "Durandal 2.0". Es un nuevo framework creado por la misma gente que Durandal pero tratando de implementar las nuevas ideas y conceptos que sus creadores tenían en la cabeza para mejorar lo existente. O sea, lo mismo que pretendía AngularJS 2.0 pero con las ideas de otra gente. Si tienes interés nuestro tutor Eduard Tomás ha escrito un post presentando Aurelia con algunos ejemplos.

Lo que han hecho en Durandal es lo mismo que han hecho en Google, pero lo han comunicado muchísimo mejor

Fíjate que en lugar de hablar de un hipotético "Durandal 2.0" y tratar de vendértelo como una versión muy mejorada -pero incompatible- del framework actual, han hablado de un nuevo producto, Aurelia, y de cómo ambos van a coexistir durante varios años.

Ahora imagina por un momento que Google en lugar de anunciar AngularJS 2.0 hubiese anunciado "CircularJS 1.0", y que te hubiese dicho que a partir de ahora tendrás Angular y Circular, y que ambos van a coexistir durante varios años y serán soportados y actualizados por la empresa. Con esto las cosas hubiesen cambiado radicalmente, y la recepción por parte del público hubiera sido mucho mejor ¿no crees?.

De ahí la importancia de comunicar bien. En mi opinión el equipo de Angular debería haberse asesorado y haber comunicado esto de otro modo diferente. Algo más parecido a lo de Durandal/Aurelia: mucho mejor comunicado.

¿Y ahora qué hago de mi vida?

Por cierto, se me "olvidaba" comentar un detalle importante: de momento AngularJS 2.0 está en pañales. Es un diseño y algunos desarrollos previos, pero no se espera que liberen la primera versión antes de finales de 2015 mediados de 2016. De hecho la fecha de su lanzamiento no está asegurada ni mucho menos. Y probablemente cuando salga no tendrá el nivel de estabilidad que tiene la actual versión 1.x. Es decir, para poder sacar partido en serio a Angular 2.0 queda al menos un año y medio. O sea, ahora mismo aprender AngularJS 2.0 no es una opción realista de trabajo. Angular 2 ya es una realidad desde septiembre de 2016. Les ha costado más de 2 años de trabajo (casi 2 desde su anuncio y otros 6 meses de desarrollo interno previo estimado), pero por fin está aquí y es estable y listo para producción. En el enlace anterior puedes ver qué trae y qué esperar de ella en el futuro.

Por otro lado, las actuales versiones 1.x seguirán apareciendo en paralelo y tenemos la garantía del equipo de que se van a mantener por lo menos durante dos años más desde que salga la 2.0. Es decir, como mínimo hasta finales de 2017 finales de 2018. Es más, debemos tener en cuenta que Google tiene cientos de aplicaciones web en las que utiliza Angular 1.x, así que ellos mismos están interesados en que esa versión siga actualizada. De hecho llevan varios meses trabajando en la versión 1.4 que verá la luz "en primavera" (sic). De hecho, desde el anuncio de Angular 2, han sacado las versiones 1.3, 1.4 y 1.5, y están trabajando en la 1.6 que saldrá en breve. Tenemos Angular 1.x para rato.

Si quieres aprender un framework para desarrollo de lado cliente tienes varias opciones. Vamos a ver sus pros y sus contras:

Opción 1: Aprender AngularJS 1.x

Si necesitas crear ahora (hasta septiembre de 2016) una aplicación web avanzada o de tipo SPA no hay nada de malo en aprender la versión actual de Angular. Es una plataforma estable, robusta y probada, y muchos de los conceptos que aprendas vas a poder sacarles partido con otros frameworks e incluso con Angular 2.0.

Antes de un año y medio como mínimo tampoco tendrás opción de usar la versión 2.0 de AngularJS, y tienes el soporte asegurado para 1.x durante mucho tiempo.

BONUS: Descárgate gratis la Guía de buenas prácticas en AngularJS 1.x

En mi opinión además si trabajas con AngularJS deberás conocer en cualquier caso las versiones 1.x puesto que probablemente te toque mantener y/o ampliar aplicaciones actuales creadas con esta versión del framework, por lo que no te quedará más remedio que lidiar con él tarde o temprano.

Pros: aprenderás un framework estable y robusto que te servirá para programar aplicaciones ahora mismo y durante varios años.
Contras: dentro de unos años seguramente te verás en la obligación de cambiar de framework. En cualquier caso, esto te pasará casi con cualquier framework existente: es imposible en este mundillo aprender algo y pretender que te sirva para toda la vida, y menos en desarrollo web Front-End

Si te interesa esta opción, no te olvides de nosotros.

Opción 2: Esperar para Aprender AngularJS 2.0

Si no necesitas crear una aplicación real ahora puedes esperar un año y luego aprender AngularJS 2.0. Ten en cuenta que no está asegurada una fecha de lanzamiento y que, viendo cómo actualizan ahora las versiones 1.x y que esta supone un cambio tan grande, probablemente durante las primeras versiones va a haber muchas incompatibilidades.

Pros: aprenderás una plataforma que te servirá durante más tiempo que la 1.x ya que empezó más tarde. Va a ser más elegante y más apropiada para móviles y tendrá otras aplicaciones más allá de la web.
Contras: Tienes que esperar un año y medio por lo menos para poder usarla en real, probablemente no esté estabilizada hasta que pase un tiempo, y tendrá una curva de aprendizaje más pronunciada que la de 1.x (esto ya hemos comprobado que en la versión definitiva no es cierto). Además, en tu trabajo probablemente tendrás que mantener aplicaciones creadas con la versión 1.x durante mucho tiempo.

Opción 3: Aprender un framework diferente

Por supuesto esta es una opción muy razonable. El problema es el de siempre: ¿por cuál apuesto?. No hay un claro ganador. Durandal es muy bueno pero en el fondo le pasa lo mismo que a Angular, así que quizá sería mejor apostar por Aurelia, que ya está en un punto bastante avanzado. Por otro lado hay frameworks "clásicos" muy interesantes (como Ember.js por ejemplo) que merecen mucho la pena, y otros emergentes que están tomando la cabecera (como Aurelia o incluso React.js de Facebook, aunque no es comparable a Angular pues no es un framework MVC completo sino una biblioteca de UI).

Pros: están ya disponibles y tienen comunidades muy activas. Son tan buena apuesta como cualquier otro.
Contras: nadie te asegura que no te quedes en la cuneta en cualquier momento o que saquen versiones incompatibles también.

Opción 4: Micro-frameworks y buenos fundamentos

Otra tendencia muy marcada últimamente (con la que, la verdad, me identifico bastante personalmente) es la de no utilizar un framework completo, sino coordinar el uso de múltiples bibliotecas pequeñas y especializadas que entre todas te den la funcionalidad que necesitas (micro-framework). Es otra buena opción a considerar.

Pros: La principal ventaja de esta estrategia es que no dependes en exceso de ninguna biblioteca y aunque alguna pieza se caiga o cambie es muy fácil de sustituir por otra similar. Además puedes escoger exactamente qué funcionalidad vas a utilizar en tu aplicación y cuál no, resultando en aplicaciones más ligeras y rápidas de descargar.
Contras: tienes que navegar en un océano de opciones, escoger la apropiada para cada tarea, aprender múltiples bibliotecas y conseguir que funcionen bien entre sí. Todo esto es también un reto. Necesitas dominar más los fundamentos de JavaScript, controlar ECMAScript y sus cuestiones avanzadas y, en definitiva, poner más de tu parte.

En cualquier caso, escojas el framework que escojas, debes poseer siempre una buena base conceptual y práctica tanto de JavaScript como de ciertos patrones y pautas de arquitectura para construir aplicaciones. Así que digamos que esta opción 4, en realidad, es transversal a cualquier otra opción que puedas escoger.

En resumen

El hecho de que la gente de Angular haya decidido sacar la mal llamada "versión 2.0" no significa que debas abandonar la idea de usar AngularJS tal y como está actualmente. Todo dependerá de tus necesidades actuales.

Si tu intención es crear una aplicación JavaScript avanzada o una SPA, AngularJS 1.x sigue siendo una opción muy buena, con soporte asegurado para varios años. Además en cualquier trabajo de desarrollador Front-End acabarás topándote tarde o temprano con esta versión del framework.

Si lo tuyo es más curiosidad y no tienes una aplicación ya en ciernes, quizá puedas esperar un año o así hasta que AngularJS 2.0 esté listo y aprenderlo para entonces. De hecho puedes ir aprendiendo ya ahora.

Otra opción en cualquiera de los casos es aprender otra biblioteca como Ember.js, Durandal o Aurelia. No solo de Angular vive el hombre, ni mucho menos.

Finalmente, y sea cual sea el framework que decidas aprender, debes asegurarte de tener previamente unos buenos conocimientos de JavaScript y de ECMAScript con este lenguaje. Esto te resultará muy útil independientemente de que uses un framework, un conjunto de bibliotecas especializadas (micro-framework) o cualquier otra opción.

José Manuel Alarcón Director de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón

No te pierdas ningún post

Únete gratis a nuestro canal en Telegram y te avisaremos en el momento en el que publiquemos uno nuevo.

Archivado en: Desarrollo Web

Comentarios (19) -

Que tal post! Bastante iluminador. Gracias José!

Responder

Optando por la opcion 4, para armar un microframework, que bibliotecas recomendarias/usas?

Saludos

Responder

José Manuel Alarcón
Spain José Manuel Alarcón

Buff, la verdad es que es muy complicado recomendar alguna porque dependerá mucho de tus necesidades y además incluso de tus gustos y preferencias.

Desde luego jQuery (o Zepto) es un fijo y seguro que la vas a usar en ese caso.

Por otro lado necesitarás algo decente para la parte de enlazar la interfaz con el modelo. En esta parte algo tan sencillo como handlebars puede servirte para muchos casos, pero en muchos otros tendrás que recurrir a Backbone o quizá Knockout, dependiendo de tus gustos y filias (p.ej. este último le suele gustar mucho a los que vienen del mundo Microsoft).

Para routing hay muchas opciones. Yo por ejemplo uso Grapnel, pero hay decenas de opciones por ahí.

Te recomiendo que eches un vistazo a http://microjs.com
En esta página puedes encontrar información sobre multitud de micro-librerías para desarrollo con JavaScript buscando por palabras clave o funcionalidad y te ayudará a identificar en cada caso opciones para lo que necesites.

Saludos!

Responder

cdbullones
Bolivarian Republic of Venezuela cdbullones

Buenas amigo José, muy bueno el post respecto a AngularJS fue muy clara tu explicación y para las personas como en mi caso que estamos apostando aprender un buen framework del lado del cliente, en mis estudios estoy aprendiendo a usar Sencha Extjs 5.x en su versión comunidad, no sé qué opinas al respecto de este framework? sinceramente no me enamora mucho, como lo esta haciendo AngularJS en lo poco que he visto!!!

Muy buena la imagen de Yoda (risas) esperando este año "El Despertar de la Fuerza"...

Responder

José Manuel Alarcón
Spain José Manuel Alarcón

Hola cdbullones:

Lo siento pero no tengo experiencia con ese framework en concreto y no te puedo aconsejar. Lo que he oído sobre él es bueno, pero no te puedo comentar de primera mano.

Saludos y gracias.

Responder

cdbullones
Bolivarian Republic of Venezuela cdbullones

Hola José

Igual gracias por responder, quizás por estas mismas situaciones me motiva a aprender AngularJS o otro framework JS que tenga una comunidad libre activa, en donde sea mas fácil apoyarse ante cualquier duda y que exista mayor cantidad de material para aprender y avanzar en periodos de tiempo mas factibles.

Responder

Me ha gustado tu breve resumen. he trabajado con AngularJs hasta 1.4 ya que ya esta disponible. y mi duda era eso simplemente si debo aprender el 2.0

Responder

Excelente post. Acabas de aclararme grandes dudas , estoy migrando del ecosistema LAMP hacia entornos JS y el anuncio de angular2 me había confundido mucho, ya me aclaras mejor el panorama.
Soy de los que estaba buscando otro framework y me topé con meteorJs, me ha gustado muchísimo en un fullstack pero lo veo aún en crecimiento.
Con tu artículo me has devuelto la confianza en angular1 y su ecosistema MANP

Un saludo

Responder

me siento otra ves como cuando empece con android.
no esperaba que esto me pasara alguna ves en desarrollo web :(

Responder

José Manuel Alarcón
José Manuel Alarcón

Sí, y es que el desarrollo web se ha complicado bastante en los últimos años, más que nada por la enorme cantidad de opciones que hay, que si bien es algo bueno, al final acaba por paralizar a mucha gente por no saber por dónde tirar :-S

Saludos!

Responder

En estos días han liberado la Release Candidate RC y creo que en breve tendremos una versión definitiva, por lo que creo que pronto podremos usar la 2 en proyectos reales. Yo ahora necesito decidir si meterlo para uno que debe estar en produccion en unos meses y tengo esta gran duda de usar la 1 o la 2. Algún consejo?

Saludos

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola:

Seguramente la 2 RC sea ya bastante estable y no haya grandes cambios en la versión final. Esa es la teoría, pero en otros proyectos (por ejemplo en .NET Core) las RC han roto compatibilidad ya varia veces. Espero que en Angular sean más serios en este sentido...

Seguramente es una buena cosa apostar por la 2 ya.

Saludos!

Responder

Excelente información, mientras podamos usar la v 1.x sera la mejor alternativa.

Responder

Muy buen post, me aclaro todas las dudas muchas gracias

Responder

Saludos muy buen post, yo soy un inciado en esto del desarrollo web apenas hace poco termine cursos de html5 y css3, ahora queria ir por javascript y me vengo enterando de esto de los frameworks, por lo que dices parace que es mejor aprender javascript y luego irse por un framework no? esa es la duda que he tenido estos días si aprender angujar directamente o empezar con javascript.

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola:

Mi recomendación es que aprendas bien a fondo primero JavaScript antes de meterte con un framework, sea cual sea.

Esto es como si quieres aprender ingeniería sin saber antes matemáticas y física: puedes intentarlo, pero vas a tener muchas dificultades y además en cuanto la cosa se salga de los casos más comunes que te sabes de memoria no vas a saber cómo actuar.

A tal efecto me permito modestamente recomendarte mi/nuestro curso de fundamentos de JavaScript: /catalogo/Product-Fundamentos-de-desarrollo-web-con-JavaScript_207.aspx o si ya sabes un poco del lenguaje, el avanzado: /catalogo/Product-T%C3%A9cnicas-avanzadas-para-programadores-JavaScript_206.aspx

Saludos.

Responder

Alberto Domínguez Martín
Alberto Domínguez Martín

Yo creo que ahora mismo si que es el momento de comenzar con Angular 2, ya con una versión medianamente estable se puede empezar a trabajar. Estoy realizando entrevistas de trabajo y ya hay empresas que están empezando a requerirlo.

Yo por mi parte estoy aprendiéndolo y estoy empezando a hacer algunos pequeños desarrollos con Angular 2.

Buen post.

Un saludo

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Alberto:

Sí, ahora que ha salido es mejor opción, porque ni siquiera en las Release Candidate lo era por lo mal que llevaron el desarrollo. Escribí sobre mi cabreo con este tema en mi blog personal: www.jasoft.org/.../...sonal-gestion-Angular-2.aspx

En el momento de escribir este post hace ya año y medio desde luego no era buen momento para hacerlo.

Saludos!

Responder

Me quedare con angular 1 hasta que aguante, es ridículamente simple y poderoso, es una lastima que en angular 2 lo volvieron todo muy tedioso (no difícil, sino tedioso) seguramente tiene algunas mejoras, pero habrá que estudiarlo bien a ver si vale la pena usarlo, pero nada de lo que he visto hasta ahora me sorprende.

Responder

Agregar comentario