私はiPhoneとBlackberry(Java)用に構築しているアプリケーションと共有したい機能(クラス)を持っています。誰もこれを行う上でベストプラクティスを持っていますか?iPhoneとBlackBerryの共有ライブラリ
答えて
iPhoneやJavaのバイナリフォーマットは互換性がありません。また、ブラックベリーデバイスのネイティブライブラリであっても、あなたの質問は理解できます。
これは、iPhoneをJavaを使用することができるOS X用の建物とは異なり、iPhoneはJavaをサポートしていません。
Objective-Cでライブラリをビルドし、それをJavaに移植するのは、他の方法よりも簡単な移行です。 Objective-Cをプログラムし、コードにメモリリークがないことを確認した場合、変更はそれほど複雑ではありません。
あなたは、あなたがはるかに簡単なメンテナンスを見つける必要がありますあなたのクラスの構造を同じに保つ場合 - Javaでのバグを修正し、あなたはそれが簡単になどにObjC方法
で同じバグを確認するために見つける必要がありますこれがすべての良いニュースではないことをご納得ください。
Grouchalが述べたように、2つのプラットフォーム間でアプリケーションの物理コンポーネントを共有することはできません。ただし、アプリケーションを慎重に分離したレイヤーに分離すると、アプリケーションの論理設計を共有できるはずです。これはまだ論理的なアプリケーション設計があなたの開発努力の大部分を占めているので、大きな勝利です。
独自のインターフェイスで使用するプラットフォーム固有のAPI(iPhone SDKなど)のセクションをラップすることを目指すことができます。そうすることで、プラットフォーム固有のライブラリを効果的に隠し、プラットフォームの違いに対処する際の設計やコードの管理が容易になります。
これを使用すると、コアアプリケーションコードを書くことができ、異なる言語で書かれていてもどちらのプラットフォームでも非常によく似ています。私はJavaとObjective-Cが概念的に(少なくとも私が使っているレベルで)似ており、少なくとも以下の点でパリティを達成できることを期待しています。
- ほとんど同じセット同じ責任と論理的な実装
これだけで意志を持つ
また、APIラッパーを再利用または拡張することができる場合があるため、後で両方のプラットフォームに配信する必要のあるアプリケーションを開発する場合に役立ちます。
クライアントサーバー型のアプリケーションを作成する場合は、できるだけ多くのロジックをサーバーに保存してください。デバイス上の余分なビジネスロジックの量を最小限に抑えます。デバイスをビューレイヤーとして扱うことができればするほど、あまりポーティングする必要はありません。
とは別に、すべてのプロジェクトで同じ命名規則とパッケージ構造を使用すると、特にフレームワークコードに大きな助けになります。
BlackBerryとiPhoneのUI APIと使いやすさのパラダイムが非常に異なるため、ほとんどの場合、この種のロジックをアプリケーション間で直接移植することはできません。私の意見では、最大の間違いは、1つのモバイルプラットフォーム用に設計されたユーザーエクスペリエンスを別のプラットフォームに移植しようとすることです。人々がBlackBerryとiPhoneのやりとりをする方法は非常に異なりますので、展開するモバイルプラットフォームごとにユーザーエクスペリエンスを改善する準備をしてください。
希望すると便利です。
大きな間違いがあり、ユーザーのやりとりが各プラットフォームで一貫していることを確認することは間違いありません。 できるだけ多くのコードをサーバーに置くことについてのコメントは、常にうまくいくとは限らず、接続が良好なユーザーに依存しています。私は、あなたの解決策が、あなたがウェブアプリケーションを書くのが良いかもしれないすべてのことをサーバーが保つことであると思う。あなたがローカルアプリを持っているなら、コアのことをするためにサーバを必要とし、ユーザが信号を持っていなければ、ユーザ体験は良くありません。 – Grouchal
BB10ネイティブアプリとiOSアプリの両方で動作するC++コードを記述することは可能です。 XCodeはObjectiveCPPコードとしてC++ファイルを参照する必要があります。
私は現在、このような仕事を余暇に費やしています。私はそれが本当に可能かどうかを見せたり、知ったりするのに十分なほどまだ完成していませんが、私はまだどんな道路ブロックにも走っていません。
プラットフォーム固有の機能に合わせて設計された、優れたクロスプラットフォームコードを記述するように訓練する必要があります。
私の一般的なパターンは、クロスプラットフォームの処理を行う「クラスFoo」と、プラットフォーム固有の処理を行う「クラスFooPlatform」です。 クラス "Foo"は、プラットフォーム固有のものを抽象化するクラス "FooPlatform"を呼び出すことができます。
生のクロスプラットフォームコード自体は、単独ではコンパイルできません。 別々のBB10とXCodeプロジェクトはそれぞれのIDEで作成されます。 各プロジェクトは、薄い(十数行の)「クラスFooPlatform」を実装し、生のクロスプラットフォームコードを参照します。
私は私がここに再び投稿することを示すことができる何かを得る...
RIMの公式の「iOSからBB10へのアプリケーションの移植」ページ:http://developer.blackberry.com/native/beta/documentation/porting_ios_intro.html トピックのサブトピックを読む... – swooby
これは役に立ちます。私は私のポストを少し編集しました。私はバイナリを共有する能力よりもベストプラクティスを探しています。メモリリークガイダンスは、まさに私が探している情報の種類です。 –
私はティーポットに同意します - デザインを同様にするためにできることは何でも大きな勝利になります。 – Grouchal