> Faqs > Llevar a la web una aplicación desarrollada en Java

Llevar a la web una aplicación desarrollada en Java

Hace más de 6 años que me dedico al desarrollo en JAVASE y JAVAEE, todavía sin usar ningún framework, todo "a pelo". He visto tus manules de Node.JS y muchos de tus hangouts referentes a javascript y derivados y me parecen muy interesantes. Ahora, vamos a empezar a desarrollar una aplicación web para una empresa. Tendrá parte de escritorio y parte de web. Por cual recomiendas que me decante, Spring, AngularJS o NodeJS? Te hago esta consulta ya que he visto que dominas mucho este tema de "frameworks" y he estado buscando información y todos me parecen muy potentes, pero no acabo de decidirme realmente.

Respuestas

Creo que estás mezclando las cosas cuando mencionas "Spring" o "NodeJS" junto con "Angular". Hay que distinguir en la parte del frontal y la del back: Frontend / Backend.

Me figuro que los conceptos más o menos los debes de tener, programación del lado del cliente o del lado del servidor. "Spring" o "NodeJS" son tecnologías para el desarrollo de la parte del backend, el servidor. "AngularJS" es una tecnología para el desarrollo de la parte del cliente, frontend.

Si la aplicación ya la tenéis hecha en Java y tenéis experiencia desarrollando en este lenguaje, además de muchas librerías creadas por vuestra empresa para el tratamiento de esos datos mi consejo es que la parte del servidor, backend, la realices en Java, porque te será más rápido y al final la parte del servidor la puedes hacer en cualquier tipo de lenguaje.

Yo no tengo experiencia en el desarrollo del lado del servidor con Java y tengo entendido que es un poco pesado, pero seguramente vosotros ya tengáis experiencia optimizando las aplicaciones. En el caso de usar Java tengo entendido que Spring es una buena opción. Nosotros estamos a favor de aprender a usar frameworks. No solo porque te facilitan el inicio de un proyecto, sino porque te marcan un camino y una arquitectura probada que generalmente promueve buenas prácticas, testadas por una gran comunidad. Pero Ojo, si estás desarrollando para la web mi consejo es que separes muy bien la parte del frontal y la del backend.

Deben de ser dos proyectos independientes y por tanto poco acoplados. De modo que, si alguno de ellos necesita cambiar no estés obligado a cambiar todo.

El modo de trabajo habitual es la creación de un servicio web, o un API REST. Desde Java producirías un JSON que se consumiría para mostrar los datos desde la parte del cliente. Si necesitas referencias para entender mejor esa necesidad de separar proyectos te puedo pasar este manual que escribí a final de 2015: Costumbres deseables en el desarrollo para la web

En resumen, tu aplicación frontend recibiría los datos del API realizado en Java y los procesaría del lado del cliente con Javascript. Sería lo equivalente a la capa de presentación, que tú haces con Swing, pero orientado a la web, usando interfaces web y lenguajes web como Javascript.

Entonces, entre soluciones para hacer la parte del frontal, tendrías Angular o Web Components (Que es un estándar Javascript, al que se le suele agregar algún extra como LitElement). Son mis preferidas, aunque hay personas que les gusta React sobre todo por su sencillez.

Mencionas AngularJS, pero actualmente hay que usar Angular, que es la evolución de ese framework. Angular es un framework más potente, un poco más difícil de aprender pero que promueve arquitecturas y patrones de desarrollo importantes.

Web Components con LitElement tiene una arquitectura basada en componentes, como Angular, pero usa el estándar de los web components, que es Javascript nativo. Es decir, no reinventa tanto la rueda y usa más lo que el navegador tiene. Polymer es un equivalente a LitElement, que quizás hayas oído nombrar también. Ya no es tan recomendable, porque LitElement es mucho más rápido y ligero. Usa todavía más lo nativo de Javascript, por lo que las aplicaciones son mucho más cercanas al estándar de desarrollo. Web Components y LitElement es más sencillo de aprender y te deja más libre en cuanto a patrones de diseño, arquitecturas, etc.

Mi consejo es que pruebes ambas alternativas y veas la que más te interesa, porque es una decisión que debe ser tenida en cuenta con el marco de la app que tengas que desarrollar.

En cuanto a Angular encontrarás que hay documentación (manuales, libros y cursos) de Angular 1.x. No las tomes en cuenta, usa Angular 2 en adelante. O simplemente Angular, que es como se llama ahora el framework. Es muy potente y permitirá desarrollar aplicaciones reamlmente complejas con una base de código excelente.

Por lo que respecta a Web Components están ya soportados por todos los navegadores, por lo que es una excelente opción. Es adecuado para producción ya mismo. Yo creo que está en un grado de madurez muy bueno

Ambos, tanto Angular como Web Components promueven también interfaces de usuario avanzadas y reutilizables. Además tienen diversos sistemas de diseño ya implementados como "Material Design" que están muy bien para crear una app con una estética muy moderna y además usable.

Aparte de los manuales de DesarrolloWeb, por si te interesa, en EscuelaIT tenemos cursos de todo esto, realmente completos y siempre al día. También tenemos cursos de Spring para desarrollar en Java. Así que las tecnologías que me has mencionado (nodeJS incluido) las tenemos perfectamente documentadas en cursos, te pueden ahorrar muchas horas en formarte de manera autodidacta y nuestro apoyo para resolver este tipo de dudas. Espero haberte aclarado algo!

Miguel Angel
3295 146 215 17