7

Blackberry の開発に使用する既存の j2se ライブラリ (Apache Compression ライブラリなど) を移植したいのですが、問題があります (1 つだけではありません)。

まず、ほとんどの Java ライブラリは、j2me プラットフォームでは一般的に欠落している j2se コレクションとデータ型を広く使用していますが、Apache Harmony などのオープンソースの j2se API 実装のおかげで、理論的には解決可能です。より大きな問題は、Blackberry JDK が Java 1.4 に基づいているように思われるため、ジェネリックやその他の 1.5 機能 (Enum など) を使用するコードは、Blackberry で簡単にコンパイルできないことです。

これは、j2me-bastardized バイトコードをサポートしながら、自動 1.5->1.4 変換を行う既存のツールまたはプロジェクトが存在するかどうかという興味深い問題を提起します:)

私が見つけた 1 つのプロジェクトはRetroweaverですが、そのプロジェクトがどれほど活発であるかはよくわかりません。

1.5 から 1.4 への自動変換の問題は固有のものではないと確信しています。

4

5 に答える 5

7

Retrotranslatorを試しましたか? Retroweaver よりも優れた機能を備えていると読みました。

于 2009-06-05T22:40:37.557 に答える
2

私は過去に Retroweaver (J2ME ではなく J2SE) を使用したことがあり、非常にうまく機能しました。それを使用するコストは、いくつかの追加のランタイム依存関係です。

更新 2013-01-28 : RetroWeaver で問題が発生した後、 RetroTranslator に切り替えまし

于 2009-06-05T22:12:30.517 に答える
2

スタックオーバーフローでここで見つけた他のものは次のとおりです。

通常の javac でコンパイルし、古い JVM をターゲットにすると、少なくともジェネリックの適切なバイトコードが得られます

これは試してみるのが絶対に理にかなっています。

于 2009-06-05T22:50:31.687 に答える
1

これが私がこれまでにやったことです: Declawer + 列挙型クラス生成のためのカスタムコード。

Declawer の 1 つの差別化要因は、非常に単純で、率直に言って、少しハック (JavaC の文書化されていない機能に依存している) ですが、その出力は、拡張または変換された Java バイトコードと比較して、実際の Java コードであるということです。率直に言って、バイトコードの変更/インストルメンテーションは、j2se の場合ほど j2me プラットフォーム用に開発されているわけではありません。これらのツールはかなりの数の開発者によってすでに使用されている j2se で行われます。

Declawer の機能は限られているため (1.5 列挙型やオートボクシングは好きではありません)、Python スクリプトを追加して、単純な記述子から 1.5 列挙型と同等の機能を持つクラスを自動的に生成する必要がありました。この生成はビルド時に行われます。

これは、私のアプリに使用する j2me に適した優れた IoC コンテナーを見つけることを除いて、これまでのところ私の懸念に対処しています (一度これらの人を試してみると、あきらめるのはとても難しいです)。

しかし、それは別のスレッドの議論です。

于 2009-06-22T22:09:47.507 に答える
0

ここに私が見つけたさらに2つのツールがあります(Retrotranslatorのページからリンクされています):

于 2009-06-05T23:22:00.923 に答える