1

理論的には、これは私には可能だと思われます。それで、可能であれば、誰かが私にこれを確認できますか?そして、これを行うようなソフトウェアがある場合は?(JavaからC ++またはC#など)

そして、一般的に、Javaのような言語をPHPのようなサーバー側のプログラミング言語に転送することは可能でしょうか?

4

6 に答える 6

6

ある言語の構文要素を翻訳して別の言語を作成することは簡単ではありませんが、不可能ではありません。優れたパーサーは、ある言語で構文ツリーを構築してから、別の言語を出力できます。単純な「HelloWorld」タイプのアプリケーションのコンテキスト外にコードを移植することの難しさは2つあります。

  1. 1つの言語のライブラリはおそらく異なります(例:WinFormsとSwing)
  2. 一部の言語機能には対応する必要があります:(ラムダ式、無名メソッド、さまざまな継承実装など)。
于 2009-07-28T20:48:04.870 に答える
5

可能ですが、大きな問題は、Javaに非常に大きなランタイムライブラリがあり、完全に自動変換できるようにするには、ターゲット言語で利用できるようにする必要があることです。

Java-> .NETの特殊なケースでは、MicrosoftのJ#を使用して、それを.NETアセンブリにコンパイルして使用できます。また、ikvm.netでは、.NET内でJVMを実行できます。

PHPの場合、そのような解決策は存在しないと思います。gcjを使用して、リンクできるネイティブライブラリを作成できる場合がありますが、それが実現可能な魂であるとは思いません。

PHPにはどのような機能が必要ですか?

于 2009-07-28T20:47:58.817 に答える
5

Visual StudioにはJavaからC#へのトランスレーターが付属しており、かなりまともな仕事をするのは難しいですが、後でクリーンアップすることがまだたくさんあります。

私の経験では、コードをある言語から別の言語に翻訳することが理にかなっているのかどうかを自問する必要があります。ゲインは何ですか?翻訳されたコードは保守可能ですか?これらの質問に対する答えが間違った方向を示している場合、翻訳はおそらく正しいアプローチではありません。

于 2009-07-28T20:49:35.787 に答える
2

Google Web Toolkit は、Java から JavaScript への変換を行います。

http://code.google.com/webtoolkit/overview.html

于 2009-07-28T21:00:39.353 に答える
1

理論上は可能です。しかし、他の人が指摘したように、主な問題はライブラリを翻訳することです。

しばらく前に、Java から Tcl(XOTcl) および Java から Python へのトランスレーターを作成して、翻訳の可能性を評価しました。java2tclおよびyava2pythonで検索します。

これらは構文を変換しますが、関連する構造の変換は行いません (たとえば、Java ファイル操作から Python ファイル操作へ)。それには、より多くの開発時間が必要になります。

一般的に、私の意見は、そのような翻訳が可能であるということです。ただし、翻訳者が変換されたプロジェクトのクラス/ライブラリをカバーしている場合のみ。

于 2009-08-03T08:58:56.313 に答える
1

あなたの質問に答えるために、うん、理論的にはこれは実際に可能であり、実際にはそのような技術は毎日使用されています:)

私の意見では、興味深いのは、Java コンバーターは通常、ソース コードではなくバイトコードを取得して変換することです。次に、たとえば、バイトコードから ObjectiveC へのソース コードです。一部のコンバーター (少なくとも 1 つのオープンソース コンバーター) では、バイトコードから XML へ、次に XML からターゲット言語へと変換されます。

たとえば、Java (JME) で記述され、Java バイトコードから自動的に変換されるため、appStore のトップ 10 にランクインするなど、多くの人から高い評価を得ている iPhone 用の Uniwar アプリケーションです。たとえ数日であっても、トップ 10 に到達するということは、これが多くのマシンに展開されていることを意味します ;)

実世界 [TM] では、Cobol-Java と、奇妙なことに、Java-Cobol は前代未聞ではありません。

これらすべてが機能するには、本当に優れたコンバーターが必要であると言われています:)

于 2009-07-28T21:46:27.730 に答える