BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Podcasts InfoQ Java Trends Report 2023 - Discussing Insights with Mike Redlich

InfoQ Java Trends Report 2023 - Discussing Insights with Mike Redlich

Bookmarks

In this episode, Michael Redlich, lead editor of the Java topic at InfoQ, sat down with podcast co-host Daniel Bryant and discussed the recent publication of the InfoQ Java Trends Report. Topics covered included the release of Java 21, the adoption of Java virtual threads, the evolution of the Jakarta EE and Spring projects, and the development of community and ecosystems projects.

Key Takeaways

  • The adoption of Java Virtual Threads within application frameworks has occurred relatively quickly, especially given this feature was only included in the recently released Java 21.
  • Oracle and the surrounding Java ecosystem have attempted to evolve the language and frameworks to enable developers to more easily learn to write their first “Hello, world!” applications and quickly become proficient with the language.
  • The ZGC garbage collector has recently seen significant improvements, and as Suhail Patel mentioned in his QCon New York keynote, this can provide big benefits for certain use cases.
  • There is increasing community interest in learning about modern microservice frameworks, such as Spring Boot, Quarkus, and Jakarta EE. The Spring Modulith project is now an official Spring project and allows the creation of better monoliths as an alternative (or complement) to microservices.
  • The future of Java is bright! Evolution continues on nearly all fronts of the ecosystem, and readers are encouraged to get involved with community projects.

Transcript

Welcome to the InfoQ podcast

Hello, it's Daniel Bryant here. Before we start today's podcast, I wanted to tell you about QCon London 2024, our flagship conference that takes place in the heart of London next April, 8th to 10th. Learn about senior practitioner's experiences and explore their points of view on emerging trends and best practices across topics like software architectures, generative AI, platform engineering, observability, and the secure software supply chain. Discover what your peers have learned, explore the techniques they're using, and learn about the pitfalls to avoid. I'll be there hosting the platform engineering track. Learn more at qconlondon.com. I hope to see you there.

Hello and welcome to the InfoQ podcast. I'm your host, Daniel Bryant, and this week we're going to try something a bit different with a brief review of the recently released InfoQ Java and JVM trends report. Now, many folks in the InfoQ team and the wider Java community were involved in the production of this and we'll give them a proper shout-out during the conversation, but I sat down with the primary author of this year's report, Michael Redlich, who leads the Java topic here at InfoQ.

So, welcome to the InfoQ podcast, Mike. Could you introduce yourself to the listeners please?

Michael Redlich: Sure. Good morning. I'm Michael Redlich. I am the Lead Java Queue editor at InfoQ. I retired from ExxonMobil about five months ago after 33 and a half years of service. So, all of my work at InfoQ and other contributions to open source are my full-time job these days.

What are the headline takeaways from the latest InfoQ Java Trends report 2023? [01:21]

Daniel Bryant: We're going to talk about the upcoming InfoQ Java trends report. So by the time this chat is published, so will have the report been as well. So we'll definitely dive into who's contributed to that report because it's very much a community effort. You and I are talking about it today, but there's a lot of folks behind the scenes contributing to this, so I'd definitely like to give a shout out to all those folks too. But what are the key takeaways for the Java trends report this year?

Michael Redlich: One of the first things that I think is foremost is Java virtual threats, JEP 444, which was released in September with JDK 21. There was just so much content out there, especially from the Oracle dev advocates and other folks that were providing a lot of information in the background and how to use virtual threads and those kinds of things. One of the other things that is really new this year is a commitment from Oracle to evolve the Java language for students and beginners so they can more easily write their first Hello World applications without the need to understand more complex features of the language.

And related to Java 21 were also four features that had gone through their incubator and preview releases, and now were finalized for JDK 21. So examples of course are virtual threads, pattern matching for switch, and record patterns. That's three of the four that I can recall at the moment. A new project to complement Project Loom, Project Valhalla is Project Galahad, and this was related to GraalVM aligning themselves with releases for the open JDK releases every six months. And so this was created to contribute Java-related GraalVM technologies and prepare them to be in an upcoming release of a JDK.

Another new interesting feature from this past year is a new Microprofile JWT bridge specification, and this was a collaboration between the Microprofile and Jakarta EE working groups. And this was a way for Jakarta's security applications to use the micro JWT specification. And this is in a single annotation, so this is still a work in progress. From what I understand, the folks are trying to have this in the release of Microprofile 7.0, which will be sometime next year. So this is very early. There are some examples out there on how to potentially use that. So I've experimented a little bit with it and I think it's going to be a fun feature.

