Initial release | 21 October 2013 |
---|---|
Stable release | |
Written in | Java |
Operating system | Cross-platform |
Type | Web application framework |
License | Apache 2 License |
Website | jhipster github |
JHipster is an open source handy application generator used to develop quickly a modern web application using AngularJS and the Spring Framework.
Overview
editThe 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- 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
editTechnology stack on the client side
editSingle 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
editA 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
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
editJHipster 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
editA JHipster book [4] is being written by Matt Raible, the author of AppFuse.
Related tools
editReferences
edit- ^ "JHipster links Java and JavaScript for Web development". InfoWorld. Retrieved 2015-06-24.
- ^ "JHipster 2.0 Released with AngularJS improvements, Liquibase diffs, and Spring WebSockets". InfoQ. Retrieved 2015-06-24.
- ^ "Introducing JHipster".
- ^ "JHipster mini-book". Matt Raible. Retrieved 2015-06-24.
External links
editCategory:Java platform Category:Web application frameworks Category:Free software programmed in Java (programming language) Category:Agile software development Category:Software using the Apache license