Amid a budding controversy surrounding the module system planned for Java, Oracle’s chief Java architect, Mark Reinhold, lashed out today at Red Hat and IBM’s opposition, saying the companies are simply guarding their own interests.
In an open letter to the Java Community Process (JCP) Executive Commitee published Friday morning, Reinhold was highly critical of the two rival vendors. The current disagreement centers on Java Specification Request 376, which focuses on the module system featured as part of Project Jigsaw. Red Hat Middleware initially agreed to the goals and requirements of the JSR, but then worked consistently to undermine them, Reinhold said.
“They attempted to turn this JSR into something other than it was intended to be. Rather than design one module system that is both approachable and scalable, they instead wanted to design a ‘meta’ module system via which multiple different module systems could interoperate on an intimate basis,” he said. “I can only assume that they pursued this alternate goal in order to preserve and protect their home-grown, non-standard module system, which is little used outside of the JBoss/Wildfly ecosystem.”
Opposition by Red Hat and IBM to the module system could even hold up the upcoming release of Java Development Kit (JDK) 9 in late July; modularity is slated to be the marquee feature, enabling better scalability in Java. Red Hat’s Scott Stark, vice president in the company’s JBoss Java middleware group, has argued that the Java module system presents problems for applications and even sets up two separate worlds for developers: one for modules and one without them.
The JSR is meant to provide a module system approachable by all developers, Reinhold said. It is used in JDK 9 via Java Enhancement Proposal 261. Public review balloting on JSR 376 is scheduled to end on May 8, and IBM and Red Hat are expected to vote no.
Designing a “meta” module system would be an interesting project, but it would be even larger in scope and more difficult than JSR 376, Reinhold said. “By focusing on an audience of module-system experts, it would likely result in a design that is far from approachable by all developers. That is why I repeatedly pointed out to Red Hat Middleware that many of the features they advocated were out of scope, but they chose not to accept those decisions.”
IBM, meanwhile, has said very little during the course of JSR 376, Reinhold said. “After they announced that they would vote against it, they later sent a list of specific issues to the EG (Expert Group)—but only in response to a request from another EG member. None of those issues is new, many of them were discussed long ago, and IBM was silent during most of the discussions.”
Reinhold added that he can only conclude IBM has decided its own interests are served by delaying JSR 376 as well as JSR 379, which pertains to Java Standard Edition 9 and is the basis of JDK 9. This was “regrettable,” Reinhold said.
Reinhold says JSR 376 was not perfect, but it reflects years of development, testing, and refinement with much feedback from developers. The current proposal provides a solid foundation for future work, he said. “It is time to ship what we have, see what we learn, and iteratively improve. Let not the perfect be the enemy of the good.” He stressed his opposition to further delays, which could go on for years and could result in a bloated, complex design that no developer would ever use.
Reinhold noted that just yesterday he proposed a revision to the automatic modules part of the proposal after issues were raised. The revision has been received positively, he said.