Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.
Java is among the most widely used enterprise programming languages, but in some circles it has a reputation for being a less modern language than rivals like Python and Rust.
With the release of Java 23 today, Oracle and its partners in the open source Java community are continuing the march to make Java easier to use and more powerful for enterprise applications and the emerging world of AI. The new release comes six months after Java 22, continuing the regular cadence of Java updates in recent years.
Among the updates in Java 23 are:
Libraries including the Class-file API (JEP-466)
Performance and runtime updates including Z Garbage Collector (ZGC) generational mode by default (JEP 474)
"Oracle is evolving Java into a modern programming language whose biggest challenge to getting new users may be that it's still called Java," Forrester analyst Andrew Cornwall told ITPro Today. "For existing Java users, Java 23 offers signposts toward what will need to change in their code bases — not too much — and what's coming but not there yet: AI and more support for parallelism."
Cornwall noted that Java has been making significant changes in recent years while retaining backward compatibility, which he called an impressive engineering achievement.
Java 23 introduces key enhancements that deliver significant business benefits, IDC analyst Arnal Dayaratna told ITPro Today.
Dayaratna identified three key takeaways from Java 23:
Improved scalability and resource efficiency with virtual threads that reduce costs and improve high-performance application development.
Faster, more maintainable code with pattern matching for switch that accelerates feature delivery and reduces long-term technical debt.
Seamless integration with native libraries via the Foreign Function & Memory API that boosts performance for data-intensive applications without requiring code rewrites.
There are many different contributors and distributors of Java, among them being IBM's Red Hat business unit.
James Labocki, senior director of product management at Red Hat, said Java 23 showcases continued progress toward simplifying Java development while enhancing performance. The release, he said, focuses on concurrent programming and streamlining the overall developer experience. Two key features that he expects will stand out are structured concurrency and scoped values.
"These features, now in their third preview, are designed to treat related tasks as a unified operation while providing ways to share immutable data efficiently within threads," Labocki told ITPro Today. "Both of these updates drive toward making Java more accessible and powerful for developers.”
Python is often considered to be an easier language to program in, certainly for data science, than Java. The Rust programming language in recent years has gained adoption as a way to help improve performance and security. Oracle sees Java as being able to compete against them both, eventually, thanks to incremental changes in Java 23 that will be further developed in future versions of Java.
JEP 477, which defines an update for Implicit Classes and Instance Main Methods, will help significantly simplify Java code. Without JEP 477, a simple "Hello World" application that just prints Hello World on the screen takes more than double the lines of code.
"This is really good for perception because when you're up against the perception that Python or JavaScript are taking over and you can do all kinds of great things by just typing 'print,' so can Java as well," Chad Arimura, vice president of Java developer relations at Oracle, told ITPro Today.
One of the most significant additions to Java 23 is the introduction of generational mode as the default for the Z Garbage Collector. Georges Saab, senior vice president of Java development at Oracle and chair of the OpenJDK Governing Board, explained that the original focus of ZGC was on applications with very large memory demands and extreme low-latency requirements. The generational capability now makes ZGC more usable in a wider range of use cases, as not every application has those extreme memory and latency needs.
Saab told ITPro Today that he had one fairly large customer that had a multiyear effort to try to use Rust and rewrite a key application that was written in Java. The customer tried ZGC and it just worked. That customer abandoned the effort to move to Rust and found that the Java version was doing everything that was needed and more.
Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
Comments