そこでjavaを一緒くたにしているのがワケわからん。

javaは互換性という意味ではc#よりましだが、それを逆から見るとOS独自の機能への対応が疎かになっている事に他ならない。

c#は標準機能を使うだけで速度以外windowsのc++アプリと使い勝手で遜色ないように作れるが、javaの標準機能だけでc++で作ったネイティブアプリと比較するとどうしても使い勝手が劣ってしまう。windows上に限らず、linuxやMacでも同様