VT2017 JHipster

=Présentation=
 * Sujet : JHipster
 * Auteur : Louis Cochinho
 * Enseignants : Didier Donsez et Georges-Pierre Bonneau

=Résumé= JHipster est un générateur d'application libre et open source créé en novembre 2013 par M. Julien Dubois. C'est une technologie utilisée pour poser les bases architecturales d'une application web moderne, et ce de manière très rapide. Contrairement aux autres générateurs existants sur le marché, JHipster construit en une seule génération toute les couches logicielles de l'application, de l'accès à la base de données, jusqu'au interfaces graphiques. Pour cela, la technologie s'appuie sur les framework Springboot côté serveur et angularJS côté client.

=Abstract= JHipster is a free and open source application generator created in November 2013 by Julien Dubois. It is a technology used to lay the architectural foundations of a modern web application, and this very quickly. Unlike other generators on the market, JHipster builds all application software layers from database access to graphical interfaces in a single generation. For this, the technology is based on the server-side Springboot and client-side angularJS framework.

=Mots-clés=
 * Web
 * AngularJS
 * Java
 * Springboot
 * Générateur

=Motivations= Aujourd’hui une application web doit être rapide, robuste et agréable à utiliser. Pour cela, les développeurs doivent s’appuyer sur les dernières technologies Web comme HTML5/CSS3 Javascript avec AngularJS par exemple. L’application doit aussi être capable de supporter un nombre important d’utilisateur concurrents et donc de s’appuyer sur des serveurs back-end performants.

Actuellement, pour construire l’architecture d’une nouvelle application web, beaucoup de développeurs utilisent plusieurs générateurs d’applications, généralement un pour le Front-End et un autre pour le Back-End. JHipster combine cela en un seul générateur et va donc fournir toute la pile coté client avec AngularJS et coté serveur avec le framework Java Springboot. JHipster fournit également des outils pour aider le développeur dans son travail.

=Générateur Back-End= En termes de génération côté serveur, JHipster s'appuie sur Spring boot. Spring c’est un framework qui définit et construit une architecture Java. Spring boot est un projet qui permet de créer une application Spring Java sans passer par toute les phases de configuration qui peuvent s’avérer fastidieuse surtout pour des novices. JHipster offre aussi Spring Security, un framework qui gère l'authentification et contrôle d’accès sur les applications Spring. En fonction du type de base de données que le développeur choisit d'utiliser, JHipster vous propose plusieurs Data Access Layer différents. Soit Spring Data JPA pour une base de données relationnelle "classique" de type MySQL, soit MongoDB pour une base NoSQL. En termes de build, le développeur a le choix en Maven ou Gradle côté Java et entre Gulp et GruntJS côté client.

=Générateur Front-End= Au niveau du Front-End JHipster vous propose le framework AngularJS. Par défaut, JHipster génère une single web page application mais ce n’est pas obligatoire, le développeur peut décider de faire une application classique avec plusieurs pages. En termes de templates d'interfaces graphiques, JHipster s’appuie sur HTML5 Boilerplate et twitter Bootstrap les deux outils les plus courants de création de pages web design et responsive.Enfin, un mécanisme de websocket est utilisé pour communiquer avec le serveur.

=Les outils= JHipster est un générateur Yeoman. Yeoman est un générateur de code que l’on peut run avec la commande yo sur NodeJS. JHipster est actuellement le 3ème générateur Yeoman le plus utilisé. Via Yeoman, JHipster va fournir toute une pile d’outils côté client qui vont permettre de développer rapidement des applications web modernes. Parmi ces outils on retrouvera notamment Webpack, BrowserSync et Karma. Webpack optimise le code à la compilation, BrowserSync fait de l’auto-refresh quand on modifie le code et Karma génère des tests unitaires. Au moment où l'on crée une application JHipster le développeur a des choix à faire. En termes de build Java on a le choix entre Maven ou Gradle qui sont les deux gros outils de build. Et pour le build côté front, on a le choix entre les deux plus classiques à savoir Grunt ou Gulp.js. Au moment de générer votre application, JHipster demande de choisir parmi ces différents builder, ce qui permet au développeur de construire son application comme il l'entend, à la carte. Enfin, JHipster intègre l’outil Bower qui est un outil pour installer et inclure des librairies JS dans l’application.

=Références=
 * http://www.jhipster.tech/


 * http://humantalks.com/talks/494-jhipster-un-generateur-yeoman-pour-angularjs-et-sp


 * https://blog.ippon.fr/2014/11/19/jhipster-dans-la-pratique/