JHipster es un generador de código que nos permite a través de Yeoman generar una aplicación spring-boot con un front-end en angularJS. JHipster es Open Source, su código fuente se puede encontrar en GitHub, la capa back-end está construida con Java y Spring-boot, el front-end es responsive y está implementado con angularJS y Bootstrap. Para la construcción del proyecto se utilizan varias herramientas como son Yeoman, Bower, Grunt, Maven, Gradle…

En este post vamos a ver cómo se crea una aplicación con JHipster, cuáles son las ventajas y los inconvenientes de utilizar este generador de código.

JHipster, or “Java Hipster,” is a handy application generator that will create for you a Spring Boot (that’s the Java part) and AngularJS (that’s the hipster part) application”.

JHipster utiliza las siguientes tecnologías en la capa front-end:

3

Y las siguientes en la capa back-end:

4

Como vemos existe una amplia variedad de librerías, herramientas, bases de datos… incluyendo las soluciones más populares del mercado. Aquí podéis ver el detalle de cada una de ellas.

JHipster es bastante conocido, tanto que hasta en el blog de Spring hablan de él, como se puede ver fue creado por un exempleado de Spring Source, Julien Dubois. El proyecto tiene en el momento en que se escribe este artículo 3518 estrellas en Github, lo cual lo convierte en una solución a tener en cuenta.

Creación de una aplicación

Para la creación de la aplicación JHipster te realiza 15 preguntas para determinar qué tecnologías incluir y qué código ha de generar. Las preguntas son las siguientes:

  1. What is the base name of your application?
  2. What is your default Java package name?
  3. Which type of authentication would you like to use? Aquí escogeremos entre tres opciones:
  4. Mecanismo de autenticación basado en sesiones
  5. Autenticación basada en OAuth 2.0
  6. Aproximación basada en tokens
  7. Which type of database would you like to use? Aquí tendremos las dos siguientes opciones:
  8. Base de datos SQL
  9. NoSQL: Cassandra o MongoDB
  10. Which production database would you like to use? La base de datos que usarás en tu entorno de producción.
  11. Which development database would you like to use? Base de datos que usarás para tu entorno de desarrollo. Tienes las siguientes opciones:
  12. H2 almacenando en memoria.
  13. H2 persistiendo a disco.
  14. La misma que hayas escogido para tu entorno de producción.
  15. Do you want to use Hibernate 2nd level cache? En caso de querer usarla podemos escoger entre caché local con ehcache o distribuida con Hazelcast.
  16. Do you want to use a search engine in your application? En caso de incluirlo se utilizará Elasticsearch.
  17. Do you want to use clustered HTTP sessions?
  18. Do you want to use WebSockets?
  19. Would you like to use Maven or Gradle?
  20. Would you like to use Grunt or Gulp.js for building the frontend?
  21. Would you like to use the LibSass stylesheet preprocessor for your CSS?
  22. Would you like to enable translation support with Angular Translate?
  23. Which testing frameworks would you like to use? Por defecto se incluyen tests unitarios/integración con JUnit para Java y unitarios con Karma.js para JavaScript. Esta opción nos permite incluir tests de rendimiento con Gatling o de comportamiento con Cucumber.

La aplicación generada incluye de serie funcionalidades como gestión de usuarios, seguridad, gestión de configuración, swagger… Se generan automáticamente pantallas de autenticación, de métricas, de auditoría, de gestión del nivel de log... A continuación se pueden ver capturas de algunas de esas pantallas, todas ellas generadas de forma automática:

5
6
7

Una vez tenemos el esqueleto de nuestra aplicación, un esqueleto bastante completo como podéis ver, JHipster también nos permitirá generar de forma automática el código y pantallas para la gestión de las operaciones CRUD sobre diferentes entidades. Simplemente nos preguntará qué entidades queremos crear, qué campos tendrán, sus tipos, si son obligatorios, cómo se relacionan… Esto lo podemos hacer desde la línea de comandos o si queremos existen herramientas para hacerlo de forma gráfica como JHipster UML o JDL Studio.

Aquí podéis encontrar el código de una aplicación de ejemplo, como véis la cantidad de clases y configuración generadas es bastante abundante. Además la aplicación se construye configurando dos perfiles, uno para desarrollo y otro para producción.

En estos vídeos (JHipster Blog Demo e Introduction to JHipster) podéis ver los pasos necesarios para crear un proyecto de cero, parte del código generado, cómo crear instancias, cómo interactuar con la aplicación, cómo desplegar...

Ventajas e inconvenientes

Este tipo de soluciones utilizadas para la generación de código tendrán una serie de ventajas, así como de inconvenientes. A continuación pasamos a detallar las ventajas:

Y ahora los inconvenientes:

Conclusión

JHipster es una herramienta muy interesante ya sea para utilizarla como tal para generar tus proyectos o a nivel de innovación como toma de contacto con nuevas tecnologías/frameworks/librerías o para entender el funcionamiento interno de un generador de código. Te proporciona un marco de trabajo innovador y de calidad con el que incluir las últimas tecnologías y convertir tu proyecto en un referente técnico.

Conceptualmente representa una idea interesante para implantar a nivel corporativo (ya sea JHipster como tal o hacer tu propia versión del mismo), yendo más allá de las típicas soluciones utilizando frameworks/librerías de software libre con ligeras modificaciones que tanto se dan en las grandes empresas. Siempre y cuando quieras meterte en ese bosque.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.