User:Athakur3/sandbox

From Wikipedia, the free encyclopedia
Initial release21 October 2013; 10 years ago (2013-10-21)
Stable release
Written inJava
Operating systemCross-platform
TypeWeb application framework
LicenseApache 2 License
Websitejhipster.github.io
github.com/jhipster/generator-jhipster

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

Overview[edit]

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

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[edit]

Technology stack[edit]

Technology stack on the client side[edit]

Single Web page application:

  • 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

With the great Yeoman development workflow:

  • Easy installation of new JavaScript libraries with Bower
  • Build, optimization and live reload with Grunt or Gulp.js
  • Testing with Karma and PhantomJS

And what if a single Web page application isn't enough for your needs?

  • Support for the Thymeleaf template engine, to generate Web pages on the server side
Technology stack on the server side[edit]

A complete Spring application:

  • 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

Ready to go into production:

  • 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[3][edit]

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 grunt serve 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 bower install ng-table will install ng-table.

Spring Boot application can be executed from the command line using the Spring Boot Maven plugin (or Gradle plugin): mvn spring-boot:run. The Maven Liquibasediff goal can be used to automatically generate a Liquibase changelog. Run mvn liquibase:diff 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 jhipster-docker project has been created for this. Check out the JHipster documentation page on installation for more details.

Managing the Application in Production[edit]

JHipster applications have a configured-by-default admin 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 development and a production mode. The production mode gives a minified and optimized front-end, GZip compression, HTTP caching and more. In order to test the production mode, run application with the prod profile (available both with Maven or Gradle): mvn spring-boot:run -Pprod.

Book[edit]

A JHipster book [4] is being written by Matt Raible, the author of AppFuse.

Related tools[edit]

References[edit]

  1. ^ "JHipster links Java and JavaScript for Web development". InfoWorld. Retrieved 2015-06-24.
  2. ^ "JHipster 2.0 Released with AngularJS improvements, Liquibase diffs, and Spring WebSockets". InfoQ. Retrieved 2015-06-24.
  3. ^ "Introducing JHipster".
  4. ^ "JHipster mini-book". Matt Raible. Retrieved 2015-06-24.

External links[edit]

Category:Java platform Category:Web application frameworks Category:Free software programmed in Java (programming language) Category:Agile software development Category:Software using the Apache license