私は現在、Mono を使用して C# でデスクトップ アプリケーションを開発し、SuSE と Windows でテストしていました。概念はそれほど重要ではありませんが、これは Web サイトをスキャンして、セキュリティやクロス ブラウザーの互換性に関する問題を返す「Web lint」プログラムです。ただし、複数のプラットフォームにバイナリを提供できるようにしたいと考えています。Mono にとどまるべきですか、それとも、Mac、Windows、Linux など (おそらくモバイル プラットフォーム) などのプラットフォームの可用性が向上し、移植が容易になる別のプラットフォームはありますか?
7 に答える
最善の策は、すべてのプラットフォームに実際に存在する言語を使用することです。これは通常、Java を意味すると思いますが、perl でさえモバイル プラットフォーム用のフレーバーを持っています (対象のモバイル プラットフォームによって異なります)。
私はほとんどのクロスプラットフォーム作業を C と perl で行っていますが、C にはいくつかの頭痛の種があり (#ifdef がたくさん)、関心のあるモバイル プラットフォームに perl がないかもしれません (まだ)。ターゲットにするすべてのプラットフォームに共通する言語/コンパイラ/インタープリターを評価し、そのリストから選択する必要があります。そのようなプラットフォームの完全なリストを知らなければ、何を使用すればよいかを説明するのに苦労するでしょう。ただし、Java は有力な候補となるのに十分なバズワードを持っています。
C++ を知っていれば、Qtは多くのプラットフォームをカバーします。
C#とMonoは、おそらくほとんどのデスクトップ環境で十分なクロスプラットフォームです。秘訣は「モバイルプラットフォーム」の要件です。
モバイルオペレーティングシステムは非常に多様であり、一般化するためにできることは多くありません。Blackberryのように、Javaを使用しているものもあります。C#を使用すると、WindowsMobileベースのプラットフォームを利用できる場合があります。iPhoneは独自のことをします。ほとんどの場合、プラットフォームを選択してそれをターゲットにする必要があります。それはあなたのデスクトッププラットフォームの選択を知らせることになるかもしれません。
Mono に固執するだけで、コードの移植性の問題をチェックする Gendarme コード インスペクター (Mono の場合は FxCop) があることを確認してください。
Java は、Windows、Linux、および Mac で実行されます。C# から簡単に移行できる必要があります。スキャンしている Web コンテンツを取得するために Apache HTTPClient を使用します。スキャン コードは多かれ少なかれ同じである必要があります。ただし、欠点は、ユーザーが Java ランタイムをインストールする必要があることです。
Python も別のオプションです。Windows 用のスタンドアロンの実行可能ファイルをビルドできます。ほとんどの Linux ディストリビューションにはデフォルトで付属しており、Mac OS X にも付属しています (要出典 ;))。これにより、Windows ユーザーの手間が大幅に軽減されます (言語は実行可能ファイルにコンパイルされ、他のダウンロードは必要ありません)。
mono が Mac OS X で動作する場合、それは確かに優れたプラットフォームでもありますか?
それは本当にあなたが何をしたいかによります。Web開発の場合、HTML / JavaScriptで十分であれば、それを使い続けてください。より高度なものが必要な場合は、すでに知っているので、MonoでASP.NETを使用します(おそらくあなたがやったことです)。(ここでVisual Studioを使用できます。)
もう1つのオプションは、(C#開発者であるため)Silverlightを使用することです。これにより、WindowsおよびMacプラットフォームがカバーされ、Moonlightが後でLinxuプラットフォームをカバーすることを願っています。(ここでは、VisualStudioとExpressionBlendを使用できます。)
デスクトップアプリケーションが必要な場合は、C#をすでに知っているので、Javaがおそらく最も簡単です。しかし、C / C ++を知っている場合は、たとえばwxWidgetsを見てみてください。
従来の C#/Java に限定する必要はありません。Adobe AIR と Microsoft SilverLight をご覧ください。