Why JHipster? AngularJS Spring-Boot Liquibase MongoDB ElasticSearch

In the last few years the face of web development has undergone some significant changes. New technologies have appeared that have added some radically different choices for building web applications. The three major pieces involved in a web app, the client, the server, and the database, have each seen widespread changes in what is available.

When web applications first became popular, clients were simply a combination of HTML and CSS. Use of JavaScript was negligible. Over the past 15 years that trend has slowly and consistently changed such that more and more client-side code is included in web applications.

At first, JavaScript was used strictly for validation. Then, more and more sites started using it to enhance the display and method referred to as dynamic HTML, or just DHTML. Slowly, a technology invented by Microsoft and adopted by the other browser manufacturers called the XML Http request object, or XHR for short, began to be used to get information from the server without requesting an entirely new page.

As all the capabilities got more and more traction, a series of libraries were developed by various people that grouped up functionality and managed differences in browser implementation, drastically lowering the bar for developers to take advantage of these browser abilities. That is where Angular comes in. Of all the MVC frameworks developed, Angular has taken the stage by storm, becoming, if not the most used, at least the most talked about and most popular of the MVC frameworks and at its current paced will quickly become the most implemented of these frameworks. Being sponsored by Google while still being open source is also a big contributing factor to this popularity.

To build a successful web application, we need to think of several frameworks for front-end and back-end, to cover our Crud operations, validation, security, responsive website, database versioning and much more…

Here comes JHipster, with JHipster we can combine all those technologies and more. The goal of JHipster to generate a complete modern web application without the installation overhead.

architecture

Why JHipster?

Client Side

– 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 Compass / 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

Server Side

– 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

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

Authorization & Authentication

– HTTP Session Authentication
– OAuth2 Authentication
– Token-based authentication

More about security

Tutorial to JHipster (20m)

This 20 minutes tutorial shows how to create a JHipster application, work with the provided tools (Maven, Grunt), use the entity sub-generator to create 2 entities with a one-to-many relationship, and deploy the end result to the cloud in production.

https://jhipster.github.io/video_tutorial.html

Introducing JHipster (1h 34m)

JHipster Demo (55m)


JHipster in production:


 

References:

JHipster website:

http://jhipster.github.io/

JHipster presentation:

This Week in Spring – April 15th, 2015!

https://spring.io/blog/2015/04/14/this-week-in-spring-april-15th-2015

Give It A Try!

In 20 Minutes, You Can Have JHipster Running! I Would Say… Give It A Try!

githubjhipster

Why JHipster? AngularJS Spring-Boot Liquibase MongoDB ElasticSearch

  • Joost Janssen

    Nice blog item Gabriel, I like the part where u take us through time.