Table of contents
This post will be not strictly connected with technology. There will be about my experience with the JHipster framework and also about my latest project.
Project explanation
Recently, I have been started the project of an app with Spring Boot and Angular.
I tried to use the JHipster framework for faster bootstrap an app because, in this special situation, the time has really matter, which you will get to know in a few next lines of text.
The origin of my JHipster experience
The main concept of the project was to provide a web platform for adding ads with searching for free transport from the Ukrainian border to Poland.
Why this kind of project was crucial a few days ago(I write this post on 06.03.2022)? And how the IT industry in Poland had helped with hosting the war refugees from Ukraine? You can read about it in my other article which will arrive in a few days. (Here will be the link ๐)
Now, we are going to write about JHipster.
What is JHipster?
JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.
Applications started with JHipster could be done with Spring Boot for backend + Angular / React / Vue for frontend.
Simply, it is the most popular tool for generating basic and boilerplate code for Spring Boot + frontend apps.
But is it really as good as is the common opinion about that? Let me try to explain.
How does it work?
First of all, JHipster is a tool, which has its own console application - something like npm/docker console app/etc.
We can specify starting parameters of our future app and JHipster create it for us. It connects a lot of more or less needed tools and configures it by default settings set by JHipster creators. There is my properties of first project:
My app was created as monolithic structure. What is definitely important is fact that we can also create full-configured microservices architecture app!
The big hug from JHipster was ability to create a multilungual app with just few clicks. My app main language was Polish, and second was Ukrainian. After some work, I also added English.
Ability to manage the creation of whole application, in some situations, it could be really helpful because we are able to create a basic, configured app in a few minutes! But sometimes, it could be definitely "overkill".
JHipster uses .jdl files to generate entities in Spring Boot, and it could be really helpful for people who are not familiar with Spring methods of handling entities.
On the other hand, if someone, like me, is used to Spring's traditional ways to handle DTOs, Entities, and other important components of an app, using JDL could be something new and not especially attractive.
To get to know more about JDL, click here.
Technologies which are used by JHipster
Backend technologies:
- Spring Boot
- Maven/Gradle for Spring dependencies manager
- Spring WebFlux
- Authentication options:
- Databases:
- Optional Elasticsearch / WebSockets / Kafka
Frontend technologies:
- Angular / React / Vue
- Bootstrap for responsive design
- i18n - for internationalization purposes
- custom webpack
- Sass support
Quick start
There are a few ways to install JHipster and start building an app, but I will describe the one that I used and which is recommended.
Installing requirements
- Install Java. Preferably version is 11.
- Install Node.js from Node.js website(LTS 64-bit version)
- Install JHipster in terminal:
Now, JHipster is installed. You can create an application.npm install -g generator-jhipster
Creating an app
- Create a new directory and go into it in terminal
- Type:
jhipster
- Set parameters of your app. The base could be something like this:
Starting an app
- To start backend and frontend at the same time:
./mvnw
- To start only frontend:
npm start
Personal feeling
In the first few hours of using the template of an app created by JHipster, I was really excited. The more I developed it, the more I was getting angry and confused.
There were some problems with injecting component in another component. There were problems with eslint which was configured too much sensitive for me. I had problems with beautifying a frontend.
Of course, I am not a developer who is omniscient and has 10+ years experience, but I am the type of developer as many of us. Who wants to have control over the code and architecture of an app. Of course, JHipster allows us to compose our ideal started app, but in my opinion, it does too much and connects too many tools which are not necessary for most of the projects.
JHipster gave me a lot of time-saving, but honestly, I spent a lot of time modifying created by it app to form what I needed. Unfortunately, I gave up on using the app created by JHipster and decided to create the new app from scratch.
The decision was determined by the need to create something easier to modify and more elastic. I wanted to have my own structure in app catalogs, my own additional plugins like prettier and eslint, with my own, simple but covering all needs configuration.
For me, the basic app created by JHipster was too complex and because of that, quite hard for modifying.
This does not mean, that JHipster was not helpful. It was really helpful, especially with fast bootstrap configured, ready-to-use app.
What is more, JHipster give us easy methods to provide authentication and authorization which could be quite hard to understand and not that easy to implement in apps created from scratch.
Conclusion - Is it really that good?
There is only one way to correctly answer this question - everyone should try JHipster in their project and evaluate by themselves. I can only tell about my personal view with my project, my dev habits, and my skills.
To conclude, if you want to save a lot of time and fast prototype something - you can use JHipster, but if you want to create an app with custom needs and you really like control over your work's details, you could be upset with using JHipster. But, this does not mean that you should not try. ๐ Maybe it will fit you better than me.
Resources:
[1] Own experience with JHipster ๐
[2] https://www.jhipster.tech/
[3] https://www.quora.com/Is-using-JHipster-in-complex-projects-a-good-idea
[4] https://www.north-47.com/knowledge-base/jhipster-is-it-worth-it/