Author: Karsten Silz
Dec 7, 2021   |  updated Feb 4, 2022 3 min read

Permalink: https://betterprojectsfaster.com/guide/java-full-stack-index-2021-12/

Java Full-Stack Index Dec 2021


This is an old version! Click below for the current one.

See Current Version


What’s This?

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.


Archive

Java Full-Stack Index Nov 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.

Recommendations

JVM Languages

  • 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.


Databases

  • 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.


Back-End Frameworks

  • 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.



comments powered by Disqus