0

ブラウザーで実行できるよりも、非常に単純な IO (ステートメントを印刷するだけ) でコンピューター シミュレーションを実行できるように調整したいと考えています。私はJavaでプログラミングできますが、Javascriptについてはほとんど知りません。純粋なJavaの分離されたチャンクをきれいにラップできるように、HTML / Javascriptを配置することが可能かもしれないと感じています(それ自体のファイル、またはおそらくより大きなファイル内のいずれか)。でマークされた領域を持つファイル...

** ここで Java を起動 **

** ここで Java を終了 **

...Java しか知らない人でも、そこに Java プログラムを書き込んでブラウザで表示できるように - IO が単純な print ステートメントに制限されている限り。

これは可能ですか?すでに行われていますか?

編集:もう少し背景... 私は現実世界の現象のコンピューター シミュレーションを書きました。学者は、javascript よりも java を知っている可能性が高いので、javascript のすべてを非表示にして、ユーザーに Java のみを表示させたいと考えています。

4

1 に答える 1

1

純粋なJavaの分離されたチャンクをきちんとラップできるように、いくつかのhtml/javascriptを配置することが可能かもしれません

いいえ、Java は Javascript に対して、自動車はカーペットに対するものです。ブラウザーが Javascript をどれだけサポートしていても、ブラウザーに Java ランタイムが含まれているとは限りません。そうかもしれませんが、Java がサポートされる可能性は、Flash がサポートされるのとほぼ同じです (Flash が勝つ)。ただのプラグインです。

Java コンパイラインタープリタ全体を javascript でラップ (javascript にコンパイル) しない限り、これを完全にクライアント側で行うことはできません。それでも、それはかなり遅いでしょう。できること:

オプション1:

  1. ユーザーに Java コードのチャンクを書かせる
  2. チャンクをサーバーに送信する
  3. Java コードの束を追加して、ファイルに保存します。つまり、インクルード、クラス ヘッダー、メソッド ヘッダー、2 つの右中括弧
  4. サーバーで Java コンパイラを呼び出します。これには、JDK をサーバーにインストールする必要があります。
  5. クラスがコンパイルされたら、これを jar ファイルにパックして、他の静的クラスとマニフェスト ファイルをまとめます。
  6. この JAR ファイルの URL でクライアントに応答します。
  7. クライアントは、この JAR を参照する新しいappletまたはobjectタグを作成し、サーバーはそれをクライアントにフィードします。
  8. ユーザーのマシンに JRE があり、Java プラグインアプレット自体の実行を許可していれば、作業は完了です。

これは最も簡単な方法ですが、最適とは言えません (特に、クライアントが確認しなければならないすべてのセキュリティ警告がある場合)。代わりにこれを行うことができます:

オプション 2:

  • 完全に静的なアプレットをクライアントにフィードする
  • コンパイルされたクラスにさらにいくつかのクラスをパックしないでください
  • 実行時に新しいアプレット要素を作成する代わりに、URL を既存のアプレットに渡します。
  • 次に、アプレットはコンパイルされたクラスのみをロードし、新しい実装でシミュレーションを再開します。

また:

  • jar は大量のスペースを占有する可能性があるため (特にクラスロードしない場合)、アップロードされたソース コードが目に見えて保存されない場合は、提供時に jar を自動的に削除することもできます。

オプション 3:

Java を Javascript にコンパイルできますが、Java の非常に限られたサブセットのみがサポートされます。

そのようなコンパイラの 1 つは、 Google Web Toolkitの不可欠な部分であり、Java から Web サイト全体を作成するように設計されています。ユーザーは自分のマシンに Java ランタイム環境を用意する必要はありませんが、Javascript に効率的にコンパイルできる Java のサブセットに制限する必要があります (私の記憶が正しければ、java.util の半分をスクラッチする必要があります)。 .


結論: ユーザーに Java を書かせてから結果を観察させることはできますが、Java コンパイルの面倒な作業はサーバーが行う必要があります。ユーザーが Java プラグインを持っていない場合、Java コードを記述して実行することは期待できません。また、クラスローディングや Javasript -> アプレット通信など、Java でコーディングする方法をよく理解しています。

于 2013-05-25T12:05:25.857 に答える