Blog archive

Declining Interest in Java EE Doesn't Mean Java Is in Decline

As we reported earlier, Java won TIOBE's annual popularity contest for 2015, and came in a close second among languages used on GitHub, even though everybody and his brother seemed to be predicting Java's decline last year. This is why covering this beat often makes my head hurt. How can Java be on its way out when it's more popular than ever?

Turns out, you could argue that both are kinda true.

"We have seen a decreasing focus on Java EE," Gartner analyst Mark Driver explained. "Very few of the companies I talk to are doing new Java EE projects. They're using lighter versions, doing a lighter stack. But you shouldn't confuse Java EE with Java. In the enterprise today, it's about Java SE. Java SE 8 was probably the most innovative change we've seen in Java in 20 years. At the same time, we're seeing growth in Java-VM-based languages, like Scala and Groovy. If you're just watching the sexy stuff -- the cloud, IoT, microarchitectures, containers -- you could miss that Java and .NET are the only enterprise platforms with real breadth and depth today."

Gartner's Pace-Layered Application Strategy provides a nice framework for understanding what's going on here. Introduced in 2012, the strategy is a methodology for categorizing applications and developing a differentiated management and governance process that reflects how they are used and their rates of change.

The strategy defines three application categories ("layers") to distinguish app types: Systems of Record, which refers to established packaged applications or legacy homegrown systems that support core transaction processing and manage the organization's critical master data; Systems of Differentiation, which refers to apps that enable "unique company processes or industry-specific capabilities;" and Systems of Innovation, which refers to new apps built on an ad hoc basis to address new business requirements or opportunities.

"I have seen a remarkable decline of Java in Systems of Innovation," Driver said. "This is the next-gen, high velocity stuff -- areas where people have turned to alternative technologies, like Node, JavaScript, Ruby, and Python, and at the bleeding edge, Golang. But Java still retains extremely heavy control over Systems of Differentiation. The more mission-critical, larger scale projects are still being done in Java. I talk with clients all the time who say, we built the prototype in Ruby or Node, and then when we had to scale it, to implement it in the real world, we turned to Java."

The high-profile of the innovative stuff has led a lot of people to assume that there has been a decline in the use of Java in the enterprise, Driver said, in spite of that data that clearly shows that it is not.

"When I look at the data -- when I look at GitHub and StackOverload, at all the books being published -- it shows that Java is still firmly entrenched as the No. 1 development tool in the world."

And yet Driver allows that a decline is almost certainly in Java's future, or perhaps it's more accurate to say, an evolution.

"The very definition of what we call Java is changing," he said. "In the old days it was understood that what we meant when we said 'Java' was the APIs, the SDKs, the VM, and the language. Nowadays, there's as much or more open source being done with the traditional Java blueprints. There's are four or five real languages with real work loads now on the VM. So the VM is a piece that is still consistent. There's a lot of variation on that theme."

And then, there's Jigsaw in Java 9, which will modularize Java, and turn it into more of a family of technologies that will increase complexity, but also flexibility.

Driver also believes that part of cause of the contradictory perceptions about Java over the past year has to do with its age. The venerable mostly-OO language turned 20 last year, which is an eternity in distributed computing. Many developer, especially elite developers, might simply want to move on to something else. But for enterprise computing today, nothing else exists that provides the same functionality as Java.

Posted by John K. Waters on January 27, 2016