Blog archive

Oracle's March Madness-Style Java Bracket

Oracle's Java Platform Group created a March Madness-style bracket to mark Java's 25th anniversary, substituting JEPs for the college basketball teams and using Twitter polls to determine the winners of the matchups.

The "Best of the JDK Feature Face-Off" concluded last week, with JDK Mission Control edging Records in the final round.

"I'm not saying that all developers like sports, but this thing really resonated," Sharat Chander, senior director of Oracle's Java Product Management and Developer Relations group, told me.

A total of 28,321 votes were cast in the mock tournament, with 8,969 votes cast in the finals alone. The tournament was followed on Twitter by a range of Java community leaders, including Java Champion Venkat Subramaniam and Oracle's language rockstar Brian Goetz, who offered comments and congratulations. It even inspired a kind of Twitter poetry slam, with exchanges of bits of doggerel like this one from Java architect Erik Costlow (@costlow):

To think I could ever see
A tool so lovely: JMC
A tool that streams events all day
Yet still performs without delay

The purpose of this project, Chander said, was to give visibility to Java features that were on releases starting with Java 9, with a couple of features in Java 8 added to round out the brackets. But the lighthearted exercise also yielded at least one unexpected insight, he said.

"This is a huge ecosystem of users, and we really saw where their passions lie," he said. "In the finals, 60 percent of the voters selected a tool over significant language enhancement. I think this is proof that open-sourcing JMC was the right decision. I don't think it would have advanced if it had been a gated feature."

JDK Mission Control (JMC) is a profiling and diagnostics tools suite for the Java Virtual Machine (JVM) used by developers to gather detailed low-level information about how the JVM and the Java application are behaving. Records (JEP 359) is a kind of type declaration in the Java language.

Designing the brackets to provide a meaningful competition was tricky, Chander said. They settled on four categories (language, libraries, tooling and runtime), and they used a randomizer to set the matchups. "There was no science involved," he said, "like saying feature x will go up against feature y for these specific reasons. We thought leaving it to chance would get us closer to a level playing field. Then it's about what you're really passionate about."

And there were a couple of deliberate omissions. "People hit us with questions right away about why we left out xyz feature," Chander said. "Where's RMI? Where's serialization? And we did omit some features outright. But we had to make some choices. If we tried to encompass everything, the bracket structure would simply be too large and everything would have gone sideways. And let's face it, if we had included lambdas, there'd have been no competition at all."

In case you missed it, you can see the entire bracket and final tournament results on @java.

BTW: Chander posted his own bracket on Twitter.

Posted by John K. Waters on July 16, 2020