デスクトップPCでのJavaの敗因は、Sunが独占しなかったこと、だと思うよ。
JREをSunが独占して、もっとしっかりやっていれば、互換性問題が生じることもなく、もっと普及したろうに。

デスクトップ用のアプリを作る人間からすれば、独占は非常にありがたい。
検証コストが少なくて済むし、土台のバグを回避するために細かく場合分けする必要もなくなるしね。

マイクロソフトとSunで、JREの挙動が違うのだけでなく、おなじSun製のJREでも、
Windows上で走るものと、MacOS上で走るもので、挙動が違ってたのだから、もうね。
Javaは開発者に嫌われたから、デスクトップPCでは散々で、サーバでしか生き残れなかったんだね。

その点、マイクロソフトは開発者を囲い込むようにしている。
開発者に好まれるようにする、
開発者を忙殺して他の選択肢を経験する暇をなくす、
などなど、いいことから悪いことまで、いろいろやってね。