It's synonymous with Jakarta NoSQL or other Jakarta EE specs that use Microprofile config. So it's a similar kind of relationship with this. So I think this is new and exciting and look forward to that being released. So those are the highlights. We have lots of good content in the upcoming release of the InfoQ Java trends report, so stay tuned for that.

Who contributed to the creation of the latest InfoQ Java Trends report? [04:15]

Daniel Bryant: Fantastic, Mike, fantastic. Yes, no, I've definitely got to shout out that we do look at, say surveys, we look at data because I know a lot of folks reach out to us and say, "How do you do these trend reports?" And they are very much opinion pieces. We do look around, but you and the team and we bring in other folks in the community to contribute to as well. Do you want to shout out to anyone, Mike? I know that you've led the initiative this year, but there's many voices behind this report, right?

Michael Redlich: Yes, so we have awesome editors in the Java space and the main contributors were myself and Johan Janssen. And then we have quarterly meetings with the group and we discussed the crossing the chasm model this past August and what technologies should move from in the various spaces of that crossing the chasm model. So that included Ben Evans, Erik Costlow, Karsten Silz, Olimpiu Pop, Bazlur Rahman, and Shaaf Syed. And then the external contributors were Ixchel Ruiz, Developer Advocate at JFrog, Alina Yurenko, Developer Advocate for GraalVM at Oracle Labs, and then Rustam Mehmandarov, Chief Engineer at Computas AS. So these are some great contributors, they're all Java champions, so they really provided a lot of great input.

Is the latest version of the Java language and platform, Java 21, seeing large adoption? [05:25]

Daniel Bryant: Fantastic, Mike. Yes, there's so many familiar names there, both practitioners and dev advocates, and now owning my bias, as a previous dev advocate, I'm obviously a big fan of listening to both of these voices. InfoQ is very much based on the practitioner role. It's by practitioners for practitioners and it's great to learn about use cases and specific implementations. I think the value that dev advocates can often bring is providing their bigger picture look across the industry and helping us pattern match on common issues and solutions.

So, to get started on our analysis, I wanted to dive into Java adoption first. Now obviously, we had the release of Java 21 in September, which both you and Bazlur Rahman, and many of the Java team have covered already on InfoQ. So listeners can check out the coverage there, but I wanted to get your thoughts on what's the real world adoption been like. Now, Java 21 will be a LTS release for many vendors, so that's long-term supported, like commercially supported often in comparison with the shorter support windows often offered for the minor version updates. So are folks rushing to Java 21 or more slowly making their way to Java 21 or maybe even the last LTS release, which was Java 17, right?

Michael Redlich: Alina Yurenko said that she sees the speed of adoption of the latest Java versions increasing, and she's seen this at conferences and questions that she gets from folks in the Java community. And then they had their own community survey last year and she said that 63% of their users were already on Java 17 or higher. So it seems like yes, there is more adoption. Java 17 was the last LTS release before Java 21.

What are the most exciting features of the Java 21 release? [06:59]

Daniel Bryant: Fantastic. So folks are sort of getting onto it. What do you think are the most exciting features and tools in this Java 21 release?

Michael Redlich: Oh, virtual threads for sure. So, I know sequence collections is still in preview, but that should be finalized at some point within the next couple of Java releases, record patterns, pattern matching, the unnamed classes and instant methods, that's still in preview and that's the JEP for the beginners. We got a key encapsulation mechanism API, which is for improved security, pattern matching for switch. Oh, foreign function and memory, I think will be a final preview in JDK 22. And then generational ZGC is another one that didn't go through the preview or incubation process, but that was a final feature right away. So there's a lot of good stuff that is in JDK 21. I believe there were 15 new features. So, as opposed to the last few years, maybe six, seven, eight, nine, going back to I think Java 9 had the most set of jets that were available. So yes, this is really an interesting time for Java.

So yes, look for more coming up and JDK 22, we have, just as a preview, we already have foreign function and memory API that will be a final feature, unnamed variables and patterns, the vector API, that's been part of Project Panama for a long time, it's going to see its seventh incubation. So, I think that pretty much projects that, it will probably see a couple of previews as well. And then string templates is another new feature that will be in its second preview for JDK 22. So the review for that one ends on Wednesday. There's usually a week once it's proposed to target, so I anticipate seeing that as targeted for JDK 22. So that's four at the moment.

What are your thoughts on the latest ZGC garbage collection updates in Java 21? [08:49]

