Many of those same banks also have applications running on all sorts of Unix systems. And of course, Windows is widely used for front-office applications. Oh, and they all use different RDBMSs, too.
If you think it's easy to write, say, C++ applications that are portable across all those environments, I suspect that you've never really tried.
We've written our in-house middleware in Java; we develop on Windows desktop machines (alas!), and the code works out of the box on AS/400, Solaris and Linux, as well as with every RDBMS we've come across. It's an easy sell to our customers, many of whom have strict requirements about which operating systems they're willing to use for which projects. And we haven't spent any time porting our software.