
iOSとAndroidで同時に動作するアプリケーションの開発は、高速でも安価でもありません。 最近まで、最も人気のある2つのモバイルプラットフォーム用のアプリケーションを一度にリリースする場合、難しい選択に直面していました。 一方では、たとえばCordovaなどのクロスプラットフォームツールを使用できます。その結果、かなり高品質で比較的安価なアプリケーションが得られますが、同時に非常に限られたUI / UXになります。

一方、次の2つのネイティブアプリケーションを開発する機会がありました。

どちらのアプローチにも長所と短所があります。 しかし、深刻なリソースを持つ大企業であっても、この選択は容易ではありませんでした。 しかし、状況は変化しています。 開発者は、 IntelのMulti-OS Engine (MOE)を試すことができます。これは、個別のネイティブAndroidおよびiOSアプリケーションを作成するために必要な開発時間を大幅に短縮するように特別に設計されています。

ご存知かもしれませんが、 Intel INDEはネイティブモバイルアプリケーションを作成するためのクロスプラットフォームツールキットです。 INDEは、多数のSDK、ライブラリ、コンパイラ、デバッガ、パフォーマンス分析ユーティリティで構成されており、すべてが完全なソフトウェア開発サイクルに必要です。 また、Multi-OSエンジンは、「ケーキ」のINDEで本物の「チェリー」と安全に呼ぶことができます。
なぜネイティブであることがとても重要なのですか?
現代のモバイルアプリケーションのユーザーは非常に洗練されており、あらゆるプラットフォームの店舗には膨大な数のアナログがあふれています。 それらの中で目立つ方法は? 2つの類似したアプリケーションのうち、私自身は、システム全体と本当に一貫した外観と操作性を備えたアプリケーションを選択します。 ネイティブアプリケーションの開発には時間がかかりますが、ネイティブの「ルックアンドフィール」はエンドユーザーが注意を払うものです。つまり、節約することはできません。 いくつかの理由から、ネイティブアプリケーションにはこの分野で大きな利点があります。
- 特定のプラットフォームのUIコンポーネント(アプリケーションナビゲーションスタック、日付と時刻のダイアログ、マップなど)への直接アクセス。 間違いなく、これらすべてのコンポーネントを自分で再作成できますが、再実装はネイティブほどネイティブとは感じられません。 このような自家製のコンポーネントは、プラットフォームの変更に伴う自動更新も受け取りません。
- UIのレンダリングに関連するオーバーヘッドの不足。
- ネイティブマルチスレッド。 Webベースのフレームワークでは、ネイティブコードで可能なため、アプリケーションを並列化できません。
なぜJavaなのか?
この質問に答えるには、次のチャートを参照するだけで十分です。

リポジトリに格納されているコードの量に基づくGitHub言語評価は、FacebookでReact Nativeのクロスプラットフォーム開発言語としてJavascriptが選択され、IntelがMulti-OS Engineに Javaを選択した理由を明確に説明しています。
技術的な詳細
Multi-OS Engineは、Android Studioのプラグインとして提供されます。 これを使用して、新しいMOEプロジェクトを作成したり、既存のプロジェクトにMOEモジュールを追加したりできます。 したがって、iOS用のネイティブアプリケーションを作成するためにObjective-Cを知る必要はありません。 同時に、Androidの開発は変更されません。 しかし、プラットフォームに依存しないすべてのコードを再利用する絶好の機会があります。 MOEは100%のコードの再利用を提供しませんが、適切なアーキテクチャでは、この値は60%に達する可能性があります。

Multi-OS EngineがiOSでJavaサポートを提供する方法は次のとおりです。
- ObjectiveCおよびCヘッダーファイルのバインディングを自動的に生成します
- 特別なJavaアノテーションを使用します
- NatJライブラリを使用してJavaをネイティブコードに関連付けます
- JNI呼び出しの必要性を排除
- iOS APIを完全にカバー
これにより、すぐにJavaでiOSアプリケーションの作成を開始できます。

Java iOSアプリケーション開発プロセス

- Android StudioでマルチOSエンジンプロジェクトを作成する
- Macを使用している場合は、新しい「Intel MOE iOSアプリケーション」実行/デバッグ構成を追加して、ローカルマシンでビルドします。 「Intel MOE Remote Build」構成は、クラウドでのアセンブリ用にWindowsホストで使用できます。
- Xcodeで直接UIを作成するか、ビルトインAndroid Studioの特別なMOE UIデザイナーを使用できます。
- アノテーションとNatJライブラリを使用して、UIをJavaに関連付けます。
- iOS SDKで簡単に作業できるようにコード補完を使用します。
- iOSアプリケーションは、シミュレーターとデバイスでAndroid Studioから直接実行できます。
- Android Studioでアプリケーションをデバッグします。
Multi-OS Engineを試すには、 特別なフォームを使用して自分自身について少し説明してください。 これにより、MOEをさらに改善できます。 しかし、待つことができない場合は、すぐにダウンロードページにアクセスできます。 今すぐMOEが欲しいです! 同じページに、詳細なユーザーマニュアルがあります。
PS
Multi-OS Engineの開発チームは、ほぼ完全にロシア(ニジニノヴゴロドとモスクワ)にあります。 個人的に尋ねたい質問がある場合は、9月26日にモスクワで開催されるDroidconカンファレンスに参加する絶好の機会です。