2011-09-06 13 views
6

私はOpenMRSをAndroidのバックエンドとして使用して医療記録システムを開発しています。 OpenMRSは、HibernateやSpringを含む重大なライブラリに依存しています。AndroidへのJavaサーバーの移植

「徳興市」全体OpenMRSアプリケーションが(このサイズ制限は、すでに十分に文書である)にもAndroidのclasses.dexのファイル形式の大きすぎるファイルを生成します。これを回避するために、私は現在、依存関係から複数のdexファイルを作成し、Androidのdexクラスローダーを使用してランタイム中にそれらをロードすることに取り組んでいます。

ため、サーバーのモバイル版が、実際に使用される方法で、実際の処理の需要は巨大な依存関係にもかかわらず、非常に低くなります。私はここで私の電話でエンタープライズサーバーを実行しようとはしていない。

私はこれを設計しようとしている私の時間でより多くの週間過ごす前に、私は開発者コミュニティをお願いしたかった:この戦略は単なるパイプの夢ですか?これらのライブラリをすべて読み込むと、バイナリ全体がRAMにロードされ、システムが破壊されますか?そのようなアプリケーションを最適化する良い方法はありますか?私はここで欠けているいくつかの明白な問題や解決策はありますか?

+3

、私は、Android上で動作しているHibernateと春を持つの夢は非現実的だと思います。これらすべての依存関係に十分なRAMがあるという単純な問題は、あなたのトラックであなたを止めさせます。 – Prime

+1

あなたはhttp://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.htmlを見ましたか?ここの難しい部分は、さまざまなdexファイルが、追加のコードや前処理なしで互いに呼び出すことができないように思われます。 (あなたが必要とすることをするのに十分なメモリがあると仮定して) –

+4

これは間違いなく "クライアント/サーバ"のために叫ぶ。このアプリの重要な問題の1つは、プライバシー(HPIAA規制など)を保証することです。 – paulsm4

答えて

1

短い答えは:できません。

長い答えは、ほとんどのデバイスはまだのみ、各ヒープにメモリの(RAMの40から128メガバイトの間)、比較的少量を割り当てることです。ロジックの大部分、ひいてはライブラリーや重量のあるコードがまだサーバー上に存在するようにアプリケーションを構築することを考える必要があります。モバイルアプリは軽量データ(JSON?)をサーバーから読み込んで表示しています。デバイスは、実際にはロケーションデータなどのネイティブアイテムのみを利用し、残りのAndroidユニバースと一致するユーザーインターフェイスを提供する必要があります。それを超えて、できるだけ多くのロジックをネイティブアプリから守る方法を探しているべきです。より安全なものを保つ以外の理由がない場合。 Androidアプリケーションのリバースエンジニアリングはです。です。サーバー側を長く保つほど、より安全になります。一見

+0

ありがとうマット、私はコメントをフォローアップした後、同様の結論に至りました。私が思っていたよりも元のソースの記録をもっとしなければならないように見えます。実際に自分のコンピュータに搭載されているRAMを記録したので、1GB未満のものは動作しないことに気付きました!しかし残念ながら、最終的には、インターネットアクセスのない貧困地域に送信するため、そのサーバー全体をタブレット上で実行することが目標です。私はこれが本当のエンジニアリングを必要とするだろうと思う。一口。 – Nick

関連する問題