Worse than that, the fact that Sun has tried so hard to push this idea has done grievous damage to the acceptance of Java. In a few years, maybe they'll have it figured out or replaced. But it's not true yet. So I have to recompile for every architecture on which I want to run. Ok, I wish I didn't, but that's what I have to do today anyway , but I have to do it in C instead of Java.
Virtual machines are cool.
Security models that allow network-distributed code are cool. Serialization and agent-like behavior is also cool. But these are not what I'm most interested in. There are a lot of people who are most interested in those things, but me, I just want to write a program that will run on some suitable number of architectures. I'm happy distributing binaries for each architecture to do that.