web-dev-qa-db-ja.com

J2MEからAndroid

J2MEプログラミングから来て、Android APIへの適応を容易にする類似点があります。または、Android APIはモバイルアプリのプログラミング方法J2MEとは完全に異なります。

28
maximumcode

実際、Android APIはJ2MEよりもはるかに強力です。

Android用のアプリケーションを作成する方がはるかに簡単です。

J2MEを使用すると、スイングのようなライブラリがないため、単純なフォームに制限されます(ただし、現在はLWUITというライブラリがあり、スイングのようなライブラリを最初から再作成する必要はありません)。

Androidでは、複雑なフォームを非常にすばやく作成でき、Android SDKのソフトウェアパッケージは簡単にインストールできます(J2MEではインストールする必要があります) Sunのワイヤレス開発ツールキット、またはNokia、Samsung、SonyEricssonのいずれかをインストールします...少し混乱することがあります)。

J2meからAndroid)に切り替えるときに変更しなければならなかったことは次のとおりです。

1 /フォントとグラフィックスクラスはj2meで使いやすいです。 APIはAndroidでより徹底的ですが、より複雑でもあります。

2/j2me(RecordStore)のデータベースストレージに慣れている場合は、Androidでは忘れることができます。 SQLのようなデータベースを使用する必要があるため、データモデルを再考する準備をしてください。

20

また、JavaMEからAndroidへのパスは非常に単純であることがわかりました。これが私が気づいたいくつかのことです:

  1. AndroidにはUI描画スレッドが1つあります。ビューを強制的に更新するには、ビューでpostInvalidateinvalidateを呼び出すことの違いに注意する必要があります。

  2. 実際のビット単位のグラフィック操作は非常に似ています。 drawRectdrawImageにいくつかのシムを書くことで、大量のカスタムJ2ME描画コードを移植することができました。

  3. AndroidのUIライブラリは、Java MEよりもはるかに広範で、役に立たず、はるかに複雑です。

  4. スレッドに関しては、Androidでのスレッドの安全性についてもっと注意する必要があります。 Java MEでは、ほとんどの場合、メソッドを同期させたり、変数を揮発性にしたりしないようにすることができます。 Androidではそうではありません。

全体として、AndroidのUIライブラリは重要なテストに失敗します。私はこれを「自分で転がす」テストと呼んでいます。

詳細なタスクタスク(たとえば、1つの個別のメニュー項目の背景を変更する)を完了するのに2回かかる場合よりも時間がかかる場合、UIライブラリはこのテストに失敗しますownメニューを最初から作成します。 Androidは、「自分でロール」テストに3倍または4倍失敗します。実際、このWebサイトの質問の大部分は、「どうすればAndroid UIツールキットは私の入札を行いますか?」質問。

Androidは素晴らしいプラットフォームであり、私がそれに没頭したすべてのイライラする瞬間の価値があります。ただし、これは若いプラットフォームであり、今後いくつかの深刻な作業が必要になります。

12
haseman

Androidアーキテクチャのビデオを見て、いくつかのドキュメントを見るのが良いスタートです。

http://www.youtube.com/view_play_list?p=586D322B5E2764CFhttp://code.google.com/Android/what-is-Android.html

Googleは文書化に非常に優れています。私が聞いたところによるとAndroid目標はJ2MEと非常に似ています。プログラミングのスタイルと構造が少し異なる場合がありますが、J2MEの経験がある場合は、先に進む準備ができているはずです。 Androidに。

幸運を!!!

7
peregrine

まあ、あなたは実際に適応する必要はないかもしれません。

Androidはサードパーティのランタイムを制限することは想定されていないため、J2MEスタックがAndroidで利用可能になる可能性は十分にあります。 iPhone。

私はまさにそれに取り組んでいる一人の男を知っています: http://justanapplication.wordpress.com/

もちろん、これは、Android APIとアプリケーションのライフサイクルを確認する必要がないという意味ではありません。

0
michael aubert