Angular 2 y el futuro de las arquitecturas web

Angular 2 hace un par de meses que ya tiene una versión final. Todo el mundo esperaba desde un principio un éxito arrollador. Sin embargo en mas de una ocasión me he encontrado con respuestas un poco tibias. De hecho hay cada día mas gente mirando a Facebook y a su framework React como una alternativa a Angular 2. ¿Porque se produce esto? , ¿No era Angular el framework preferido por todos?. ¿Qué es lo que esta haciendo a la gente dudar? . Vamos a hablar un poco del tema.

Angular 2

¿Qué es lo que ha cambiado con Angular?. La respuesta es : Muchas cosas y puede que en un primer punto de partida te parezcan demasiadas.

TypeScript: El primer cambio importante es que hay una apuesta por TypeScript como lenguaje de programación , aunque se puede seguir desarrollando en JavaScript plano si quieres. Esto nos guste o no es una barrera, tenemos que aprender un nuevo lenguaje. Algo que llevara tiempo y genera dudas.

Hola Mundo: El ejemplo de hola mundo hay que bajarselo de GitHub y no es precisamente un único fichero , sino que es un proyecto grande .

RxJS: El manejo de promesas para gestionar peticiones asíncronas ya tiene su complejidad. Usar RxJS nos permite avanzar más pero también es algo más que aprender.

Componentes vs Controladores: Se diseña el framework orientado a componentes y no a controladores lo que implica cambios en la forma de pensar por parte del desarrollador.

Angular 2 y 2.2: En dos meses hemos pasado a la versión 2.2 lo lo parece que hay muchas cosas que había que afinar.

Podríamos seguir hablando de cosas , pero esa es la realidad, hay bastantes cosas que aprender y es un framework nuevo.

¿Google porqué todo esto?

Es una buena pregunta , ¿Por qué tantos cambios? . Angular 1.x funcionaba tan bien que tengo mas de un amigo que me dice .. con lo que yo controlaba la versión 1 … era una máquina con ella. Ahora a volver a empezar de cero.
A mi siempre me gusta reflexionar un poco más a fondo sobre estos temas. ¿Se ha equivocado Google o ha acertado?. Para mí ha acertado y voy a intentar explicar el porqué lo veo así.  ¿Qué problemas tiene JavaScript importantes para convertirse en referencia?

Mis Reflexiones

La modularización : JavaScript no soporta módulos de forma “natural” hasta la versión ES6. No solo eso sino que los navegadores ni siquiera esta muy claro como cargar de forma asíncrona los módulos y sus dependencias. ¿Angular 2 soluciona esto? . Sí a través del sistema de módulos de TypeScript que es parecido a ES6 y usando System.js como cargador de módulos. Esto ayudará a reducir el caos.

Compilación : Es verdad que para esto hay gustos . Hay gente que le gustan los lenguajes compilados y a otros los no compilados como Javascript por su flexibilidad. Pero si miramos a las grandes plataformas Java y .NET son compilados. Así que apostar por TypeScript un lenguaje de Microsoft ,me parece bastante correcto.

Arquitectura: Podemos decir que hay muchos cambios, pero la arquitectura MVC se mantiene. Disponemos de Componentes para la vista , Enrutador para la capa de control y servicios para la capa de backend.

angular 2 diagram

El  framework aporta una arquitectura y separación de responsabilidades clara. Algo que en JavaScript siempre hace falta.

Metadata y Anotaciones : Han apostado por añadir anotaciones y metadatos como hacen las otras dos grandes plataformas para añadir funcionalidad transversal. . Era algo que se echaba mucho en falta en JavaScript. Si miramos el ejemplo de hola mundo de Angular  lo podemos ver.


import { Component } from '@angular/core';

@Component({
selector: 'my-app',
template: `

<h1>Hello {{name}}</h1>


`
})
export class AppComponent { name = 'Angular'; }

@Component es una anotación que define de que tipo de componente es nuestra clase.

Inyección de dependencias: Soportan de forma muy natural las inyecciones de dependencias apoyándose en TypeScript. Esta es una de las cosas que a mi me parecen fundamentales.  Es verdad que era algo ya previamente soportado , pero recordemos que con un inyector ya no somos nosotros los encargados de crear objetos sino que lo hace el framework. Se puede añadir funcionalidad transversal de forma transparente utilizando proxies.

angular 2 proxies

Angular 2 y el futuro

