4

私たちは、C++ から Java または C# に移行する将来のプロジェクトのためにテクノロジを切り替えることを考えています。ですから、当然のことながら、現在、何を選択するかについて大きな議論が行われています。問題は、EMF や RCP の業界での経験を持っている人が誰もいないことです。

だから私はあなたが何を好むかをあなたに尋ねたかった. 私たちのプログラムは次のとおりです。

  • gui重い(ダイアログ、プロパティがたくさん)

  • 非常に大きなモデル (シリアル化された xml は現在約 15 MB を占めます)

  • アプリケーションは、framework-application-center に統合する必要があります

  • データ形式 (xml およびバイナリ) は、現在の形式と同じでなければなりません

  • グラフィカルな編集が必要です (シェイプの作成、移動、接続 + プロパティの編集)

  • データモデル内の多くの類似しているが小さな異なるオブジェクト

実際の質問は次のとおりです。

  • C# に EMF に相当するものはありますか?

  • C# の RCP に相当するものはありますか? (例: データモデルを編集するコマンド、GUI フロントエンドなど)

  • RCP での GUI 編集は、Windows フォームや WPF と同じくらい優れた柔軟性がありますか?

  • EMF はどの程度硬直/柔軟ですか?

  • データ モデル間には多くの相互依存性があります (他のモデルを制御したり、異なるオプションを許可したりするものもあります) - これらをどのようにモデル化しますか?

  • あなたはどの選択肢を選びますか?

アドバイスや意見をありがとう

マニ

4

3 に答える 3

4

Java 開発者として、私は C# について多くを語ることはできませんが、Java 側について概説することはできます。学習曲線は非常に急ですが、「hello world」を実行できるようになると、はるかに簡単になります。GUI プログラミングは問題ありません (いくつかの選択肢があり、多くの無料および商用のウィジェットが存在します)。XML を処理する方法もいくつかあります。一般的に、ほとんどすべてのものに (多くの場合無料の) lib があります。したがって、選択肢が必要な場合は、Java が適しています。

一方、C# 言語は技術的に先行しています。Java7 はギャップを減らすことができますが、それを埋めることはできません。

JVM の利点 (オープンで、広く普及し、プラットフォームに依存せず、豊富なライブラリ...) と最新の言語の利点の両方を利用したい場合は、Scala を検討する必要があります (Scala と Java コードを混在させることができます)。問題なく)。Scala は非常に革新的で、OO と関数型の機能が混在していますが、C++/Java スタイルの構文に慣れているプログラマーにとっては非常に「アクセスしやすい」ものです。

于 2010-08-31T07:15:57.443 に答える
2

アプリケーションの大部分については、Eclipse RCP + EMF を強くお勧めします (Eclipse RAP もプラスです。アプリケーションを単一ソースにして、Web ベースのリッチ Ajax アプリケーションを「無料で」入手できるからです)。

ネイティブ機能にアクセスする必要がある場合は、いつでも別の言語で記述したり、JNI を使用したり、IPC の形式を実装したり、Web サービス (SOAP)、REST-JSON、DBus、または好みの通信メカニズムを使用したりできます。

Java アプリから Linux ツールを呼び出して (たとえば、"ssh someserver" や "rsync" など)、快適に作業を行うことができます。他のツールが完全に機能し、次の興味深いタスクに取りかかることができる場合、「Java 用の純粋な SSH ライブラリ」または「Java 用の純粋な Rsync ライブラリ」を取得することが差し迫った理由であるとは思いません。

ところで、私は Eclipse と JVM に偏っていますが (注: Java 言語は私の好みではありません。Scala と Groovy を好みますが、EMF を使用すると Java 言語で作業する方が簡単です)、.NET の経験があります。.NET にはいくつかの良い点がありますが (1 つは C# が Java 言語よりも優れていることですが、それはそれだけです。2 つ目は、Microsoft が Sun/Oracle が Java[SE] API に提供するよりも多くの機能を組み込みでパックしていることです)。あなたが考慮する必要があるいくつかのこと。

まず、クロスプラットフォームです。Mono はありますが、全体的に .NET は移植が困難です。これは必要ないかもしれませんが、便利かもしれません。さらに、Eclipse RCP は「よりクロスプラットフォーム」であるだけでなく、.NET Framework によって提供されるすぐに使用できる機能よりも優れています。(公平な比較ではないことは承知しています。Visual Studio Shell と比較する方が公平です)

2 番目はライセンス、次にツール、およびコスト (3 つのアイテムを作成) です。Eclipse ツール全体が無料で利用できます。それらはオープンソースです (バグを修正し、パッチを提供できます)。ライセンスはオープンであり、その上で商用製品を正しく作成できます。

3つ目は機能性です。RCP 自体の内部には非常に多くの機能があり、EMF、他の Eclipse プロジェクト、およびその他の Java エコシステム (JVM 言語は言うまでもありません) と組み合わせると、基本機能の多くのオプションが得られます。

参照: http://eclipsedriven.blogspot.com

于 2010-12-22T15:17:58.280 に答える
2

私は EMF と RCP についてはまったく詳しくありませんが、ざっと見ただけで、.Net には「同等のもの」が確実に存在します。ただし、私は偏見が強いので、私の言葉を鵜呑みにしないでください。

xml/xsd およびその逆 (xsd.exe) からデータ クラスを生成するツール、Visual Studio 内のグラフィカルな統合モデリング ツールなどがあります。

また、WPF があります。これは、あらゆるプロジェクト (グラフィカルな重いプロジェクトだけでなく) に強くお勧めします。オブジェクト モデルは操作が簡単で、宣言型の GUI 設計 (XAML) を備えており、WinForms などの古い .Net テクノロジと比較して、(説明したような) ダイアグラムのようなツールを作成するのがはるかに簡単になります。特に、WPF/Silverlight を使用する場合に最も広く普及しているパターンについては、MVVM (Model-View-ViewModel) を調べてください。

于 2010-08-31T06:50:12.460 に答える