> 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.

Responder la pregunta
Editar Hacer otra preguntaPreguntar

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: http://www.desarrolloweb.com/manuales/innovacion-desarrollo.html 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 AngularJS o Polymer. Son mis preferidas, aunque hay personas que les gusta React sobre todo por su sencillez. AngularJS es un framework más potente, un poco más difícil de aprender pero que promueve arquitecturas y patrones de desarrollo importantes. Polymer tiene una arquitectura basada en componentes, como Angular2, pero usa el estándar de los web components, que es Javascript nativo. Es decir, Polymer no reinventa tanto la rueda y usa más lo que el navegador tiene. Polymer 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 la mayoría de la documentación (manuales, libros y cursos) es de Angular 1.x. Angular 2 está en versiones Release Candidate, pero para una aplicación como la vuestra que seguramente lleve varios meses de desarrollo opinamos que se debe escoger Angular 2, ya que permitirá un horizonte de uso mayor. Además, en un mes o dos deben tener la versión final, por lo que el tiempo que llevarás en formarte y organizar las ideas, previsiblemente ya comenzarás con la versión final. Por lo que respecta a Polymer están en versiones 1.4 y es adecuado para producción ya mismo. No obstante, van muy muy rápido sacando cosas casi todos los meses. Yo creo que está en un grado de madurez muy bueno y las novedades de los últimos meses te permiten crear apps en Polymer muy potentes. Ambos, tanto Angular como Polymer promueven también interfaces de usuario "material design" que están muy bien para crear una app con una estética muy moderna y además usable. Por si te interesa, en EscuelaIT vamos a comenzar ahora el curso de Angular 2. Además tenemos un magnífico curso de Polymer. Y el mes que viene curiosamente tb vamos a comenzar un curso de Spring. 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
516 26 36 2