Todo esto esta muy bien , es cierto que Angular 2 es un avance .. ¿Pero merece la pena? . Esa no es una pregunta importante , NO es la pregunta correcta. La pregunta correcta  es : ¿Es Angular un framework de cliente? . ¿Podría usar todo lo que trae del lado del servidor?. La respuesta es Sí , existe otro proyecto, Angular Universal que nos permite ejecutar Angular 2 desde el Servidor .

El salto de Google ha sido tan fuerte porque su objetivo no es quedarse con la plataforma de cliente , que ya la tienen muy orientada sino que su objetivo es abrir las puertas a la plataforma servidor en donde Java y .NET mandan.

Es donde Node.js cojea porque no tiene ningún framework de integración sólido. ¿Puede ser Angular 2 un competidor de Spring framework? esa era una pregunta que antes no estaba en la mesa y puede que a futuro lo esté. Google ha sido valiente y ha arriesgado asumiendo un salto tecnológico importante para poder ganar mucho más en el futuro. Angular 2 es muy joven y hay que esperar, pero puede ser una de las plataformas con más futuro y tendremos que estar muy atentos.

Otros artículos relacionados: Angular.js vs Node.js , Angular.js inyección de dependencia y COC ,Arquitecturas Web y su evolución

It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

About Cecilio Álvarez Caules

Cecilio Álvarez Caules Sun Certified Enterprise Architech (J2EE/JEE).

31 Responses to Angular 2 y el futuro de las arquitecturas web

  1. Juancar 1 Diciembre, 2016 at 10:50 #

    Hay un aspecto importante de Angular 2 que causa rechazo: es un “framework” que intenta reinventar la rueda y ofrece funcionalidad que ya está disponible en librerías de uso habitual. La gente cada vez valora más la transversalidad y no tener que estar estudiando continuamente nuevos procedimientos para hacer lo mismo que ya saben. El enfoque de React es mucho más razonable.

    También es destacable el grado de aceptación de Angular. La cantidad de gente que lo abandona es bastante grande:

    http://stateofjs.com/2016/frontend/

    • Cecilio Álvarez Caules 1 Diciembre, 2016 at 11:37 #

      Gracias por el aporte 🙂 , entendiendo muy bien tu planteamiento y pienso que es también muy razonable , ¿que librerías usas tu para complementar React y acercarlo a un enfoque de framework completo? Gracias

    • Juancar 1 Diciembre, 2016 at 15:09 #

      Como librerías básicas para complementar a React utilizo Axios y Ramda (para mí: Ramda > Lodash > Underscore).

      • Cecilio Álvarez Caules 1 Diciembre, 2016 at 15:41 #

        No conozco Axios lo voy a echar un veo 🙂

    • Juancar 1 Diciembre, 2016 at 15:28 #

      Incluyo otra encuesta reciente sobre el estado del “front-end”:

      https://ashleynolan.co.uk/blog/frontend-tooling-survey-2016-results

      • Cecilio Álvarez Caules 1 Diciembre, 2016 at 15:42 #

        gracias

    • Alejandro Kennedy 21 Marzo, 2017 at 15:28 #

      Comparto totalmente, cuando termine de aprender AngularJS v1, sale el v2 totalmente diferente. No voy a migrar a la v2 a no ser que realmente necesite. AngularJS v1 me parece muy bueno.

      • Cecilio Álvarez Caules 21 Marzo, 2017 at 15:40 #

        Por ahora funciona muy bien 🙂

    • Joseph 31 Marzo, 2017 at 22:08 #

      Totalmente deacuerdo, el mayor problema es eso un “framework”, la mejor solucion es utilizar librerias existentes con las que te sientas mas comodo y cumplan su cometido, el principio de has pequeñas librerias pero que las hagan bien aplica muy bien en este mundillo, saludos!

  2. Alejandro 1 Diciembre, 2016 at 15:39 #

    Para generar una aplicación completa con arquitectura en React hay que agregarle muchas librerías, ya que React solo es una librería de la vista, por ejemplo yo suelo usar Redux, que no es precisamente fácil de aprender(al menos no para mi que soy programador Java) pero una vez que lo entiendes cambia tu forma de resolver los problemas, a ello hay que sumar librerías para normalización, internacionalización, etc, etc.
    Yo creo mas bien que el problema de Angular fue cuanto se demoraron en sacar la versión final, además que incluso en las versiones RC los cambios eran enormes, tanto que había que reescribir mucho código para irla adaptando a la versión final.
    Creo que los programadores javascript actualmente Angular les aleja de lo que venían haciendo en estos años, que es agregar librerías a su gusto y que es lo que React les deja la libertad de elegir. Pero para programadores java como yo, creo que prefieren una arquitectura completa sobre la que apoyarse y en la que lenguajes como Typescript se acerca en similitudes a java.

    Saludos,

    • Cecilio Álvarez Caules 1 Diciembre, 2016 at 15:41 #

      Muy buen aporte , muchas gracias

    • Lordexess 5 Diciembre, 2016 at 8:38 #

      Completamente de acuerdo.
      Además, los que “entramos nuevos”, viniendo de Java preferimos de largo TypeScript a JS. Es mucho más familiar, más estructurado, etc.

      • Cecilio Álvarez Caules 5 Diciembre, 2016 at 21:44 #

        Yo creo que aquí habrá mucha guerra entre la gente que prefiera typescript y los que usen ES6

        • Jag 23 Diciembre, 2016 at 15:52 #

          Es muy cierto que habrá guerra, pero Es6 es igual de fácil de aprender, pero al no saber mucho de fronted los desarrolladores de backend se inclinan por typescript es el símil de lo que conocen, pero a tener en cuenta Cecilio, que las opiniones anteriores son de mucho javero sesgado, que entre comillas eran full stack, pero el mundo ha cambiado mucho desde eso, ellos tratan de acomodarse con lo que saben mas no absorben de lo nuevo, este blog me gusta porque se habla de todo un poco y soy visitante frecuente. Soy javero de nacimiento, pero decidí hace mucho tiempo aprender otros lenguajes, otras bd….y varios frameworks y librerías de frontend, y es cuando uno ve el potencial de todo(Un panorama global). Angular 2 es bueno pero puedo hacer lo mismo con librerías propias. Concuerdo mucho con Juancar en sus opiniones.

          Mi recomendación a todos, si quieren ser full stack deben manejar mas de un lenguaje, aprender muy bien javascript….ser abiertos y críticos de cada tecnología.

          • Cecilio Álvarez Caules 23 Diciembre, 2016 at 16:29 #

            Opino como tú que hoy es necesario ser poliglota y estar abierto a nuevos lenguajes y tendencias.

  3. Jesús Perales 1 Diciembre, 2016 at 20:08 #

    Realmente angular 1 es bueno y aquí en México muy apenas comienza a llegar a las empresas, el problema con angular 2 es TypeScript, para mi gusto entre menos contacto tenga con Microsoft mejor xD, la cosa es que las anotaciónes llegaran hasta ES7, que sabe dios cuando estará listo y TypeScript ya las tenia, aun no se por que prefirieron TypeScript que Dart.

    Nodejs , para mi es el futuro, pero apenas comienza y tiene ya competición con vert.x y creo que ceylon y su ponto mas debil es que su ORM apenas comienza y no tiene algo como JPA en Java, el unico ORM que conozco para nodejs es waterline.

    https://carlosazaustre.es/blog/angular-2-primeros-pasos/

    https://github.com/balderdashy/waterline

    La cosa es que por el momento yo prefiero quedarme con angular 1 y hecharle un ojo a react y a angular 2.

    • Cecilio Álvarez Caules 1 Diciembre, 2016 at 21:39 #

      Creo que es una buena decision 🙂

    • Cecilio Álvarez Caules 1 Diciembre, 2016 at 21:41 #

      no conocía waterline , gracias por el aporte 😉

    • Jag 23 Diciembre, 2016 at 16:01 #

      Pues te diría que tienes razón, pero ni de a tanto, es imposible comparar algo como java a node, son enfoques tan distintos. Pero por otro lado la gente lo hace y sencillamente porque node es excelente en lo que hace, yo soy javero, pero he usado node en grandes proyectos, y no necesitas waterline asociado a sailjs, puedes usar si deseas mongoose con mongo, o en su defecto hacerlo con modelos mas flexibles a la final….

      Y para complementar un poco mira el enfoque de java8 y hacia donde se dirije …..compáralo con node…python o ruby…..mira sobre toda la base funcional que quiere trabajar….

      Con respecto a angular te digo sinceramente, por rendimiento y demás deberías ya estar en el 2(Que es hasta mas fácil), react es genial y con librerías adicionales le das poder (Angular igual necesita librerías adicionales). Por ultimo dale un vistazo a ember, es un framework genial que funciona de maravilla.

      • Cecilio Álvarez Caules 23 Diciembre, 2016 at 16:28 #

        Te agradezco el aporte 🙂 , siempre es bueno contrastar otras opiniones. A mi node a veces no me gusta que esta evolucinando constantemente , todo cambia cada demasiado poco tiempo.

  4. Carlos Alberto 2 Diciembre, 2016 at 18:22 #

    En mi humilde opinión creo que eso de estar trabajando css, html y javascript en sus versiones que sean es un problema, mezclamos tantas cosas y bueno al final terminamos lidiando con tantos archivos que la verdad estresa.

    así que estado viendo por ejemplo GWT y sus derivados y me parecen una buena opción y al final solo ves una sola cosa y punto.

    • Cecilio Álvarez Caules 3 Diciembre, 2016 at 19:31 #

      Yo creo que estos frameworks tipo Angular tienen un presente y futuro enorme . Eso sí hay gente que con herramientas tipo GWT y JSF han conseguido ser muy productivos.

    • Lordexess 5 Diciembre, 2016 at 8:43 #

      No te recomiendo GWT EN ABSOLUTO. Estuve trabajando con ese framework de transpilación y es lo peor que he visto. Tanto así que Google casi no lo usa (Y dudo que siga recibiendo soporte). Lo usaban en mi empresa y en el proceso de autocreación del CSS y el HTML, usando un RCP de Eclipse, creaba páginas pesadas de forma exagerada.
      Prefiero aprender JS ES6 que volver a pasar por ahí. La depuración era un maldito infierno.

      • Cecilio Álvarez Caules 5 Diciembre, 2016 at 21:43 #

        gracias por el aporte 🙂

  5. Angel 4 Diciembre, 2016 at 11:54 #

    Hola! tengo una duda diferente a este tema 🙂
    Cual es la diferencia entre Json Web Token y OAuth2??
    Tengo entendido que son para autenticacion por token, pero no logro comprender bien la diferencia entre estos dos.
    Recurro a ti por que siempre eres claro en tus explicaciones 😀
    Saludos y Gracias!!

    • Cecilio Álvarez Caules 21 Diciembre, 2016 at 18:43 #

      Se me había traspapelao 🙁 , OAuth es un framework completo , que usa tokens 😉

  6. jose 7 Diciembre, 2016 at 22:19 #

    Yo creo que el hecho de aprender algo nuevo no debería ser freno a su expansión porque es el ABC de esta profesión desde siempre. Además, yo creo que cualquiera que lleve unos años en este negocio ha usado Javascript y más de una librería en más de un proyecto, con lo que la elección de Typescript se agradece mucho de cara a resolver los problemas de tipos, modularidad y diseño de los que suelen carecer la mayoría de webs que usan Javascript plano. El único freno real que veo a la expansión de Angular 2 depende del número de servidores y licencias de Oracle, DB2, Websphere y Weblogic que se sigan negociando cada año (hay mucho dinero de por medio y los directores de IT de las grandes empresas, sobre todo banca y seguros, suelen ser muy reacios a cambios en hardware). El día que NodeJS o similares pesen más que Java EE en el backend y las empresas vean el ahorro real quizás se implanten más este tipo de frameworks. Por la parte cliente yo creo que está más que probada su eficacia. Los próximos movimientos lógicos serían que Typescript se integrara sin transpilar en el motor V9 de Chrome y además se ejecutara en la CLR de .NET

    • Cecilio Álvarez Caules 8 Diciembre, 2016 at 10:33 #

      Muy buen aporte , yo opino como tú puede ser a futuro un competidor de Java a través de Typescript

  7. Jairo 29 Diciembre, 2016 at 16:10 #

    Para mi angular 1 tiene mejor soporte y escalabilidad por su tiempo de vida, usar angular 2 seria muy apresurado, si es por ser mas cool usaria reacts js que es compatible con ES6, mediante Browserify.

    • Cecilio Álvarez Caules 29 Diciembre, 2016 at 19:19 #

      Yo opino parecido a ti angular 2 es un poco precipitado 🙂

Trackbacks/Pingbacks

  1. Vuejs una alternativa a React y Angular - Arquitectura Java - 9 Diciembre, 2016

    […] Otros artículos relacionados: Sublime React y el uso de JSX ,RxJS y la programación reactiva. , Angular 2 y el futuro de las arquitecturas web […]

Deja un comentario