I recommend JVM languages, databases, back-end frameworks, and front-end frameworks. My recommendations are based on popularity, industry analysis, and my 23 years of Java experience. I measure popularity among employers through job ads from 62 countries. For developer popularity, I use online training students, Stack Overflow questions, and Google searches.
I collected the data for this index from April 24-26, 2022.
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. Now popularity can make a difference in two situations: When multiple technologies score the same, we could go for the most popular one. And when a technology is very unpopular, we may not use it.
I measure popularity among employers and developers as the trend between competing technologies. I count mentions in job ads at Indeed for employer popularity. For developer popularity, I use Google searches, Udemy course buyers, and Stack Overflow questions.
JVM Languages: Java is #1, Kotlin #2, and Scala #3. Kotlin lost 22% of its job ad mentions in the last two months. So Java pulls away again, despite shedding 4% on its own. And Scala lost 9% but still gained slightly on Kotlin.
Databases: MySQL is #1 and Postgres #2, beating MongoDB in three out of four categories. But Postgres lost 10% of its job mentions over the last two months. That’s why MySQL pulled away again while MongoDB as the #3 came closer.
Back-End Frameworks: Spring Boot remains the framework to beat. Jakarta EE leads Quarkus in three of four categories. Quarkus solidifies its #3 place in jobs.
Front-End Frameworks: Web: React is #1, Angular #2, and Vue #3. React now leads Angular 1.5:1 in job ad mentions while Vue holds steady at half of Angular mentions. React pulls away from Angular in the developer popularity while Vue holds steady again.
Front-End Frameworks: Mobile: Flutter lost 15% of its job ad mentions over the last two months while React Native was on a surge. So React Native now leads Flutter 2.5:1, and Xamarin is up to 56% of Flutter’s mentions. But among developers, Flutter leads in all categories and is pulling away from React Native.
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.
If you already use React, Angular, or Vue in your project, then keep using them. Otherwise, evaluate a migration. In many (most?) cases, such 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.
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 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 begin with Flutter first and use React Native otherwise.