> プリミティブ型と参照型とが C#では言語仕様として混同されています。

混同しているのはあなたの方です。C#にはプリミティブ型というものはありません。
intやdoubleのことを「プリミティブ」と呼んでいるのならば、それは値型の別名に過ぎません。
どこが参照型と混同しているのでしょうか?

> 例外のcatchが強制されない点も C#.NETが大きくJavaに劣っている点です。

この点には一部同意しましょう。
しかしながら、これはC#「言語」としてできないだけであって、
CLIとしてできないわけではありませんので要注意。

> .NET Frameworkは 初期バージョンとしては随分がんばってAPIを提供しているとは
> 思いますが、明らかに Java言語のAPI充実度に見劣りします。

Javaの1周年の時と比較してみてください。
当時はC++使いが鼻で笑っていましたよね。Javaなんか未熟で使えるかと。

> APIが少ないと これまた 開発の生産性は低下しますものね。

他人の作ったものしか利用できないならそうでしょうね。
自分ではライブラリなりフレームワークを作らないのですか?