The Java is dead meme has resurfaced, this time the instigator is Mike Gualtieri from Forrester. Given his general premise of Java is dead for enterprise development, I find it odd that he basically starts with:
Java is still a great choice for app dev teams that have developed the architecture and expertise to develop and maintain business applications. It is also an excellent choice (along with C#) for software vendors to develop tools, utilities, and platforms such as BPM, CEP, IaaS, and ECP.
He goes on to state that “Java development is too complex for business application development”. Depending on your point of view, I could agree with this, but some of his points just do not make any sense. “Business requirements have changed”, “Development authoring is limited to programming languages”, “Java frameworks prove complexity” and “Java has never been the only fame in town” really talk more to the state of software than any criticism of Java itself. My favorite point is “Java is a 20 year old language based on C++”, so obviously it is not suited for enterprise applications. That is like saying C++ is a 30 year old language based on C and meaning that it is not suitable for writing an operating system or a game. What does one have to do with the other? There are two points that do make an interesting case for the future of Java:
- Java bungled the presentation layer. Swing is a nightmare and JavaFX is a failure. JSF was designed for pre-Ajax user interfaces even though some implementations such as ICEfaces incorporate Ajax. There is a steady stream of new UI approaches reflecting Java lack of leadership in in the presentation layer.
- Java’s new boss is the same as the old boss. Oracle’s reign is unlikely to transform Java.Oracle’s recent Java announcements were a disappointment. They are focused on more features, more performance, and more partnerships with other vendors. So far, it appears that Oracle is continuing with Sun’s same failed Java policies.
Java and presentation were never a happy couple. Thankfully, AWT was not even mentioned. Oracle’s stewardship of Java has not started well, though I am sure things will get better. The long term question is still there, what innovations can really be added without being obviously bolted onto the language? There is another way to look at this as well. What if we ignore these two issues? If Java did not change and people could only add features if they build there own library, would that make a big difference to people? Java is a fairly mature language, and does not really need additional core features. Cool features could be added through other frameworks, which would mean that the long-term leadership would not really matter.
The presentation layer has long been separated from Java in terms of actual implementation, so that is not a real concern either. Many application user interfaces are being developed within a browser, and this trend will likely continue with HTML5. There is also a trend moving the control of the application into the browser as well. What this means is that the server is just a collection of web services (REST or otherwise) that serve data in some predetermined format. This data is then rendered into the pages based on whatever the action was mean to accomplish. Granted, this trend is a topic for another day, but from the server perspective, and enterprise applications, it has very interesting implications.
So, if the server application is just a collection of web services that serve data in JSON or XML, what language do they need to be written in? In reality it does not matter, and this is a good reason to wonder if Java can maintain its leadership in the enterprise. Ruby and Python have been gaining developer mindshare for years based on their popularity for web development. They are also great glue languages, which means that enterprise developers may be using them outside of the enterprise applications already. C++ and C# are obvious alternatives for Java on the server as well, and Perl is still a very viable option especially when you remove the presentation concerns. Basically, any language that can be executed by a server that responds to HTTP requests is an option in the web services scenario.
Is Java dead for enterprise applications? Obviously not, and until something significant changes, it is still a very good option for people to use. Should Java be concerned about the growth of other languages and the simplicity and platform-independence of using web services? Absolutely.