How to Build Java Applications Today #71
Tags: java, postgres, flutter, angular
Published: 2023-01-05 00:29:20

## TL;DR

Scala beats Kotlin in job ads, Quarkus & Micronaut steady as #3 & #4 in job ads, Java InfoQ Trends Report 2022, Eclipse 2022-12, and one in five Java developers uses VS Code.

***

## README

Welcome to the January 2023 issue of my newsletter “How To Build Java Applications Today”! If you like it, then [subscribe to it for free on Substack](https://bpfnl.substack.com)! Or read it on [dev.to](https://dev.to/ksilz/series/11995) or [Medium](https://ksilz.medium.com). Even better: Share it with people who are interested!

***

## What's This?
In my monthly "Java Full-Stack Report", I **recommend** IDEs, build tools, JVM languages, databases, back-end frameworks, web frameworks, and mobile app frameworks. I also cover essential **releases** and **news**.

This report is different because it measures popularity by **observing what all Java developers do**: **job ads** from 59 countries, **online training** students, **Stack Overflow** questions, and **Google** searches. 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, easier to 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.

***

## Stand-Up

Happy New Year to all of you! Here's my resolution for the new year: Read the freakin' calendar. You know, as in, "Read the calendar **before** determining the date of the next issue", so that a wrong date, like "Wednesday, January **3**, 2023", doesn't [show on these pages](/guide/java-full-stack-report-2023-01/main#next-issue). The first Wednesday in 2023 was January **4**, of course. 😩

***

I measure popularity by counting job ads in 59 countries at Indeed.com. I had three different woes this time around:

- I now exclude China, Japan, and South Korea from the ranking because English word searches proved ineffective there. I adjusted **all** past numbers as well for this issue, so they are different from past issues.
- Because of technical difficulties on my end, I don't have the numbers for October 2022.
- I also messed up the counting of Java jobs when battling the fact that searching for "Java" at Indeed also finds ads with "Javascript". So my **Java job numbers have been off since the beginning**, and I discarded them. I'll count Java jobs correctly now &mdash; hopefully. Mea culpa!*

***

I [wrote another InfoQ article](https://www.infoq.com/articles/graalvm-java-compilers-openjdk) about the GraalVM Java Compilers Join OpenJDK in 2023. It combines three news items, plus three answers from all Java frameworks supporting native Java with GraalVM static AOT compilation (Spring Boot, Quarkus, Micronaut, and Helidon) and two Red Hat experts. Earlier in 2022, I edited a [six-part InfoQ article series](https://www.infoq.com/articles/native-compilations-boosts-java) on the topic.

Because of our publication schedule, that one spent about a month on the shelves. Just my luck: Shortly before we finally published the article, Oracle provided more details on how the GraalVM Java Compilers will move to OpenJDK. Fortunately, my InfoQ colleague Ben Evans [covered that superbly](https://www.infoq.com/news/2022/12/openjdk-galahad-Dec22/).

***

January 3, 2023, was also the day that I started a new Java contract. It's three months for now but it may be longer. I'm still working on our apps at "[Your Home in Good Hands](https://yourhomeingoodhands.co.uk/)". But we're now in a place where I can do that nights & weekends only for now. 

I can’t tell you about my contract, but it may include some technologies I haven’t worked on. Stay tuned! 😃

***

## Technology Index (Last Update: January 2023)

### IDEs

- **Popularity trend:** Eclipse is the most popular Java IDE and leads IntelliJ in job ads 2.5:1, though it has declined over many years in other categories. IntelliJ holds up well for a commercial product: It's only slightly behind Eclipse in Google searches and slightly ahead in questions at Stack Overflow. NetBeans is the least popular IDE. VS Code isn't a fully-fledged Java IDE, but apart from jobs, it's 3-4 times as popular as Eclipse & IntelliJ.
- 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.

**[Show Popularity & Details](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/ide)**

***

### Build Tools

- **Popularity trend:** Maven is 2.5 times as popular as Gradle, except for Stack Overflow, where Gradle is slightly ahead. Ant and sbt have declined for years.
- 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**.

**[Show Popularity & Details](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/build)**

***

### JVM Languages

- **Popularity trend:** Java is #1, Kotlin #2, and Scala #3. Java probably wins in job ad mentions where Scala also leads Kotlin. But Kotlin leads Scala in all other categories. Groovy and Clojure have mostly declined for many years. Python and JavaScript beat Java everywhere, but the job ad mentions rankings are unknown.
- 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.

**[Show Popularity & Details](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/lang)**

***

### Databases

- **Popularity trend:** MySQL is #1, Postgres #2, and MongoDB is #3. After some turbulence, MySQL and MongoDB are back to their October 2021 values: MySQL leads Postgres 1.4:1, MongoDB has 70% of Postgres' numbers. Postgres and MongoDB are nearly at peak values at Stack Overflow.
- 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**.

**[Show Popularity & Details](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/db)**

***

### Back-End Frameworks

- **Popularity trend:** Spring Boot dominates and still grows in all categories except for Google searches. Despite a long decline, Jakarta EE leads Quarkus in all categories but questions at Stack Overflow. Quarkus is now #3 in job ad mentions, Micronaut is the new #4.
- 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**.
  
**[Show Popularity & Details](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/be)**

***

### Web Frameworks

- **Popularity trend:** React is #1, Angular #2, and Vue #3. React leads Angular by only 15% in job ad mentions but by 1.5-3.6 in the other categories. Vue has only 30% of Angular's job ad mentions but about 40-60% in the other categories.
- 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 migrate, then start with **React** first, **Angular** otherwise, and finally, **Vue**.
 
**[Show Popularity & Details](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/fe-web)**  

***

### Mobile App Frameworks

- **Popularity trend:** React Native dropped from a 2.9:1 lead over Flutter to a 1.9:1 since last April. Among developers, Flutter leads React Native 2:1 and pulls away (except for Google searches, where both slightly lost in 2022). Xamarin and JavaFX have generally declined for years.
- **Don't** build two separate applications with Apple's and Google's **first-party** frameworks. Use a **cross-platform** framework instead.
- If you start a new project and have used React for building web applications, then use **React Native**.
- If you start a new project and have .NET experience, then use **.NET MAUI**.
- If you start a new project and need to use a library that's only available in Java, then use **JavaFX**.
- Otherwise, start with **Flutter** first and use **React Native** if that doesn't work out for you.

**[Show Popularity & Details](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/fe-mobile)**

***

## Release Radar

Last month, Git, Eclipse, NetBeans, VS Code, Quarkus, and Micronaut had major releases. Maven, IntelliJ, Spring Boot, Quarkus, Micronaut, and Helidon had minor releases.

**[Read the Release Radar](https://betterprojectsfaster.com/guide/java-full-stack-report-2023-01/release-radar)**

***

## New & Noteworthy

### ### Java InfoQ Trends Report 2022

Once a year, the Java team at InfoQ (which includes me) publishes their trend report. Here are three significant findings:

- Native Java with the GraalVM Native Image Ahead-of-Time (AOT) compiler will grow as the OpenJDK projects Leyden & Galahad move forward. That makes Java cheaper in the cloud.
- Java Virtual Threads simplify concurrent programming and make Java also cheaper. Java frameworks seem to adopt Virtual Threads quickly.
- Java 11 has finally overtaken Java 8. And we're seeing Java 17 share growing faster than Java 11, boosted by Spring Boot 3.0 requiring Java 17.

For more information, read the article!

**[Read the Article](https://www.infoq.com/articles/java-jvm-trends-2022)**

***

### GraalVM Java Compilers Join OpenJDK in 2023

Talking about GraalVM: The Community Editions of the GraalVM JIT and Ahead-of-Time (AOT) compilers will move to OpenJDK in 2023 as part of Project Galahad. That will make using them easier for us. And yes, it's that [Galahad](https://en.wikipedia.org/wiki/Galahad), the knight at King Arthur's Round Table, searching for the Holy Grail. Grail, GraalVM  &mdash; get it? One may even call this a dig by OpenJDK against the **Oracle Labs** project GraalVM: Galahad was an **illegitimate** son...

Anyhow, at OpenJDK, the GraalVM Java Compilers will align with Java releases and use the OpenJDK Community processes. Existing releases, GraalVM Enterprise Edition features, and other GraalVM projects will remain at GraalVM. And GraalVM still does releases: GraalVM 22.3 provides experimental support for JDK 19 and improves observability.

Another OpenJDK project, Leyden, will standardize how AOT compilation fits into the Java specification. We need this because a native Java executable can't do some of the things "regular Java programs" can do, such as loading arbitrary classes and files at runtime. Project Leyden will also define far-reaching optimizations for regular Java applications running in a JRE with a JIT compiler, **without** having to use the GraalVM AOT compiler.

**[Read My Article](https://www.infoq.com/articles/graalvm-java-compilers-openjdk)**

***

### One in Five Java Developers Uses Visual Studio Code

[We are ten million Java developers](https://betterprojectsfaster.com/guide/java-full-stack-report-2022-11/new-noteworthy/#we-are-10-million-java-developers). And one in five of us uses VS Code, Microsoft's free cross-platform and cross-language IDE.

Unfortunately, this announcement lacks important details: Does it mean "using VS Code for Java development"? And how often do you have to use VS Code for Java development to qualify here? Just once? Once a month? Or daily?

And is two million a lot? We don't know because we don't know how many Java developers use IntelliJ, Eclipse, or NetBeans! Also, VS Code isn't a fully-fledged Java IDE yet. Still, VS Code is popular enough that IntelliJ maker JetBrains [copies it](https://betterprojectsfaster.com/guide/java-full-stack-report-2022-01-new-noteworthy/#jetbrains-clones-visual-studio-code---but-at-what-price), as [does Eclipse](https://theia-ide.org).

**[Read the Announcement](https://devblogs.microsoft.com/java/two-million-java-developers-on-visual-studio-code-november-2022-update)**

***

## Next Issue

The next issue will arrive on **Wednesday, February 1, 2023**. [Subscribe to this newsletter on Substack for free](https://bpfnl.substack.com) 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 a contractor, 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](https://yourhomeingoodhands.co.uk/)" as CTO in 2020.

Karsten has [this newsletter](https://bpfnl.substack.com/), a [developer website](https://betterprojectsfaster.com/), and a [contractor site](https://ksilz.com/). He's on [LinkedIn](https://www.linkedin.com/in/ksilz/), [Twitter](https://twitter.com/karsilz), [Xing](https://www.xing.com/profile/Karsten_Silz/), and [GitHub](https://github.com/ksilz). Karsten is also a [Java editor at InfoQ](https://www.infoq.com/profile/Karsten-Silz).