クロスプラットフォームライブラリを作成するにはどの言語を使用すればよいですか?[閉まっている]


10

SyncML解析ライブラリ(UIなし)を構築します。これは、ライブラリのメソッドによって供給される、ホストアプリケーションによって提供される情報に基づいてメッセージを構築できる必要があります。また、ライブラリは、ホストアプリケーションのメソッドへのコールバックを実行できる必要があります。

これをコンパイルして、可能な限り多くのプラットフォーム(Windows、Windows Phone 7 OS、OSX、iOS、Linux、Android、BlackBerry)で利用できるようにしたいと考えています。基本的に、できるだけ多くのプラットフォーム。

優先事項は、これをモバイルデバイスで使用できるようにすることです。

質問:

  1. どの設定を使用する必要がありますか?(プログラミング言語、コンパイラ、IDEなど)
  2. これらの異なるプラットフォーム用にこのライブラリをコンパイルするにはどうすればよいですか、またどのように接続しますか?
  3. 他の情報はありますか?例:クロスプラットフォーム開発の主題をカバーする記事?

この種のクロスプラットフォームプロジェクトはこれまでに行ったことがないため、正しい方向に導くために利用できる情報があれば歓迎します。

私自身、C#/。NETおよびObjective-Cの経験があります。

回答:


8

Javaプラットフォーム/ JVMを使用することは明らかな選択です。これは、あらゆる言語の最も幅広いクロスプラットフォーム対応であり、C#/。Netの背景があれば、概念は非常によく知られています。

Javaプラットフォームの利点を得るためにJava言語を使用する必要がないことに注意してください。実際、最近では、プロジェクトを最初から開始する場合、次のいずれかをお勧めします。

  • Scala -JVMで優れたパフォーマンスを発揮する、静的で型付けされた強力なマルチパラダイム言語が必要な場合。C#の背景がある場合に適しています。
  • Clojure-動的言語のような関数型プログラミングを好み、最先端での生活を楽しむ場合。Clojureには、魅力的かもしれない本当に優れた同時実行機能があります。リンクされたビデオは、いくつかの深い洞察を見る価値があります。
  • Groovy -C#/ Java開発者に非常に馴染みのあるシンプルで効果的な動的オブジェクト指向スクリプト言語が必要な場合。

これらのすべての言語は、JVMを使用することのすべての利点(素晴らしいJITコンパイラ、非常に効果的なガベージコレクション、膨大なライブラリセット)を利用できますが、作業するのにはるかに生産的な言語です。

ちなみに、JavaではFunambolと呼ばれるオープンソースのSyncMLライブラリがすでに存在します。これが直接あなたに役立つ範囲がわからないが、それは通常、ほとんど何でもオープンソースのJavaライブラリが存在するという事実の例です。

他のオプションについての考え:

  • C / C ++は確かにクロスプラットフォームで機能しますが、プラットフォームごとにネイティブコードに再コンパイル(およびその後のテスト)する必要があります。コンパイルされたバイトコード自体は移植可能であるため、JVM言語では必要ありません。パフォーマンスや生のハードウェア機能へのアクセスのためにC / C ++が絶対に必要でない限り、それは避けるべき頭痛の種だと思います。
  • Monoの形式のC#は機能します(たとえば、クロスプラットフォームライブラリとしてのUnityの成功を目撃します)が、成熟度、ライブラリの可用性、または生のパフォーマンスの点でさえ、JVMエコシステムはどこにもありません。また、.Netには移植性の悪夢であるウィンドウ固有の機能があるため、Microsoft .Netと100%互換になることは決してありません。それでも、C#を使い続けるかどうかを検討する価値はあります。
  • クライアント側とサーバー側の両方でライブラリを使用することに関心がある場合、JavaScriptは外部オプションになる可能性があります。

1
すばらしい答えをありがとう。ライブラリやフレームワークの形でJavaをiPhoneにどれだけうまく移植できるか知っていますか?また、Funambolは使えません、自分でライブラリを作るのがポイントです。
Andrei

