TL;DR
All back-end frameworks lost job ad share to Jakarta EE. VS Code was #2 in IDE job ads. React still only had a slim job ads lead over Angular. Python beat Java by 3x for Udemy course buyers.
README
Welcome to the Q2/2023 issue of my newsletter “How To Build Java Applications Today”! If you like it, then subscribe to it for free on Substack! Or read it on dev.to or Medium. Even better: Share it with people who are interested!
What's This?
My quarterly "Java Tech Popularity Index" measures the popularity of IDEs, build tools, JVM languages, databases, back-end frameworks, web frameworks, and mobile app frameworks with data from millions of developers: job ads from 59 countries, online training students, Stack Overflow questions, and Google searches.
I also recommend options in each of these seven areas. My recommendations are based on that popularity, industry analysis, and my 24 years of Java experience.
Why popularity? Because picking a popular technology makes our developer life easier: easier to learn, build, debug & deploy, easier to find jobs/hire, and easier to convince teammates & bosses. Now popularity can make a difference in two situations: When multiple technologies score similarly, we could go for the most popular one. And when a technology is very unpopular, we may not use it.
Update for Q2/2023
Late by two weeks, this issue has two new features: scorecards for each area and the actual number of questions at Stack Overflow.
- Scorecards show the current standings & trends of the top three technologies. The runner-up is at 100%, but not on the card. The leader (left) and number 3 (right) are. The red arrows show the trend vs. the runner-up.
- Until now, I used Stack Overflow Trends to show the number of questions. That had two problems: Not all technologies were available there (the Micronaut back-end framework, for instance, is not). And the numbers were a relative percentage of all questions, which made it harder to understand the actual number of questions. Now I use the StackExchange Data Explorer, which gives me the number of questions for all technologies.
On to what's new & noteworthy in Q2/2023:
- The number of developer ads is down in Q1/2023.
- All back-end frameworks lost share against Jakarta EE over the last two months (Quarkus & Micronaut) and nine months (Spring Boot).
- Python now has three times as many course buyers on Udemy as Java (39.8 million vs. 13.3 million). The gap is widening: It was four times as many buyers in the last nine months (4.3 million vs. 1.1 million).
- VS Code claims the #2 spot in IDE job ad mentions for the first time, beating IntelliJ by 11%.
- At 13-14%, React has had the slimmest job ads lead over Angular for the last 1.5 years. But in Udemy course purchases, React now has the largest lead over Angular at 1.5:1.
- At 1.7:1, React Native has had the slimmest job ads lead over Flutter.
- Postgres narrowly overtook MySQL in questions at Stack Overflow for the first time (1,509 questions vs. 1,485).
- Gradle also surpassed Maven at Stack Overflow for the first time but with a more comfortable lead (440 questions vs. 390).
IDEs
This is IntelliJ (100%), not on the card, vs. Eclipse (left) and VS Code (right). The arrows show the trend vs. IntelliJ.
VS Code pulls away from IntelliJ in all categories but Udemy courses. Eclipse pulls away slightly from IntelliJ in jobs but loses ground in all other categories.
Here are my recommendations:
- If you don't want to spend money, then use Eclipse.
- If you may spend money, evaluate IntelliJ.
- Evaluate VS Code for non-Java work, like web development (I use it for all my websites).
- If you're using NetBeans, consider moving off of it.
Build Tools
Here is Gradle (100%), not on the card, vs. Maven (left) and Ant (right). The arrows show the trend vs. Gradle.
Maven holds steady against Gradle except for Stack Overflow. Ant holds up surprisingly well in jobs for its age but has disappeared from searches and Stack Overflow.
Here are my recommendations:
- If you use Scala, then use sbt.
- Otherwise, if you absolutely cannot stand XML files and/or need to customize your build heavily, then use Gradle.
- Otherwise, use Maven.
JVM Languages
This is Kotlin (100%), not on the card, vs. Java (left) and Scala (right). The arrows show the trend vs. Kotlin.
Please take the Kotlin numbers with a huge grain of salt: Most Kotlin development is on Android, not in JVM projects. Kotlin gains on Java in all categories except for jobs. Scala declines against Kotlin in all categories (see the job ad section for why job numbers for Scala are missing).
Now let's look at JVM competitors. Here is JavaScript (100%) vs. Python (left) and Java (right). The arrows show the trend vs. JavaScript.
Python slightly declines in jobs against JavaScript but holds steady or slightly increases in all other categories. Java holds steady in searches but declines slightly everywhere else.
Here are my recommendations:
- 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
This is Postgres (100%), not on the card, vs. MySql (left) and MongoDB (right). The arrows show the trend vs. Postgres.
Postgres gains slightly on MySQL except for jobs where it loses slightly. MongoDB holds steady against Postgres except for questions where it also loses somewhat.
These are my recommendations:
- 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
Here is Jakarta EE (100%), not on the card, vs. Spring Boot (left) and Quarkus (right). The arrows show the trend vs. Jakarta EE.
Spring Boot pulls away from Jakarta EE everywhere except for jobs, where it dropped from 588% in June 2022. Quarkus gains on Jakarta EE everywhere and pulls away in Stack Overflow questions.
Here are my recommendations:
- 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.
READ BACK-END FRAMEWORK DETAILS
Web Frameworks
This is Angular (100%), not on the card, vs. React (left) and Vue (right). The arrows show the trend vs. Angular.
React pulls away from Angular except for jobs where Angular holds steady. Vue holds steady or gains slightly against Angular.
Here are my recommendations:
- If you already use React, Angular, or Vue in your project, 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 migrate, start with React first, Angular otherwise, and finally, Vue.
Mobile App Frameworks
Here is Flutter (100%), not on the card, against React Native (left) and Xamarin (right). The arrows show the trend vs. Flutter.
Flutter gains on its competitors in all categories but installed apps.
Here are my recommendations:
- 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 migration doesn't make business sense.
- If you start a new project or migrate and have used React before, then start with React Native first and use Flutter otherwise.
- If you start a new project or migrate and have not used React, then begin with Flutter first and use React Native otherwise.
READ MOBILE APP FRAMEWORK DETAILS
Next Issue
The next issue will arrive on Wednesday, July 26, 2023. That's the plan, at least. 😁
Subscribe to this Index on Substack for free to receive the next issue automatically!
About
Karsten Silz is the author of this newsletter. He is a full-stack Java developer (Spring Boot, Angular, Flutter) with 24 years of Java experience. Karsten has worked in Europe and the US and is also an author and speaker. He got a Master’s degree in Computer Science at the Dresden University of Technology (Germany) in 1996.
Karsten co-founded a software start-up in the US in 2004. He led product development for 13 years and left after the company was sold successfully. Karsten then co-founded the UK SaaS start-up "Your Home in Good Hands" as CTO in 2020. Since 2003, he has also worked as a contractor.
Karsten has this newsletter, a developer website, and a contractor site. He's on LinkedIn, Twitter, Xing, and GitHub. Karsten is also a Java editor at InfoQ.
Top comments (0)