1

2つのJavaバージョンは大幅に異なることに気付きましたが、私が作成しようとしているライブラリは、標準のHTTP/TCPネットワークとデータコレクションを使用してそのタスクを実行します。これらは、スコープは異なりますが、両方のプラットフォームが提供する2つの機能です。最小公分母で動作するライブラリを作成できると思いますが、少なくともジェネリックスとより広範なデータ収集の利点を活用するJavaSEバージョンがあれば理想的です。

ビルドスクリプトを使用してJavaプラットフォームごとに個別のライブラリを作成し、ライブラリの2つのバージョン間で可能な限り多くのコードを共有するコードベースを維持できることを望んでいます。APIは明らかにわずかに異なりますが、ライブラリのコアビジネスロジックを共有できれば、時間と労力を節約できます。

この目標を達成するために利用できるビルドスクリプト/前処理/その他の手法はありますか?これはもっと面倒で、それだけの価値がありますか?

4

2 に答える 2

2

これはもっと面倒で、それだけの価値がありますか?

おそらくそうだ。

Javaの世界では、前処理は一般的に嫌われています。プリプロセッサは存在しますが、IDEやビルドツールなどでは十分にサポートされていないことに気付く傾向があります。

このような場合は、次のアプローチをお勧めします。

  1. 実際に必要なコードのSEバージョンとMEバージョンの実際の違いを把握します。長期的なメンテナンスの観点からは、おそらくまったく違いはありません。

  2. 最小公分母のアプローチでは対処できないことがある場合は、それらを除外して、プラットフォームの違いを隠す内部APIを設計/実装します。手で。

また、SEからMEへの有用なライブラリの移植などを検討してください。たとえば、完全なコレクションスタックが本当に必要な場合は、SEコレクションフレームワークのMEへのポートを見つけることができるかどうかを確認してください。(しかし、これの欠点は、MEのコード膨張である可能性があります...そしてそれはあなたを人気にすることはありません。)

于 2011-02-22T02:19:58.020 に答える
0

JavaMEの意味を定義する必要があります。JavaMEプラットフォームは、構成とプロファイルで構成されており、これらを組み合わせてライブラリサポートを形成します。たとえば、Connected Device Configuration(CDC)の上にあるJavaME Personal Profile 1.1は、縮小されたJavaSE4です。JavaSE4とJavaMEPP 1.1の両方で変更なしで実行される大規模なクライアントアプリケーションがありますが、忘れなければなりませんでした。SEでは利用できるがPP1.1では利用できないAPIはごくわずかです。

大きな問題は、必要な機能が両方のJVMで使用できるかどうかです。

最近、Androidで同じクライアントを実行することを検討していますが、これも同様の考慮事項です。関数が両方に存在する場合、私の計画は、自分のAPIライブラリの違いを隠し、そのAPIを実装する両方のJVMに薄い互換性レイヤーを実装することです。

サードパーティの移植されたライブラリを含める場合、ProGuardのようなものを使用すると、未使用のコードを排除してコードの膨張を最小限に抑えることができます。

于 2011-02-22T19:57:16.493 に答える