JHipster (Java Hipster) – A Full Stack Web Development Platform for the Modern Developer
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
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.
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.
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.
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:
- 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.
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
- 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.
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.
- 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.
- 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.
- 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.
- 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:
- 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.
- Cassandra: Cassandra 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.
- 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
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.
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.
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.