User:Athakur3/sandbox

JHipster is an open source handy application generator used to develop quickly a modern web application using AngularJS and the Spring Framework.

Overview
The term 'JHipster' comes from 'Java Hipster', as its initial goal was to use all the modern and 'hype' tools available at the time. Today, it has reached a more enterprise goal, with a strong focus on developer productivity, tooling and quality.

JHipster provides tools to generate an application with a Java back-end using Spring technologies ,an Angular.js front end and a suite of pre-configured development tools like Yeoman, Maven, Gradle, Grunt, Gulp.js and Bower. JHipster creates a fully configured Spring Boot application with a set of pre-defined screens for user management, monitoring, and logging.

Major functionalities

 * Generate a full stack application, with many options
 * Generate CRUD entities
 * Database migrations with Liquibase
 * Choice between classical SQL database (accessed using Spring Data JPA) and NoSQL databases support (Cassandra, MongoDB)
 * Elasticsearch support
 * Websockets support
 * Automatic deployment to CloudFoundry, Heroku, OpenShift
 * Docker to setup development box

Technology stack on the client side
Single Web page application: With the great Yeoman development workflow: And what if a single Web page application isn't enough for your needs?
 * Responsive Web Design
 * HTML5 Boilerplate
 * Twitter Bootstrap
 * AngularJS
 * Compatible with IE9+ and modern browsers
 * Full internationalization support with Angular Translate
 * Optional Sass support for CSS design
 * Optional WebSocket support with Spring Websocket
 * Easy installation of new JavaScript libraries with Bower
 * Build, optimization and live reload with Grunt or Gulp.js
 * Testing with Karma and PhantomJS
 * Support for the Thymeleaf template engine, to generate Web pages on the server side

Technology stack on the server side
A complete Spring application: Ready to go into production:
 * Spring Boot for easy application configuration
 * Maven or Gradle configuration for building, testing and running the application
 * "development" and "production" profiles (both for Maven and Gradle)
 * Spring Security
 * Spring MVC REST + Jackson
 * Optional WebSocket support with Spring Websocket
 * Spring Data JPA + Bean Validation
 * Database updates with Liquibase
 * Elasticsearch support if you want to have search capabilities on top of your database
 * MongoDB support if you'd rather use a document-oriented NoSQL database instead of JPA
 * Cassandra support if you'd rather use a column-oriented NoSQL database instead of JPA
 * Monitoring with Metrics
 * Caching with ehcache (local cache) or hazelcast (distributed cache)
 * Optional HTTP session clustering with hazelcast
 * Optimized static resources (gzip filter, HTTP cache headers)
 * Log management with Logback, configurable at runtime
 * Connection pooling with HikariCP for optimum performance
 * Builds a standard WAR file or an executable JAR file

Developing with JHipster
JHipster is an application starter, but once the application is generated and some CRUD Angular.JS screens have been added on top of JPA entities, coding will be required.

JHipster projects are simple Spring Boot-based Maven and Gradle-based projects that can be imported into any IDE that knows about Maven (or Gradle) and Java.

JHipster gives command-line tools to build and update application. Grunt or Gulp.js helps build front-end. For example, running  will launch a browser that is managed by Grunt, that will be automatically reloaded when any of HTML, JavaScript, or CSS code change. Bower allows to upgrade or install JavaScript or CSS libraries. For example, running  will install.

Spring Boot application can be executed from the command line using the Spring Boot Maven plugin (or Gradle plugin):. The Maven Liquibase goal can be used to automatically generate a Liquibase changelog. Run  will check existing database schema against current (modified) JPA code and generate the necessary Liquibase changelog file in order to update database schema automatically.

Docker can be used to set up development box. It allows to have a consistent working environment if there is a team of developers. A specific  project has been created for this. Check out the JHipster documentation page on installation for more details.

Managing the Application in Production
JHipster applications have a configured-by-default  user that has access to several administration-specific screens. The three most interesting screens are the API screen (generated with Swagger), the metrics screen, and the logging screen. The API screendocuments the REST API of Spring Boot application and simplifies working with front-end developers using Angular.JS. The metrics screen uses Dropwizard Metrics and gives detailed information on the application’s performance, including the performance of Spring bean’s methods. The logging screen uses Logback and allows to change your logging levels at runtime. For example, the logging level of Spring Security can be changed in order to have detailed information on security configuration.

JHipster has a  and a   mode. The  mode gives a minified and optimized front-end, GZip compression, HTTP caching and more. In order to test the  mode, run application with the   profile (available both with Maven or Gradle):.

Book
A JHipster book is being written by Matt Raible, the author of AppFuse.

Related tools

 * AppFuse
 * Mean