Daniel Bryant: Fantastic, fantastic. Just going back to the 21 stuff you mentioned there, Mike, I'd love to get your thoughts on virtual threads in just a second, but I think another thing that would jump out to our listeners is also the Z or ZGC changes. I know we saw Suhail Patel at, I think it was QCon New York, and maybe also QCon San Francisco. He talked about the massive performance impact that can potentially have. I think he was running some Kafka clusters, something like this, and he was saying this new GC model can really stop the world collections, right? I don't know if you've got any more thoughts on that.

Michael Redlich: I'm ashamed to admit that I haven't experimented with a lot of the Garbage Collection in Java. I'm familiar with what's out there, but that's about all I can say.

Daniel Bryant: Sounds like you know just enough garbage collection to be dangerous, Mike, right? So very similar to myself, I'll be honest.

Just looking at my notes here and I can see that there's ZGC, or ZGC Garbage Collector was introduced in Java 11 as JEP 333, and it was a low latency, high scalability garbage collector. And now with Java 21, it's evolved into a generational garbage collector. I think previously, even without handling generations, ZGC was quite an improvement with GC pause times, which many of us have bumped into, those stop the world pauses can be really impactful on applications or data stores that use a JVM, but with the old version of ZGC, all objects were stored regardless of their age and all of them had to be checked during every GC run I believe.

With Java 21, ZGC splits the heap into two logical generations, one for the recently allocated objects and another for long-lived objects. So now the GC can focus on the collecting younger objects more often and without increasing pause time. And this is what Suhail referenced in his QCon talk. We definitely recommend consulting experts when choosing your garbage collector. Just to highlight, again, Mike and I are not GC experts. Please don't just choose your garbage collector at random and definitely don't use the random GC command line flags. I'm sure many of us, early on in our careers, were always looking for the magic incantations to put on your command line flags, right? Please don't do this. I learned from my mentors, I think Mike's mentors as well, Ben Evans and Martijn Verburg, this really isn't a good look and if I ever bump into GC challenges in my general day-to-day life, I do consult these kind of experts as well. So we thoroughly encourage you to do the same.

What are the interesting trends in Java EE, Jakarta EE, and web application development? [10:51]

Moving on to the Java EE or Jakarta EE kind of space, the enterprise edition space, and there's lots of stuff, obviously microservices, everyone is developing microservices these days or seemingly everyone. How does the latest version of Java and Jakarta play into developers that are building microservices?

Michael Redlich: So, Jakarta EE 10 is the latest version out there. Jakarta EE 11 is scheduled to be released in the first half of next year, but the working group is looking to put out a milestone one on December 5th, so I look forward to reading about that. I can tell you there are 16 new or upgraded specifications for Jakarta EE 11, including the new Jakarta Data. And that spec is designed to be sort of an abstract level above Jakarta persistence and Jakarta NoSQL. So basically, you'll have the NoSQL and the relational world in order to use Jakarta data to create database back end applications more easily. So that's an exciting thing.

Jakarta NoSQL won't be on the platform profile, unfortunately, but hopefully maybe for Jakarta EE 12. But it is available for developers to use and I have a great beer application to demonstrate how it works... Anyway, there's a lot of great things out there. I know Jakarta security will be upgraded, Jakarta Servlets, so Servlets, of course, have been around for a long time, going back to the Java EE days, I think even back, I want to say probably the early 2000s.

Daniel Bryant: Yes, I was coding on those back then, but raw Servlets, that's where I started my career. Yes, very much so.

Michael Redlich: Right. So that is good to see that spec evolving and being out there for developers to use. Jakarta Expression Language is another spec that's going to be updated. Jakarta Faces, I believe. So the old Java Faces API. So there's a lot of great things that are out there for that. I think there's 42 specs altogether in Jakarta EE.

What are the interesting trends in microservices and web application development? [12:45]

Daniel Bryant: Fantastic. Now, I was chatting to my buddy, Josh Long, you know Josh as well. Josh is a legend in the Java space, in the Spring space, and he was doing a fantastic talk, I think it was IT Connect in Belgrade, and he showed us the latest features of Spring, Spring Cloud. But of course there's Helidon you've talked about, there's Micronaut, there's many others. What's your general read on the space? There's a lot of microservice-type frameworks, cloud-type frameworks popping up in the Java world. Any interesting takeaways from the trend report on those?

Michael Redlich: Helidon 4 was just released not too long ago, and the big feature in that is their Helidon Nima, they've rebuilt their web server from the ground up. So the previous web server component in Helidon SE was based on Netty, but that has been redone and now it's a full virtual thread web server. I haven't had a chance to really experiment with it yet, but Oracle claims that there is performance benefits from using this new web server.

