Nowadays, I've started hearing a lot about Java. I know that its because its meant to be cross platform. But is it really?

How much can we trust the client to have JVM installed? I've quite a few books on Java in my home and really wish to read them. But every time the same question strikes me. Will the apps which I develop with Java run on most of the machines? Isn't that bad?

One way out is to use some compilers to compile Java code to native machine code. But this makes me feel, "Why use Java then?"

**So, Is it worth to learn Java for cross platform? Any ideas regarding the percentage of people having JVM installed?**