JHipster – Le générateur d’application moderne

Je suis développeur et je cherche toujours à être au courant des dernières nouveautés en terme de technologies ou d’architecture. Etant en train de refaire MovieLike entièrement, j’ai donc cherché quelle était la meilleure architecture pour mon besoin. Trois solutions pour moi. La première était de développer le site avec un nouveau framework PHP (Laravel, CakePhp), mais je commence à saturer un peu avec le PHP même si c’est le premier langage que j’ai vraiment utilisé. Deuxième option, apprendre Ruby et notamment RubyOnRails. Ce serait pour moi un nouveau challenge mais cela demandait beaucoup d’investissement pour une technologie peu utilisée.

J’ai donc choisi la troisième option : un serveur REST couplé à un site Javascript Single Page App. C’est très utilisé aujourd’hui, performant, malléable et dans la philosophie des micro services (lire le très bon post de Xebia). Et quoi de mieux pour développer mon serveur REST que Java, que j’utilise professionnellement et qui a prouvé sa valeur.

Et c’est donc après ce choix qu’intervient JHipster. JHipster (contraction de Java, langage cœur du serveur et Hipster pour le côté hype) est un générateur (à base de Yeoman) qui permet de créer rapidement une application complète. A tout de suite pour plus de détails.

jhipster

JHipster

Alors, que contient JHipster ? Je l’ai dit, le générateur est basé sur Yeoman. SpringBoot permet d’initialiser très rapidement la partie backend et Angular pour le front. Disons que ceci constitue le core. Même si cela suffirait amplement, Julien Dubois, créateur de JHipster a eu la bonne idée d’y ajouter :

  • côté Front :
    • HTML5/CSS3
    • Bootstrap et Sass pour le CSS
    • Angular Translate pour l’internationalisation
    • Bower pour la gestion de librairies
    • Karma/PhantomJS pour les tests
    • Grunt/Gulp pour gérer le build, l’optimisation et le reload automatique
  • côté Back :
    • Spring Security
    • Spring MVC REST et Jackson pour la partie REST/json
    • Spring Data
    • Maven/Gradle pour les dépendances et la compilation
    • MySQL/MongoDB/Cassandra au choix pour la base (et même d’autres)
    • LiquiBase pour la gestion de la structure de la base
    • ElasticSearch pour des recherches rapides
    • tout ce qui faut pour les tests, le cache, les logs

Et oui, beaucoup de choses. Ne vous inquiétez pas, tout n’est pas utilisé/utilisable dans la même application et la plupart des outils mis à disposition sont transparents.

Demo

Pour utiliser JHipster, il faut avoir installé le gestionnaire de paquets NPM et les dépendances requises (gulp, java, maven, git, yo, bower). Ensuite, saisissez la commande suivante pour installer l’outil :
[bash]npm install -g generator-jhipster[/bash]
Puis pour créer votre application, placez vous dans un nouveau répertoire :
[bash]yo jhipster[/bash]
JHipster vous posera plein de questions (le curieux) qui permettront de spécifier votre application et les outils utilisés. Rien de définitif mais mieux vaut tester plusieurs options avant de vous lancer dans le projet final.

jhipster

Une fois l’application générée, il ne vous reste plus qu’à lancer le serveur (tomcat) grâce à la commande mvn et admirer votre application. Il est maintenant temps de créer des entités :
[bash]yo jhipster:entity author[/bash]
Quelques questions et votre entité se retrouve en base, gérée par le serveur, dans un service REST et avec des écrans de CRUD dans l’application !!!

jhipster_3

Conclusion

JHipster permet de générer très rapidement un socle de développement et des entités. Ensuite, c’est à vous d’enrichir votre application selon vos besoins. Attention, la génération est pensée pour être faite une fois, ce qui signifie que si vous réutilisez JHipster pour générer à nouveau votre application, vous perdrez toute modification.

Il faut donc comprendre que JHipster est plus un outil d’aide au développement (et surtout au lancement d’un projet), proposant une très bonne stack générique mais paramétrable pour coder proprement et rapidement. Dites-moi si je me trompe mais c’est la définition même d’un framework.

La version 3.0 qui devrait arriver prochainement est orientée micro services, apporte des optimisations (gulp, update des entities, …) et proposera les JSON Web Token pour l’authentification.

Vous pouvez retrouver toutes les informations sur le site officiel de JHipster, et le GitHub (oui, parce que c’est un projet Open Source). Si vous êtes développeur et que vous êtes intéressé par ces technologies, n’hésitez pas à faire un test avec JHipster une après-midi pluvieuse.

Je vous laisse une vidéo de démonstration par l’auteur lui-même :

Vous aimerez aussi...

3 réponses

  1. jonathan dipita dit :

    bonsoir,
    je viens de tomber sur votre site car je veux me lancer dans l’apprentissage de ce framework mais je suis un peu perdu par toutes les technologies et outils cités plus haut. quelles sont les bases à avoir pour bien démarrer et les outils nécéssaires.

    cordialement.

    • Beslay Cyril dit :

      Bonjour,

      Je pense que les 2 bases essentielles pour appréhender ce framework sont Angular (en version 2) et Spring. Tu peux commencer par générer des projets pour voir comment tout fonctionne ensemble et créer des pages ou classes en copiant ce qui est généré.
      Au niveau outillage, n’importe quel PC fera l’affaire. N’hésites pas à suivre le tutoriel d’installation de jHipster et choisit ton éditeur préféré.

  2. pasall dit :

    Bonjour,
    J’ai récemment commencé à bosser avec JHipster, j’ai généré un projet qui marche bien et que j’ai commencé à customiser.
    Mais j’ai un petit soucis . Je viens ajouter une nouvelle page html avec son contrôleur et son state. J’ai ensuite compilé et relancer mon projet en pointant sur cette page mais rien ne s’affiche. Le contenu de mon html ne s’affiche pas. Comment dois rebuilder le projet pour que ma nouvelle page soit prise en compte. A votre avis qu’est ce qui peut etre à l’origine?
    Par avance merci de votre réponse.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *