J2SE、J2ME、Android などのさまざまな Java プラットフォームで実行されるアプリケーションをコーディングしようとしています。プラットフォームごとにほとんどの UI を書き直す必要があることは既にわかっていますが、コア ロジックを再利用したいと考えています。
このコアの移植性を維持するには、私が知っている 3 つの欠点があります。
- 古いJava 1.4 構文を維持し、Java 5.0 の優れた言語機能を使用しない
- これらのプラットフォームで動作することがわかっている外部ライブラリのみを使用する (つまり、JNI を使用せず、この規則に違反する他のライブラリに依存しない)
- これらすべてのプラットフォームに存在するクラスのみを使用する
(1)を克服する方法を知っています:5.0スタイルのコードを自動的に1.4に変換します(レトロウィーバー-まだ試していませんが、問題ないようです)。
(2)は受け入れるしかない問題だと思います。
今、私は(3)、特に私が最も見逃しているコレクションクラスの最善の回避策を知りたいです。私はそれらを考えることができます:
- 私が知っているほとんどのプログラマーは、、、などを使用せず、
Set
プレーンな配列にフォールバックします。これはそもそもコードを醜くすると思います。しかし、私はまた、orの間の正しい選択がパフォーマンスにとって非常に重要であり、常にand 配列を使用することは正しくないことも知っています。Map
List
Vector
TreeSet/Hashset
LinkedList/ArrayList
Vector
- そのクラスの独自の実装をコーディングできました。これは車輪の再発明のようであり、他の人が行ったほどうまくできなかったと思います.
- Java はオープン ソースであるため、J2SE Collections フレームワークのソースコードを入手して、J2ME 用にビルドするときにアプリケーションに組み込むことができました。しかし、これが良いアイデアかどうかはわかりません。おそらく、これを行わない正当な理由があります。
- おそらく、コレクション フレームワークの最も重要な機能を再構築するライブラリが既に存在する可能性がありますが、使用頻度の低い機能を実装しないことにより、ロー エンド システム向けに最適化されています。何でも知ってますか?
あなたの答えと意見をありがとう!
編集:私はついに(複雑だが素晴らしい)解決策を見つけました。私は自分の答えを提供してそれを受け入れることで、解決策が一番上に見えるようになると思いました。しかし逆に言えば、私の答えはまだどん底にある。