Micronaut, I know they've got a lot of components for building applications, so they are evolving. Their version 4.1.6 is their latest release and anybody who's out there who's familiar with Grails, it's the same kind of syntax on the command line to build those applications in Micronaut.

Let's see, Quarkus, that's the best-of-breed libraries, as they say. They say it's super fast, supersonic Java. But yes, so Quarkusis a collection of libraries that developers can use to build applications. So that one's unique in that regard. Helidon is different because it has their SE and their MP, for Microprofile, version. So the components are different depending on what you want to use. The application server, I believe is built into Helidon MP, that's one of the differences. But they're all great to use, really can't say which one's better than the other. It's one of these things where depends on the application that you want to build. That's the best thing I can recommend in that.

And the best thing too, all of these frameworks have a starter page. So you go and you can click on what you want and then it'll download a zip file from you and you can easily get a starter application going just by doing that.

Daniel Bryant: That's fantastic, Mike. Something I've noticed more in general, so going back to Josh's talk, the latest versions of Spring Cloud, Spring Boot are sort of skewing towards ease of getting started. You mentioned already, even the Java language itself, there's been a concerted effort to make it easier for folks, and I've seen things like Spring Modulith, Oliver Drotbohm has talked about that quite a bit, and making it easy to do the right thing, easy to get started, easy to do the right thing. So I'm liking that. That's one thing I think you do get with a mature language stack, like Java, right? Compared to some other perhaps more earlier stage languages, which again, I love as well, but I think the Java stuff, we've come through the ringer over the years and we sort of know the good things to do hopefully and the bad things to do. So I'm definitely seeing the microservice frameworks making it easier to get started and do the right thing.

Michael Redlich: Yes, absolutely. And I think that's a great thing, especially if you're new to it. This way, you can get a feel for how things are wired together, especially configuration files and things like this. So yes, Jakarta EE also has a starter page that folks can use to get started as well.

What has the community reaction been to the latest JVM startup developments in the Java ecosystem, such as CRaC and GraalVM? [15:46]

Daniel Bryant: Fantastic. We'll try and link some of those in the show notes, Mike, make it easy for folks to have a play around because I'm totally supporting what you're saying – there is no one size fits all here, have a play with these things, understand them. That's the benefit of the trends report, right? We give you the insight as to the interesting things that we think you should be looking at. That's fantastic. Love to dive into a couple of more technical things, Mike, then we can look at the community reaction and perhaps a look to the future. You've already mentioned virtual threads, which I think is fantastic. I also saw a fantastic talk by Gerrit Grunwald at IT Konnect around the Coordinated Restore At Checkpoint, CRaC, feature. That one came up, I believe, in the trend report too is an interesting piece of tech.

Michael Redlich: Yes, that I know Azul has released their downstream distributions of OpenJDK with CRaC, C-R-A-C. Yep. I always found that acronym to be funny. But anyway, yes, so that is something that's already going to be built in for developers and I'm looking for exciting things coming from that. And this whole native Java, Spring native, and GraalVM and Project Latent, those will all be part of Cold Start, I guess as it were, for especially big Java applications.

Are other Java and OpenJDK distributions proving popular? [16:52]

Daniel Bryant: Fantastic, fantastic. You touched on that, you mentioned Azul, of course there's many open JDK distributions these days. We've seen Corretto by Amazon, Azul of course, Oracle, loads of folks have got them. There is community distributions out there. Could you share a little of insight for the listeners as to why they might consider various different distributions? Any thoughts on the different options out there?

Michael Redlich: I can't think of any for instances, but yes, BellSoft's another one, I know one of the things they do is they maintain the CPU or their critical patch updates that are aligned with Oracle's. So they provide those updates and that's by BellSoft.

Daniel Bryant: I've seen them in build packs actually, Mike. I like using the CNCF Build Packs project and BellSoft popped up a lot in there as, I think, one of the default Java providers. So I played with that.

Michael Redlich: Yes, I'm trying to think. I know one of the other downstream distributions, I believe, includes JavaFX or JFX.

Daniel Bryant: Oh, okay.

Michael Redlich: It's great to see the downstream distributions taking the open JDK and then build it, but add in their own features. And then I believe there is also some, I guess upstream, so if Oracle feels like whatever a vendor has done on the downstream end, they can probably backport that over into open JDK. So I think it's a great relationship. And that's the beauty of open source.

What does the future of Java look like? [18:04]

