At first people made a big fuss about Java portability. And, yes, it is pretty amazing that you can take your code and just run it on Windows, Mac, or your favorite Unix. Most people only have one computer at a time, and may not be that interested in portability. But most organizations are very interested in compatibility.
Java makes your applications future-proof. In the last 10 years, there has been a new release of Windows or a service pack virtually every year, and they all have subtle or severe incompatibilities between them. Moving applications between operating systems can be traumatic.
Oldtimers like me recall the days when Windows 3.0 first came out, and customers wanted native Windows versions of all their applications. Everything had to be rewritten. A few years later we were rewriting againfor Windows 95, then for NT, then for Win2000, and now XP, each of which is accompanied by the API of the moment: COM, DCOM, COM+, ActiveX, DNA, .NET, and so on. The OS you're using today is probably not the OS you'll be using in two years' time.
Java provides a proven way to take all your software forward with you. For a large organization, that can easily be an investment of many millions of dollars. The entire computer industry (with one notable exception) is united behind Java software compatibility. The sole exception is the company whose monopoly depends on driving users to frequent upgrades. That same company is very keen to move users to the .NET platform, in which the software is leased to you for annual payments, rather than sold once. At the same time, the .NET marketing machine is making promises that are 23 years ahead of the engineering reality.
Java has a proven record today, and decouples that lock-in between your application and one particular OS version. It allows users to choose when they will upgrade and what they will upgrade to, and to take all their applications with them.