It’s been a busy few years in the Java world. Oracle’s acquisition of Sun is obviously the largest piece of news and has a significant impact on the future of Java. Oracle’s new position as owner and commander-in-chief now places Java squarely in the enterprise realm alongside Oracle’s other products. Java has always been an enterprise technology, but without the JCP promoting collaborative innovation, who knows what kind of traction Java would have made in the world? Appealing to both academia and industry helped push Java forward and attract a lot of new blood in the early years.
Fast forward to 2010.
Java is a utilitarian, status-quo ecosystem for getting things done, albeit not very quickly. This is actually a good thing. Instead of worrying about sharp edges, developers get to work with a very stable, very slow moving target. This won’t change as Oracle’s only motivation is to sell support licenses and create other fee-based streams of revenue. Major improvements to Java are not on the agenda. Innovation from the core Java team will almost certainly slow down and Java will move deeper into a stabilization and maturity phase. Anything considered an official spec is almost certainly going to see a reduced adoption rate as only the largest of the large corporations stick with pure Java standards.
As business goes on as usual, everyone is anxiously waiting for a true Java successor to emerge. Will it be Scala? Go? Neither are yet on the radar of most corporate cubicle farms.
Contrary to the belief of Java-contrarians, Java will not die any time soon, nor should it. Java is well suited to organizations that span many silos with many integration points as Java integrates so well with other technologies. The language itself is also well suited to large development teams; not only does it have a massive library of utilities available to Java developers, but its statically typed nature makes refactoring relatively easy.
In my opinion Java will actually experience a period of growth as IT spending increases with the (slowly) rebounding economy. Even if the economy takes another nosedive, organizations realize that mass cost savings can be realized through superior technology, and Java’s place as a mature and stable language position it as a reasonable choice for a risk-adverse economic climate. Maturity and stability, not innovation, is what the enterprise values most. (I would wager that there are many more lines of COBOL currently in production than lines of Ruby.) Even though Java is mature, most corporations haven’t leveraged even a fraction of what Java is capable of. The problem in many shops isn’t even the language itself; a powerful shiny new language won’t fix the process problems that plague most corporate development shops, a powerful shiny new language would most likely just exacerbate them. Java on Android is also a big deal for Java developers considering that Android recently surpassed iOS in terms of mobile OS market share. Unless Google declares war on Java, the trend is growth.
Over the next decade expect mainframe systems to slowly be retired and legacy Java applications be refactored into client-centric enterprise portals. The simple fact is that Java as an ecosystem (language + tools + frameworks + runtime environment) is a fantastic choice for system integration projects and some new development in large organizations. Java is rock-solid and proven.