サーバー側にJavaがあり、クライアント側にc#があるアーキテクチャの例をいくつか見てきましたが、この組み合わせが非常に優れている理由は何ですか?なぜ両側の.netがより良い選択ではないのでしょうか(または実際には、両側のjavaですか?)
後で追加:多くの場合、JavaはWindowsサーバー自体でホストされていますが、Tomcat経由だと思います(100%確実ではありません)-ここでの動機は何ですか?
サーバー側にJavaがあり、クライアント側にc#があるアーキテクチャの例をいくつか見てきましたが、この組み合わせが非常に優れている理由は何ですか?なぜ両側の.netがより良い選択ではないのでしょうか(または実際には、両側のjavaですか?)
後で追加:多くの場合、JavaはWindowsサーバー自体でホストされていますが、Tomcat経由だと思います(100%確実ではありません)-ここでの動機は何ですか?
Java がバックエンドで頻繁に使用されている (そして事実上の標準になっている) 理由はいくつかあります。
C# には、Windows で UI を設計するための優れたツールとライブラリがあります。Java はオペレーティング システム (OS) に依存しないため、OS の UI の特定の癖に対応するツールはほとんどありませんが、C# は Windows アプリケーションを作成する目的で Microsoft によって設計および保守されています。
まあ、両端で .NET が使用されているケースはたくさんあります (Java についても同様だと思います)。しかし、Java-server/.NET-client アーキテクチャの背後にある動機についての私の推測では、アプリケーションがサーバー OS として Unix をターゲットにしているのは、コストや信頼性の理由、または既存の Unix サーバー環境に適合する必要があるためです (たとえば既存の Unix アプリと密接に連携しています) が、Windows をクライアント プラットフォームとしてターゲットにしています。(Windows がサーバー プラットフォームとしても使用されている場合、Java はおそらくあまり一般的ではないと思いますが、これを裏付ける数字はありません。)
Unix サーバー OS を想定する場合、Java は非常に生産的な選択肢であり、多くのライブラリで十分にサポートされていますが、Perl などの代替手段よりも開発者ベースが大きく (少なくとも「エンタープライズ」環境では)、「管理」の認識が高いです。 、Ruby または Python。
逆に、.NET は Windows GUI の構築をより適切にサポートしているため、Windows クライアントにより適しています。ツールだけではありません。Java GUI API 自体 (Swing など) は、ネイティブのルック アンド フィールよりもクロスプラットフォームの類似性を好む傾向があるため、Windows アプリケーションのように見えたり動作したりしないアプリになる傾向があります。(ここでは少し一般化しています。申し訳ありません!)
JSON のようなデータ交換形式では、接続の両側のシステムが同じ低レベルのテクノロジであるという重要性がはるかに低くなります。
Java はサーバー向けに十分にテストされ、サポートされている言語ですが、C# には GUI を構築するための優れたツールがあります。
Java はより成熟していると考えられており、これはサーバーに適した属性ですが、C# は Windows やオフィス (クライアントが好む) との統合/類似のルック アンド フィールを備えています。
Javaに関する限り、2つのことがあります
40ランナー、ホットスポットJVMがMSCLRを打ち負かすベンチマークは1つも見たことがありません。
サーバー側では、Java は堅牢でスケーラブルであることが証明されており、.NET が夢見ることしかできないプラットフォームで利用できます。したがって、ハードウェアで最も多くの選択肢が必要な場合は、Java が優れた選択肢です。これには、多くの CPU を搭載した非常に大きなマシンや、クラスター化された安価な x86 ボックスが多数含まれます。
サーバー側で .NET を使用している場合は、Windows を使用する必要があります。Windows は、ハードウェアに関して適切に拡張することはできません。
ほとんどのサーバーは、Windows または *nix ベースのいずれかです。したがって、サーバーでは、Java または .NET/C# (*nix の mono 経由) が最適です。
Java は、さまざまなクライアント デバイスに対してより優れたサポートを提供しますが、多くの点で、その要件は、ほとんどのクライアント (少なくともオンライン デバイスでは) ではるかに優れた HTML サポートに置き換えられています。
インストールされたクライアント アプリケーションの場合、ほぼ間違いなく Java の移植性が優れていますが、Compact Framework、Micro Framework、Silverlight などでは .NET が追いついてきています。
個人的には (職務上)、主にサーバーにあるものを気にします。.NET/C# にがっかりしたことはありませんが、私は Java 開発者ではないので、直接対比することはできません。オープン ソース プロジェクトでの作業から、サーバー上で mono を使用している人々の優れたコミュニティがあることを知っています。
クライアントでは、WPF のようなツールが一流の GUI エクスペリエンスを提供し、.NET の winforms サポートは通常の Windows アプリに役立ちます。ただし、多くの WPF アーキテクチャは Silverlight と共通であるため (Moonlight は *nix などのモノ ツインとして)、これにより、Windows 以外のクライアントでもエクスペリエンスを使用できます。