5

誰かが私を撃ち落とす前に、私は Java からバイナリへのコンパイラーを認識しており、それらの 1 つを求めていません。

また、すべてを問題なく変換できる完璧なツールがないこともわかっています。Java ライブラリの欠落が大きな問題であることは承知しています。ただし、私のソースでは、String や print などを除いて、多くの Java ライブラリを使用していません。Java ソースが参照するクラスを作成するためのツールのみが必要です。文字列の場合は、ギャップを埋めたり、後の段階で修正したりできます。手動で翻訳を行う必要がないように、ツールに退屈な部分を実行してもらいたいだけです。

必要なクラスなどの場合は、後の段階で手動で修正しますが、少なくとも退屈な作業を十分に行うためのポインタをいただければ幸いです。

繰り返しますが、バイナリを生成するコンパイラではなく、ソースを翻訳したいと考えています。基本的には、Java のものをいくつか取り、それを C++ に変換して、後で他のプロジェクトで使用したいと考えています。

追加のメモを編集

この質問の前の部分で明確でなかったら申し訳ありません。Java が C++ と大きく異なることは知っています。ほとんどが配列とビットの処理で満たされ、オブジェクトの作成がほとんどない Java コードがあります。ある意味で、これは非常に自己完結型であり、他のクラスへの呼び出しはほとんどありません。これらのクラスは、変換の最有力候補のようです。他のものは書き直す必要がありますが、少なくともいくつかの部分は活用されています。

4

1 に答える 1

13

j2cはその 1 つです。Java ソース コードを大まかな C++ 相当物に変換します。

明らかに、他の人が言及した多くの警告があります (ガベージ コレクション、同期など) が、それは良い出発点を提供します (そして、それはオープン ソースなので、その点を簡単に改善できます =)。

コード ベースのサイズによっては、独自のコードを作成することも理にかなっている場合があります。Java 構文はほとんどが C++ のサブセットであり、Java AST を使用する場合は、Java AST を作成するのはそれほど難しくありません。 Java コードを解析する多くのライブラリ (たとえば、j2c は Eclipse に付属するものを使用します)。手動で変換を行うと、そのためのツールを作成するよりもはるかにエラーが発生しやすくなります。

于 2012-04-15T05:07:45.910 に答える