Ever since I joined the software industry I’ve been hearing, from my older and more experienced colleagues how fluid the software industry is, how quickly languages and frameworks come and go. Older developers would fondly (or, more often, not so fondly :)) remember the days when they were programming in C, then C++, then Smalltalk or Delphi or whatever, languages that have since been essentially superseded by Java and .Net (mostly C#, VB.NET), at least as far as enterprise software development is concerned. The lesson that we the ‘young guns’ were meant to take away from this was that in the software industry, languages are in the spotlight for only a short while and are then eclipsed by newer and arguably better languages that, everyone who is anyone, begins to use.
Well, I am going to put my futurist hat on and make a prediction. We are in uncharted territory with Java and .Net and the trend that I am talking about is not going to repeat itself at least not in the same way. Java and .Net are going to be with us for a long time to come and here is why.
Firstly this trend of languages being replaced by newer better languages may not be trend after all in my opinion, or at the very least it is nowhere near as quick as many people will have you believe. I don’t really want to go back too far, but lets take COBOL for example. It should certainly be considered well and truly dead by everyone, certainly no new systems are being written in it and yet, i keep hearing about someone needing COBOL programmers to do something with their legacy systems. In fact since COBOL programmers are an endangered species these days they can command quite lucrative salaries. I won’t argue that COBOL is definitely on its last legs, but it is not yet dead, and how long has it been around? What about the newer languages such as C++ for example. It is certainly not the language of choice in the enterprise software world, but what about games development? It is well and truly alive in that corner of the industry, in fact various derivatives of BASIC have found niches where games development is concerned. So the trend is not quite as speedy as it might first appear.
Another question we must ask ourselves is this. Has there ever been a language that had the support and backing of such industry giants as Sun and Microsoft, before Java and .Net came along. I don’t know for sure but I would guess that the answer is no. Java and .Net undoubtedly make huge amounts of money for the companies that drive their development, and these companies would not sit idly by and watch these particular revenue streams run dry while some other upstart language/framework takes market share away from them. And even if such an upstart were to appear it would have to have the backing either of another industry giant on par with Sun or Microsoft, or of a vast chuck of the Open Source community as a whole.
This leads me nicely into my next point. The Open Source movement is now well and truly a massive entity and it has only become such over the past 10 years or so. Before this time it was basically inconsequential. Now most companies have some sort of open source strategy or if not they are at least aware of open source. There is an absolutely humongous amount of open source software written in java (i don’t have as much experience with the .net situation, but I would imagine there is quite a bit of open source software there as well). There is a framework, a library or a piece of code for just about everything you can imagine and probably multiple versions of each. I just don’t see the software development community abandoning all that in favour of another language/platform unless that platform/language can offer as much or more stuff or make everything so easy that all that code becomes unnecessary.
Even if we were to ignore everything i said above, we all must agree that money makes the world go round :). Companies who write software for their needs must pay for it and they certainly have paid for it over the last 10 years or so. There is literally billions invested in enterprise software written in Java or C# or VB.NET all over the world. All this software must be extended and maintained and all of it is slowly getting older. And there is an equally huge amount of money invested in infrastructure to support this software. The point is only a few forward thinking companies are willing to invest significant dollars in unproven technologies, that may or may not pay off. Most companies will stick with what they know, what works, and most importantly what can leverage existing infrastructure easily and cheaply. You guessed it Java and .Net.
What about Ruby? What about Rails? Well my answer is, what about it? Certainly Ruby on Rails did come along and a lot for us have used it and enjoyed it, but i have not seen it take over as the new king of the hill, far from it. Especially not in the enterprise space. More than that, the existence of projects such as JRuby and IronRuby, tell me that while Ruby is all great and all, it would be better if we could combine it with the JVM or the .Net runtime. That may or may not be true, but many people believe that it is true and that in itself is a testament to the longevity of Java and .Net. And anyway, RoR was basically the only challenger to Java (or the .Net platform) in more than 10 years. Sure there are other languages that are interesting, some very interesting, such as Groovy and Scala for example (both of those run on the JVM by the way :)). But nothing that I have seen has the traction to take on and beat Java and .Net at their own game.
Don’t get me wrong I am not saying that Java and .Net are here forever. No matter how much of a futurist I fancy myself to be I can’t reliably predict what leaps we will make in subsequent years, maybe AI will come into its own or possibly MDA will begin to show more promise (fat chance :)). But these would be massive leaps and I am willing to take the chance on discounting them as probable. What I am saying is that just because Java and .Net are more mature platforms now, does not at all mean that they are dying. I am willing to bet that if you wanted to, you would be able to find a Java job fairly easily any time in the next 15 years and possibly much longer. Certainly we should always try and improve ourselves and learn new technologies and practices, the software industry is very fast paced and skills do become stale. But always learn at your own pace, make sure it is fun, don’t ever let anyone make you feel like there is a train somewhere that is leaving the station and you are missing the last carriage.