JHipster – A Full Stack Web Development Platform for the Modern Developer

superior_hosting_service

FULL

According to the Stack Overflow Developer survey 2019, about 51% of developers are full-stack developers. So, what makes a developer a full-stack developer? A full-stack developer is the one who plays with all facets of the development process, from front-end to back-end, to databases, and testing and debugging. Here, stack refers to a wide variety of components and tools that contribute to the development of an application. 


In this feature, we will discuss JHipster, a full-stack development platform that can eliminate 70% of your effort in writing boilerplate code and setting up libraries. JHipster helps you to focus on business logic rather than spending time in integrating technologies. It supports a wide array of modern web application technologies. Let’s look at the different technologies supported in JHipster.

  • Client-side technologies
  • Server-side technologies
  • Other supporting tools
  • Deployment options

Client-Side Technologies

In recent years, client-side technologies have grown rapidly from single-page applications to the MVVM (Model-View-ViewModel) framework. This technological advancement became overwhelming for developers. The good news is that the JHipster supports a wide array of client-side technologies. Here, we will discuss the important client-side technologies supported in JHipster.

  • UI Technologies
  • MVVM Framework
  • Testing Framework
  • Other Tools

1. UI Technologies

JHipster supports various UI technologies. Let’s have a look at a few UI technologies.

  • HTML5 and CSS3: HTML5 is the latest release of HTML that has new elements, attributes, and behavior. The release has offered support for features such as connectivity – Web Sockets and WebRTC –, offline storage, device access, 2D/3D Graphics – Canvas, WebGL, and SVG –, and more. Whereas, CSS3 is the latest release of CSS. It offers many features such as media query, flexbox, animations, etc.
     
  • Bootstrap: Bootstrap is the world’s most popular UI framework. It features SaaS variables and Mixins and also supports powerful JavaScript plugins.

2. MVVM Framework

Model-View-View-Model (MVVM) is an architectural pattern that separates UI from the server-side. JHipster supports Angular and React frameworks. 

A. Angular

Angular is a typescript based MVVM framework for building mobile and desktop web applications. Some features of Angular are as follows:

  • Angular ensures high performance, offline, and zero-step installation.
  • With the new component router, it provides automatic code-splitting and faster loading of the app.
  • It delivers simple and powerful template syntax for UI views.
  • It uses strategies from Cordova, Ionic, or NativeScript for mobile apps.
  • It provides a powerful command-line tool, called Angular CLI, to develop and maintain angular applications.
  • It also introduced concepts such as Ahead of Time Compilation (AOT), lazy loading, reactive programming, and so on.

B. React

React is a JavaScript library for developing user interfaces, and uses an XML like syntax called JSX to write React components.  It is not a fully established MVVM framework – it only deals with the rendering of UI. But, React allows interfacing with other libraries to offer features similar to Angular. These libraries include React Router, Redux, MobX, and so on. Normally, JHipster uses TypeScript to code React. But it can also be coded using JavaScript as well.

3. Testing Framework

Due to the significant growth of the client-side framework, there also arises the need for client-side testing frameworks. JHipster supports various client-side testing frameworks for unit testing, and as well as end-to-end testing. They are as follows:

  • Jasmine: It is a testing framework for JavaScript code; Jasmine is a behavior-driven unit testing framework and has reader-friendly syntax.
  • Mocha: Mocha is a feature-packed testing framework for JavaScript code. It provides numerous features such as global variable leak detection, simple async support, test coverage reporting, node native ES modules support, node debugger support, and more.
  • Quint: Quint is a powerful easy-to-use JavaScript testing framework. It requires only a minimal configuration setup for browser-based projects, and zero-configuration set up for Node.js projects. This framework provides the flexibility to run the test anywhere and has flexible APIs for custom assertions.
  • Protractor: It is an end-to-end testing framework developed for Angular and Angular JS applications. Protractor is built on top of WebDriverJS that offers an easy user interaction with the application. And also, it can automatically execute the next task upon finishing the pending tasks.4. 

4. Other tools

A few of the other tools supported in JHipster are:

  • Webpack: It is a bundler that has flexible plugins to bundle your scripts, images, styles, etc.
  • BrowserSync: It is a time-saving browser synchronized testing tool. BrowserSync is packed with features such as auto-reload on file changes, synchronized UI interactions, and so on.  By integrating with Webpack/GulpJS, you can experience a productive development set up.
  • Karma: Karma is a test runner that executes JavaScript test codes. It provides a productive testing environment by creating a web server where it eliminates the need to set up loads of configuration. It supports testing frameworks such as Jasmine, Mocha.

Server-Side Technologies

With the evolution of server-side technologies, developers were able to provide a rich set of features using a wide array of tools and technologies. Let’s take a look at the important technologies supported by JHipster.

  • Application Framework
  • Security
  • Testing tools
  • Build Tools
  • Database options

1. Application Framework

With the rise of the Spring framework, there was a significant reduction in demand for JavaEE. Also, Hibernate is another core concept that needs to be considered. Let’s discuss them below.

  • Spring Framework: Spring is the most popular Java web application framework that makes Java modern, productive, reactive, and cloud-ready. Spring uses the principle of Inversion of Control (IoC) that provides dependency injection and application context. One of the highlighting features of Spring is that it combines IoC, Aspect-Oriented Programming (AOP), and technology abstraction in a persistent way. Some modules in the Spring framework are Spring Boot, Spring Security, Spring MVC, Spring data, and more.
     
  • Hibernate: Hibernate is the best-known Object Relational Mapping (ORM) tool for Java that maps an object-oriented domain model to a relational database scheme. It uses Java annotations for mapping and also implements a Java Persistence API (JPA) based data access layer. Some other features provided by Hibernate are:
    • Full-text search for your domain model.
    • Annotations based constraints.
    • Domain model persistence for NoSQL datastores.
    • Command-line tools and IDE plugins.

