How to Build Java Applications Today #71
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.
Welcome to the January 2023 issue of my newsletter, “How To Build Java Applications Today”! If you like it, then subscribe below for free! Or read it on dev.to or Medium. Even better: Share it with people who are interested!
Subscribe for free to receive monthly posts.
In this newsletter, 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.
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. 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 wrote another InfoQ article 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 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.
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”. 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)
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.
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.
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.
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.
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.
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.
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.
Essential tool & technology releases: Last month, Git, Eclipse, NetBeans, VS Code, Quarkus, and Micronaut had major releases. Maven, IntelliJ, Spring Boot, Quarkus, Micronaut, and Helidon had minor releases.
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!
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, the knight at King Arthur’s Round Table, searching for the Holy Grail. Grail, GraalVM — 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.
One in Five Java Developers Uses Visual Studio Code
We are ten 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, as does Eclipse.
The next issue will arrive on Wednesday, February 1, 2023.
Subscribe for free to receive monthly posts.
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” as CTO in 2020.
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.