Java's "write once, run anywhere" comes with a lot of costs that many programming language designers aren't willing to pay. It's not just about the JVM (which by itself prevents Java from running on some devices), it requires Java to adopt a "lowest-common-denominator" approach when it comes to supporting platform-specific features, and often go to great lengths to appear to support features that are easy on one platform but hard on others. As an example, look how long it took Java to even support something as basic as PIDs thanks to cross-platform compatibility concerns. Given that .NET has plenty of excellent languages in its own right, I suspect it will be a long time before we see another language willing to restrict itself as heavily as Java has in order to attain this utopic ideal.
(Personally, I don't really think it's worth it--many libraries that need to get stuff done in Java end up using JNA anyway, negating this supposed advantage. But it's certainly much better about it than ostensibly cross-platform languages like Ruby are).
(Personally, I don't really think it's worth it--many libraries that need to get stuff done in Java end up using JNA anyway, negating this supposed advantage. But it's certainly much better about it than ostensibly cross-platform languages like Ruby are).