2. Security 

JHipster supports a wide variety of security mechanisms. They are as follows:

  • JWT: JSON Web Tokens are an open, industry-standard RFC 7519 method that provides security between two parties. Here, the server provides a JWT token to the client upon successfully validating the client credentials.
  • Session: It is a traditional authentication mechanism in which the server creates and maintains a session for clients who are successfully logged in. JHipster provides more addons on top of this traditional mechanism.
  • OAuth2: It provides a specific authorization and authentication flow for applications. OAuth2 is more complicated compared to other authentication mechanisms. Here, it uses the scope mechanism where user access can be limited to certain services of an application. JHipster uses OpenID connect to support the OAuth2 mechanism.

3. Testing Tools

The testing tools supported in JHipster are as follows.

  • JUnit: JUnit is a Java testing framework, which is used mainly for unit testing. But it can also be used for integration testing when combined with the Spring Test framework.
  • Gatling: It is a tool to perform load testing for your web application. Gatling uses Scala DSL to write test specs, and It is an essential tool to test the performance of critical applications.
  • Cucumber: It is a Behavior-Driven Development (BDD) testing framework. Cucumber is mainly used for acceptance testing.

4. Build Tools

Maven and Gradle are the two server-side build tools supported in JHipster.

  • Maven: It is a software project management tool that manages the build, reporting, and documentation of a project. Maven uses the concept of the project object model (POM) to state the build process. It has a rich set of plugins.
  • Gradle: It is a build tool that accelerates developer’s productivity. Gradle helps to build, automate, and deliver projects at a fast pace. It uses Groovy DSL to set the build plan and dependencies.

5. Database Options

JHipster provides support to a wide array of databases that includes both SQL and NoSQL databases.

A. SQL Databases

The SQL databases supported in JHipster are H2, MySQL, MariaDB, PostgreSQL, MS SQL, and Oracle. Below we will discuss a few of them.

  1. MariaDB: It is an open-source relational database that offers fast, scalable, and robust service. MariaDB has a rich ecosystem of storage engines and plugins. The latest version of MariaDB has GIS and JSON features.
  2. PostgreSQL: PostgreSQL is another open-source object-relational database system that offers reliability, robustness, and performance. It supports advanced indexing techniques such as GiST, GIN, Covering Indexes, Booming filters, and more. PostgreSQL provides high-security options that include GSSAPI, SSPI, LDAP, SCRAM-SHA-256.  One of the other features of PostgreSQL is the JSON object storage, which makes it possible to use it as a hybrid model.
  3. MS SQL: It is an enterprise database system and requires a paid license. MS SQL is a popular choice for intelligent and mission-critical applications.
  4. Oracle: It provides a performant architecture for accessing and maintaining data. Oracle has enterprise-ready features such as sharding, replication, high availability, and so on.

B. NoSQL Databases

The NoSQL databases supported in JHipster are as follows:

  1. MongoDB: MongoDB is a document-based, distributed database. It stores data in JSON format that makes it more powerful and expressive. It supports aggregations and other features such as geo-based search, graph search, and text search.
  2. Cassandra: Casandra is a popular NoSQL database because of its fundamental architectural choices. Its linear scalability and fault tolerance features make it the best fit for mission-critical applications.
  3. Elasticsearch: Elasticsearch is a NoSQL database, but it is primarily used as a search engine on account of its indexing capability and performance.

Other Development Tools

1. GIT

GIT is an open-source distributed version control system for source code management. It has a variety of features that include branching and merging, convenient staging areas, multiple workflows, and more. JHipster uses GIT for application upgrade and also for the smooth working of Node.js and NPM ecosystems.

2. Node.js

Node.js is a JavaScript runtime environment, which is managed by NPM.  The JHipster CLI requires Node.js to run the application because it depends on the NodeJS application. Many of the tools used in the application also need NodeJS.

3. Docker

Docker is an open-source technology that offers operating-system-level virtualization or containerization. It helps to create containers that are easy to build, deploy, version, and share. It contains dependencies that are needed for the application to run on the host OS. For this reason, it is lighter than the virtual machine. Docker allows even more applications to run on the same hardware compared to VM.

Deployment Options

1. Heroku

Heroku is a cloud platform to deploy, manage, and scale apps. It focuses on applications instead of containers and supports a wide range of programming languages. JHipster uses the Heroku sub-generator to deploy and update JHipster apps to the Heroku cloud platform.

2. Cloud Foundry

Cloud Foundry is a multi-cloud computing platform that has a container-based architecture. It can run applications developed on any programming language, and it won’t interrupt your current workflow. The applications are deployed with the help of the JHipster sub-generator.

3. Amazon Web Services

AWS is a cloud computing platform that provides platform, software, and infrastructure as a service. Elastic Beanstalk from AWS is an easy-to-use platform to deploy and scale your applications. Using sub-generators, JHipster can deploy an application to AWS.  

JHipster is becoming popular among Full-stack developers. With JHipster, you can focus more on business logic, and it supports a wide array of web application technologies. It has more than 400 contributors – Google, Redhat, Heroku are some official contributors.  Enjoy coding with JHipster and become an efficient jack of all trades.