Any enterprise application is typically sold by one business (the application development company) to another business (the bank, or just about any other large enough entity, in this case). In other words, it is what we call a B2B deal. Typically, most major banks have customers numbering in the millions, and therefore, not surprisingly, tend to have annual transactions numbering in the billions, with the overall transacted value in the region of trillions. So you see, that’s a lot of data, and there’s shiploads of money involved.
Naturally, any business transacting that kind of volume would naturally want to reduce the number of unknowns in the entire software solution for which they pay development companies, since every single factor beyond their control tends to make the bank’s managers nervous. Think, what if the software solution provider suddenly disappeared? Would the solution provider be willing to sign a contract that states — come what may — they will provide service for the next so many decades? And so on. You get the idea.
That’s the reason, banks and other such staid organizations want to have technology stacks that are not just stable, but which are also backed by solid companies with solid revenue models. Both .Net and Java are battle-tested platforms, and they have huge companies behind them: the .Net platform is backed by Microsoft; while the Java platform has a giant like Oracle behind it. No matter how many bad decisions these giants may take, the bank knows that these companies are not going to disappear any time soon. Secondly, these platforms tend to have updates that are *always* backward-compatible, which means that any major update will not break applications deployed on older versions.
You see, banks are conservative organizations driven by conservative managers, and they would rather have a stable platform rather than hot, happening, and exciting new technologies like RoR and Django.
With all due respect to the developers and the communities behind these platforms, who knows when they will just disappear? After all, there is just no clear revenue model behind them, and this is a very real risk for them. And in the contingency that the platform did disappear, who would then maintain the bank’s application for them? Would there be enough developers out there who would be willing to work on a dead platform?
As you may have realized by now, these are very real concerns for not just banks but just about any medium to large enterprise out there. At all times, there should be a solid and stable company behind these platforms before they decide to go for it. By opting for platforms like Java or .Net, enterprises manage to reduce the number of unknowns in the equation.