2
現在、AppleがiPhone上のJavaについてかなり制限していることを理解しています。市場の圧力により、今後さらに発生することが予想されます。たとえば、この記事theserverside.com/discussions/thread.tss?thread_id=63072は、iPod TouchでのJavaベースのアプリのデモを例にしたOracleの話です。
mikera

Java自体を使用する必要がないことを教育するための+1ですが、Scala、Clojure、Groovyを使用できます。魅力的な答え。
アンソニー

3

Javaを試してみたいかもしれません-Javaランタイム環境(仮想マシン)はクロスプラットフォームです。JavaはAndroid(またはJava ME)を搭載したモバイルデバイスで使用でき、.NETはそれに非常に似ています。


3

これは1つの選択肢ではなく、多くの選択肢です。どこにでも行くものを見つけたくなりますが、それが常に最良の方法であるとは限りません。

  1. たとえば、WindowsモバイルプラットフォームでC ++コードを圧縮することは可能ですが、サポートの観点から見ると、.NETの方が対応するものよりも常に簡単です。

  2. 同様に、それをネイティブにするかランタイムで実行するかにかかわらず、主要な選択を行う必要があり、厳密にWebセントリックまたはより一般的な強力なものに制限されていますか?たとえば、Adobeランタイムはより偏在的ですが、コアプログラミング言語と比較して実行できることが制限されます。

  3. 私が推測する最も重要なことは、作成するGUIのタイプとレベルです。

今最も有望な選択肢に来ています。

a。Symbian、Blackberry、Android、BREW、Bada(samsung)の場合、Java / J2MEが最も一般的な方法です。ただし、一部のプラットフォームのネイティブコアのものについては、多くの場合C / C ++の方が優れている場合があります。

b。サポートされている言語のWindows .NETの場合は問題ありません。

c。iOSの場合-目的C以外に選択肢はありません。これはあまりC ++ではないため、目的として数えません

これは、すべてのオプションとそれらが適用される場所を示すすべてのプラットフォームのセットを示すwikiリファレンスです。

あなたの質問のおかげで、私は上記のwikiリンクから、上記の問題を解決しようとするSDKがあることを知りました。最も近い2つは次のとおりです。

  1. マーマレード:http : //www.madewithmarmalade.com/marmalade/supported-platforms これは興味深いことに、ほぼすべてのプラットフォームをサポートしています。Windowsは、完全な円を作るために追加されるところです。

  2. 粒子コード:http : //www.particlecode.com/

まだ使っていませんが、面白そうですね。


AndroidはBadaを提供し、iOSはC ++を許可します。
Klaim、

3

.NETは多くのプラットフォームでほとんど利用できず、Objective-Cはさらに悪く、さらに.NETは少し遅く、ObjCは基本的にApple以外のサポートを提供していません。言語としてのCは、何らかの外部要因によって使用されない限り、基本的に検討する価値すらない。

結果として実行可能な唯一の言語はC ++です。


2
MonoプロジェクトをC#と組み合わせて使用​​することの利点について何か知っていますか?Cが検討に値しないのはなぜですか?
Andrei、

2
@Andrei:私が知る限り、Monoは、あなたが挙げたすべてのプラットフォームでの可用性を示すものではありません。CはC ++と同じなので、検討する価値はありませんが、優れた機能をすべて備えているため、C ++を使用できる場合は明らかに愚かです。
DeadMG

4
@DeadMG:Linus Torvaldsとその点について議論するのが大好きです:thread.gmane.org/gmane.comp.version-control.git/57643/…-彼が100%正しくなければならないというのではなく、私はフレームウォーを見るのが好きです。
Michael Borgwardt

2
@DeadMG Cは優れた機能を備えたC ++ではありません。C ++は恐ろしい機能が追加されたCです。C.と何も間違ってはあります
rightfold

2
@WTP:彼は私の人生の話ではなく、推薦を求めました。単純な事実は、C ++の追加機能について何を考えても、それらが存在し、C ++のみのコードにアクセスできるようになるという事実です。これはおまけです。CはC ++にはないものではありません。その逆は当てはまりません。C ++ over Cを使用する場合は選択肢を追加するだけです。したがって、定義上、C ++は優れた言語であり、C ++機能を使用しないことを常に選択できます。どちらが狂気になるでしょうが、できます。
DeadMG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.