Daniel Bryant: Yes, no, 100%, 100%. Fantastic. We'll link a few of those we've mentioned there in the show notes as well, so you can play around with that. Before we wrap up, Mike, I'd love to get your thoughts on what's the community reaction been to Java over the last years? You've very much got your finger on the pulse, you and the InfoQ Java team. You are hearing what comments have come back on the news and you're going to conferences and chatting to folks. What do you think the future of Java looks like?

Michael Redlich: I think this is an awesome time to be part of the Java community and to be using Java. I still laugh because I still see references that Java is dead.

Daniel Bryant: Yes, same, I do.

Michael Redlich: And that's not even close to what's happening. With Java EE having been donated to the Eclipse Foundation to create an open source version of the enterprise edition, I think that is just a great thing for the Java community to contribute. A great example is Microprofile, they started in 2016 and they used the CDI, JAX-RS, and I think JSONP as their original three specs that were part of the JSRs back then, but then the community folks are the ones who created metrics, health, fault tolerance, config, and this was outside of Oracle. So it's a beautiful thing, I think, and I know developers are out there, they're excited about Java. You still have your folks that I guess don't like Java. I know one person in particular from a former computer club would prefer to use Go, but that's his choice. That's fine.

But yes, I think there's a lot for Java developers out there. We talk about Quarkus, Helidon, Micronaut. Then Spring, of course we haven't talked too much about Spring, but the Spring framework has evolved so much in the past 20 years. I think next year is the 20th anniversary. I don't know if it already happened or if it's next year, but I believe Spring, with their dependency injection, was in response to the complexity of enterprise Java Beans.

Daniel Bryant: I remember that. 

Michael Redlich: And it was just dependency injection. And look at how that's evolved to all the Spring projects, like Spring Boot, of course, Spring Cloud, Spring Data. You can go on. There's, I would say, close to 15 to 20 projects.

How should listeners track the latest security issues and CVEs? Is the InfoQ weekly Java roundup news piece a good place to start? [20:08]

Daniel Bryant: So after the Log4Shell vulnerability that was discovered back in 2021, we had lots of coverage in InfoQ, lots of coverage on the internet in general on that one, and that actually still is being exploited, just a heads up to folks. Recently I read a report, there's a shocking number of artifacts or libraries, Log4j libraries that are still vulnerable, are being downloaded via Maven Central and other places. So please don't do that. Please make sure you update your version of Log4j. But I wanted to ask in general, Mike, is there anything new in the world of Java project CVEs?

Michael Redlich: I see it a lot when I look for news items for the Java weekly roundups. A small point and release will address a particular CVE, and I try to capture all those.

Daniel Bryant: Fantastic. That's a shameless plug, Mike. I think it's worth doing, right? I always enjoy your weekly summaries. I know you and the team basically scour the internet looking for things like this, right? All the latest framework updates. I know you summarized the JEPs and their current status within the open JDK. So, folks basically follow you on InfoQ - is, I think, the key call to action there, Mike, right?

Michael Redlich: I have a lot of folks that follow my profile, so I appreciate their support. First off, it's come down to a science in capturing all this and having bookmarks. I check every week and follow along the mailing list in the open JDK space and all that. And just as a reminder to the listeners, the weekly Java roundups were created to capture all those small point releases that wouldn't be necessarily worthy of a full detailed news piece, but at least it gives the Java community to see what's actually happening, and just to follow along. So yes, this was actually started by Ben Evans, but that was a great idea and I took that over when I took over as the lead.

Where to reach out to Mike and the InfoQ Java team [21:47]

Daniel Bryant: Fantastic. If folks want to find you, Mike, where's the best place to connect? Obviously InfoQ, but are you on Twitter? You on LinkedIn? Where's the best place for folks to reach out?

Michael Redlich: Yes, I'm on LinkedIn. I'm sure I'm one of the few persons named Redlich out there. And then my Twitter handle is mpredli, I try to remain a little active on Twitter. And of course, InfoQ advertises all the news releases on Twitter as well.

Daniel Bryant: Fantastic, Mike. Well thank you very much for your time today. We'll be sure to link the final trend report off the show notes as well when that one's released. And I really appreciate your input, Mike. Thank you very much for chatting today.

Michael Redlich: Oh, thanks for taking the time to have this chat. It was great.

About the Author

More about our podcasts

You can keep up-to-date with the podcasts via our RSS Feed, and they are available via SoundCloud, Apple Podcasts, Spotify, Overcast and the Google Podcast. From this page you also have access to our recorded show notes. They all have clickable links that will take you directly to that part of the audio.

Previous podcasts

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT