Oracle on Tuesday plans to release Oracle JDK 16, Big Red's implementation of the Java 16 specification for the Java SE platform, sporting 17 distinct enhancements.
For Chad Arimura, veep of Java developer relations, it's an occasion to celebrate the programming language's enduring popularity and Oracle's steady stewardship.
"It's been a quarter century now that Java has been in the marketplace, and it truly is one of the most important technology innovations of our time, really," he said in an interview last week with The Register.
"And depending on how you slice the statistics, you know, other languages may claim that they're vying for the top dog position, but at the end of the day Java is just so prevalent around the world that it's hard to even get near this."
Oracle sweetens Java SE subscriptions with a spoonful of free ‘GraalVM’ runtime said to significantly speed JavaREAD MORE
Arimura proceeded to cite various data points to support the view that Java remains the belle of the ball: 69 per cent of developers surveyed programming in Java and there are more than 50 billion active JVMs.
"I'm not quite sure how they derive that statistic but they worked really hard at it so I know that there's some legitimacy to it," he added.
However, Arimura did provide the provenance for another figure: 98 per cent of the Fortune 100 companies have openings for Java developers. He said he personally combed the corporate job boards for that metric.
Other organizations that track Java popularity also rank the language pretty highly: Redmonk in January rated Java as the third most popular programming language at the moment; Tiobe this month rated Java as the second most popular programming language, although down from first place a year ago.
Four years ago, Java shifted from large releases every few years to more manageable updates pushed out every six months. The accelerated release cadence was necessary to keep up with other languages and software projects like browsers that pushed for shorter release cycles.
"There was this concern in the marketplace that the six month release cadence will be too fast and that people won't be able to keep up," said Arimura. "If my dependencies and my frameworks aren't supported, how can I possibly stay up on the release cadence?"
But he said Java developers have risen to the challenge and now certify their projects for language updates prior to the release date.
Java 16 includes 17 Java Enhancement Proposals, or JEPs. These refer to substantive changes to the way the language works.
"If you're a language nerd, like many people on our team, then Pattern Matching for instanceof is super exciting because it decreases the ceremony and the boilerplate and makes it so that you can do a test of an object and an assignment of an object in one line, as opposed to a couple of different lines, and you get rid of the casting of an object into a variable," said Arimura.
He was equally effusive about Records as another mechanism to reduce unnecessarily verbose code.
"What we like to say is Records represent the data is nothing but the data," Arimura explained. "Oftentimes, developers have hundreds of classes, even thousands, that just represent maybe data they want to persist to a database. And they have all this boilerplate in there... and all of that can be essentially replaced, and automatically created by the JVM, and we can reduce a bunch of boilerplate down to a single line, which is a Records class."
Among the JVM improvements, Arimura pointed to JEP 376: ZGC: Concurrent Thread-Stack Processing, as a noteworthy change. The Z Garbage Collector (ZGC), he explained, represents an option for when you have large heap sizes and you want response times of 10ms or less. ZGC Concurrent Thread-Stack Processing provides a way to reduce pause times down below a millisecond by parallelizing thread processing.
There's also a new Packaging Tool, which offers a way to package self-contained Java applications. It represents, said Arimura, a move toward the model of delivery exemplified by Apple's App Store and away from the traditional way Java has traditionally been run, which involves installing Java on a system, deploying the code, and running the app.
"The Packaging Tool takes a Java app code, with its dependencies and the runtime, and packages them together into a native artifact that can be run on a native system," he said. "So for example, you can create a Windows
.exe file and you can double click it and run the Java application."
Even though the Java release cadence has accelerated, there is still a lot for Java developers to explore and consider. Arimura said that the Java industry has largely adapted.
"There was some skepticism when we first announced the changes," he said. "I think a lot of people were skeptical and I said, 'there's no way anybody's going to be able to keep up. And 'this is going to ruin Java,' like you generally get that when you try and change things."
But over the past few years, during which time Oracle has been consistent with its messaging and release timing, Java-oriented enterprises have largely gotten on board, Arimura said, adding that there's still more work to do.
"Java is just so prevalent that these things do take time to adapt, and there are many things that we want to continue to make investments in the educational space," he said. "We want to make investments on the awareness of the release cadence, to lower the perception that it's scary to go from version to version because it's really not." ®