53

Javaソースコードファイルのセットが与えられた場合、手作りのJavaScriptで使用できる1つ以上のJavaScriptファイルにそれらをコンパイルするにはどうすればよいですか?

GWTは1つのオプションですが、これまでに見たすべての例は、豪華なWebサイトを構築することを目的としています。Javaソースを手作りのJavaScriptと一緒に使用できるJavascriptに変換するという単純なユースケースは、十分に文書化されていません

私はこのテーマについてGWTメーリングリストでスレッドを開始しましたが、これが実現可能かどうかについては意見が分かれているようです。

ある人は、 GWT-Exporterをチェックするという非常に役立つヒントを提供しました。問題は、これこれがありますが、ソースコードもドキュメントもすぐに利用できないことです。

編集:GWT-エクスポーターのソースコードはこちら

Java2Scriptも見ました。しかし、繰り返しになりますが、単純なユースケースを解決する方法の例を見つけることができませんでした。

この問題への最善のアプローチは何ですか?私が見逃しているより良いものはありますか?

4

7 に答える 7

12

GWT を使用する場合、基本的には UI 部分を Javascript に変換します (Java を作成するときに提供される UI ウィジェットを使用することを前提としています)。Javascript 内でアクセスできるのは、一部の Java ライブラリのみです。通常、GWT アプリケーションでは、Java ライブラリを多用するものはすべてサーバー側で実行され、AJAX (GWT が処理します) として Javascript に接続します。したがって、GWT は必ずしも完全なアプリケーションを Javascript に変換するとは限りません (ただし、Java ライブラリと一部の機能の使用を制限したい場合は変換できます)。

いずれにせよ、このアプローチ (Javascript 内からサーバー上で実行されている Java を呼び出す) が魅力的である場合、1 つの良いオプションはDWRです。これにより、基本的に Javascript がサーバー上で実行されている Java クラスのメソッドを直接呼び出すことができます ( Web サービスまたはその他のフロントエンドを構築するため)。あなたが尋ねたものではありません、私は知っています。

さらに関連して、 gwt-exporter の使用を示すサンプル アプリのソース コードがあるようです。

于 2009-01-13T19:47:24.587 に答える
9

それがあなたのユースケースに合っているかどうかはわかりませんが、Java API をドロップして Java から JavaScript API を使用することに同意する場合は、TypeScript の上に構築された Java から JavaScript へのトランスパイラーであるJSweetを使用できます。何百もの適切に型付けされた JavaScript API (DOM、jQuery、アンダースコア、angularjs など) にアクセスできます。JavaScript コードを生成し、従来の JavaScript および TypeScript コードと組み合わせることができます。

注: JSweet はレガシー Java コードとレガシー Java API では機能しませんが、ユース ケースではレガシー コードの再利用について言及されていませんでした

[更新] バージョン 1.1 以降、JSweet はコレクション (java.util) などの一部の Java API もサポートするようになりました。そのため、レガシー Java コードをある程度再利用することができます。また、Java API の独自のサポートを追加するのも非常に簡単です。

于 2015-12-16T09:57:26.833 に答える
4

完全に話題になっているわけではありませんが、Kotlinは 100% Java 互換の言語で、JavaScript にコンパイルできます。

IntelliJ IDEA は、Java を Kotlin に自動的に変換し、それをコンパイルして Node またはブラウザーで実行できます。

于 2016-09-03T12:31:53.370 に答える
2

一連の Java ソース コード ファイルが与えられた場合、それらを手作りの JavaScript で使用できる 1 つまたは複数の JavaScript ファイルにコンパイルするにはどうすればよいでしょうか?

組み込み Java API と Java 言語機能の両方と、JavaScript の機能との間に直接的な相関関係はありません。そのため、「コンバーター」を作成しようとしても不完全になります。基本的な例として、Java クラスには直接対応する JavaScript イディオムがありません。

不完全な変換ツールがユース ケースで機能するかどうかは、ソース コードがなければわかりません。


とはいえ、問題を解決するための私の提案は、最初にGWTの使用を試みることです。デモ プロジェクトをセットアップし、ライブラリのソースをドロップして JavaScript 側から呼び出し、GWT が .js ファイルに出力する内容を確認します。ここで他のポスターによって提案された他のツールのいくつかも、チェックする価値があります。

それが実り多いもので、あなたが道の一部を歩むことができれば、素晴らしいことです。

そこから、残りの変換を手動で行う必要があります。結局のところ、コードが実際に正しく機能することを望んでいるとすれば、手動によるレビューは間違いなく適切です。それと一緒に変換されるいくつかの単体テストも理想的です。

プロジェクトのソースがどれくらい大きいかは述べていませんが、それが小さい場合 (たとえば、1,000 行未満のコード)、手動で完全に変換することさえ非常に難しくはないはずです。それよりもはるかに大きい場合は、とにかく JavaScript コードとして実際にそれが必要かどうかを確認することをお勧めします。

于 2013-10-05T21:12:00.997 に答える