Java Full-Stack Index Dec 2021
See Current Version
I recommend JVM languages, databases, back-end frameworks, and front-end frameworks. My recommendations are based on popularity, industry analysis, and my 22 years of Java experience. For popularity, I analyze job ads from 63 countries, online training students, Stack Overflow questions, and Google searches.
I collected the data for this index November 24-26, 2021.
Why Popularity - and How?
- Picking a popular technology makes our developer life easier: Easier to learn, easier to build, debug & deploy, easier to hire, and easier to convince teammates & bosses.
- Popularity can make a difference in two situations: When multiple technologies score the same, you could go for the most popular one. And when a technology is very unpopular, we may not use it.
- I look at technology popularity as a funnel from interest to learning, application, and finally to skill.
- Quantity decreases in the funnel - we’re interested in many technologies, but few end up on our resumes.
- Time increases in the funnel - it takes many months, often years, for technology to move from “interest” to “skill”.
- We’re interested in the trend of the ratio between competing technologies.
- We use Google searches to measure interest, Udemy course buyers to measure learning, Stack Overflow questions to measure learning & application, and mentions in Indeed job ads to measure skills.
- On your current project, keep your existing language unless that language is absolutely, really not working out for you.
- If you need to switch languages or are on a new project:
- Use Scala if you need functional programming.
- Use Kotlin if you really need a “more modern Java”.
- Otherwise, use the latest Java LTS version you, your team, and your application can take.
- On your current project, keep your existing database unless that database is absolutely, irrevocably, really not working out for you.
- If you need to switch databases or are on a new project:
- If you know that you’ll need the NoSQL features and/or scalability, and you can’t get this with MySQL, then use MongoDB.
- Otherwise, use MySQL.
- On your current project, keep your existing back-end framework unless that framework is absolutely, really not working out for you.
- If you need to switch back-end frameworks or are on a new project:
- Use Quarkus if you need the smallest possible, fastest-starting Java application now.
- Otherwise, use Spring Boot.
Front-End Framework: Web
- If you already use React, Angular, or Vue.js in your project, then keep using them. Otherwise, evaluate a migration. In many (most?) cases, such a migration doesn’t make business sense.
- If you start a new project or do migrate, then start with React first, Angular otherwise, and finally Vue.js.
Front-End Framework: Mobile
- Don’t build two separate applications with Apple’s and Google’s first-party frameworks. Use a cross-platform framework instead.
- If you already use Flutter or React Native in your project, then keep using them. Otherwise, evaluate a migration. In many (most?) cases, such a migration doesn’t make business sense.
- If you start a new project or do migrate and have used React before, then start with React Native first and use Flutter otherwise.
- If you start a new project or do migrate and have not used React, then start with Flutter first and use React Native otherwise.