3

タイトルの状態のように - Android 用の 3D OpenGL ES 2.0 エンジンを書きたいです (ゲームの作成には興味がなく、エンジンだけです)。NDK に直接移行してすべてを C++ で作成するか、最初に Java に移行する必要がありますか?

Android のパフォーマンスに関するほとんどのリンクは、JIT とコンカレント ガベージ コレクターが登場する前の 2010 年のものです。Java のパフォーマンスは依然として悪いのでしょうか (パブリック フィールドを使用しない、仮想メソッドを使用しないでください)、C++ を使用するとどのようなスピードアップが期待できますか?

ちなみに、私は両方の言語に慣れているので、快適さの問題はありません。

4

1 に答える 1

2

Android の設計方法と動作方法によると、Java/SDK 専用のシングル スレッドが 1 つと、NDK/C++ アプリケーション専用のシングル スレッドが 1 つあります。SDK と NDK の両方は、サンドボックスで実行されるアプリケーションのみを生成できます。 NDK で作成されたアプリケーションを「ネイティブ」と定義するのは正しくありません。これは、商用および公式の Android ツールキットを使用してネイティブにすることは決してできないためです。どちらのソリューションも Android 仮想マシンの使用につながります。

結果として、それらは開発者にほぼ同じトレードオフを提供します。どちらのソリューションにも権限が必要であり、両方のソリューションが最終的に apk にパックされます。多くの人が Java ではなく C++ を選択する主な理由は、C++ エンジンを簡単に移植できるからです。他のプラットフォームでは、Java で同じことはできません。

クロスプラットフォーム ソリューションが必要な場合は C++ を使用し、クロス プラットフォーム ソリューションが必要ない場合は Java を使用することをお勧めします。 「ビルドとコンパイル」の部分。

于 2013-04-02T15:04:45.513 に答える