問題タブ [runtime-compilation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# ランタイム コンパイルはどこで使用しますか?
最近、別のサイトで C# ランタイム コンパイルに関する簡単な議論を見つけましたが、他の何かを検索していて、そのアイデアは興味深いと思いました。これを使ったことがありますか?これをいつどのように使用するか、およびどのような問題を解決するかを判断しようとしています。あなたがそれをどのように使用したか、またはどのような文脈でそれが理にかなっているのかを聞くことに非常に興味があります.
どうもありがとう。
code-generation - CodeDOMおよび.Netモジュール
CodeDOMによって生成されたアセンブリに.Netモジュールをプログラムで埋め込むにはどうすればよいですか?
java - Java 5 および Java 6 用のオンザフライのインメモリ Java コード コンパイル
Java 5 および Java 6 で (メモリ内の) 任意の文字列から Java コードをコンパイルし、それをロードして、(事前定義された) 特定のメソッドを実行するにはどうすればよいですか?
これを炎上させる前に、既存の実装を調べました。
- ほとんどは Java 6 Compiler API に依存しています。
- そうでないものは、トリックに依存します。
- はい、commons-jci を確認しました。それがどのように機能するかを理解するには密度が高すぎるか、単に理解していないかのどちらかです。
- 現在のクラスパスをコンパイラに供給する方法が見つかりませんでした (これは非常に巨大です)。
- (Java 6 で) 機能した実装では、内部クラス (または内部匿名クラス) を正しくロードする方法が見つかりませんでした。
- 複数の環境で実行されるため、全体がメモリ内にあると非常に気に入っています。
これは以前に解決されたと確信していますが、Googleで半製品の品質でさえ見えるものを見つけることができません(前に言ったように、私は使用できなかったjciを除いて)。
編集:
- 私は JavaAssist を調べました - 内部クラス、Java 5.0 言語レベルのサポート、およびクラスパス全体でのコンパイルが必要です。また、その場で新しいクラスを作成したいと思います。私は間違っているかもしれませんが、JavaAssit でこれを行う方法が見つかりませんでした。
- ファイルシステムベースのソリューション(javacを呼び出す)を使用したいと思っていますが、クラスパスを推測する方法も、後でファイル(クラスパスにない)を特別なクラスローダーでロードする方法もわかりません。複数の呼び出しのためにリサイクルされます。私はそれを調査する方法を知っていますが、私は準備ができている解決策を好みます.
Edit2: 今のところ、BeanShell の「評価」に満足しています。どうやら、必要なことはすべて実行します (文字列を取得し、「現在の」クラスパスのコンテキストで評価します。Java 5 機能の一部が欠けていますが、列挙型 (定義ではなく) とコンパイル済みの「ジェネリック」 (消去された) を使用できます)。 )クラスなので、私が望むものには十分なはずです。
より良い解決策が出てくることを望んでいるので、まだ回答を承認済みとしてマークしたくありません。
Edit3: beanshell の提案を受け入れました - 本当に素晴らしく動作します。
java - Java アプリケーションの実行中にクラスを定義する
Java では、アプリケーションの実行中にオンザフライでクラス定義を作成し、そのクラスのオブジェクトを作成することは可能ですか?
たとえば、実行中のアプリケーションは、新しいクラスに含めるクラス メンバーのリストを含むテキスト ファイルを読み取ります。次にアプリケーションは、メンバーのリストに基づいてクラス定義を定義し、それをインスタンス化します。
java - 外部ソースコードをロードし、それらを内部で使用する(再コンパイルなど)
外部に保存されたソースコードを使用してJavaプログラムにロードし、それを使用できるようにする方法はありますか?
完全なソースコードを編集せずに変更できるプログラムが欲しいのですが、これは毎回コンパイルしなくても可能です。もう1つの利点は、コードの一部を好きなように変更できることです。
もちろん、これにデータを送信して固定ソースプログラムに戻すことができるように、インターフェイスが必要です。
そしてもちろん、それは純粋な通訳システムよりも速いはずです。
それで、これらの外部ソースコード部分の追加のコンパイルとこれが行われた後のプログラムの開始のようなこれを行う方法はありますか?
よろしくお願いします、アンドレアス:)
performance - ランタイム コンパイル: これがパフォーマンス ヒットではない可能性はありますか?
一部のタイプのランタイム コンパイルではパフォーマンスが低下しないと聞いたことがあります。公式の Python ドキュメントで.pyc
は、ファイルの実行は.py
. (現在、リンクが見つかりません。) これはどのように可能ですか? からバイトコードを生成するのに時間がかかりません.py
か?
PHPのような言語はどうですか?実行ごとにコンパイルする必要はありませんか? なぜこれが欲しいのですか?同じスクリプトを何度も実行すると時間の無駄に思えます。
c# - EXE を生成せずに動的コードをコンパイルして実行しますか?
exeやその他の種類のファイルを生成せずに、基本的にメモリからファイルを実行することなく、保存されたコードをコンパイルして実行できるかどうか疑問に思っていました。
基本的に、メイン アプリケーションにはいくつかの保存されたコード (潜在的に変更されるコード) があり、コードをコンパイルして実行する必要があります。ファイルを作成せずに。
ファイルを作成し、プログラムを実行してから、ファイルを削除することはできません。コンパイルされたコードはメモリから実行する必要があります。
コード例、ポインタ、またはほとんど何でも歓迎します:)
java - ランタイム コードの生成とコンパイル
リフレクションを介して、実行するメソッドを決定するために何らかの入力 (URL パスなど) を使用する次のコードがあるとします。
これはリフレクションを使用するため、パフォーマンスを向上させることができます。次のように実行できます。
しかし、そのようなものをすべて手動で作成するRunnable
ことには、独自の問題があります。実行時にそれらを生成できますか? したがって、最初の例のように入力マップがあり、2 番目の例のマップを動的に作成します。確かに、それを生成することは文字列を構築するだけの問題ですが、それをコンパイルしてロードすることはどうでしょうか?
注:パフォーマンスの向上が非常に小さいことはわかっていますが、時期尚早の最適化の完璧な例です。したがって、これは学術的な質問です。ランタイムの生成とコードのコンパイルに興味があります。
c# - オンライン C# インタープリターのセキュリティの問題
Codepadに少し似た、オンライン C# インタープリターを構築するというアイデアをいじっています。現在、明らかなセキュリティ上の問題があります。
- 無限ループ
- System.Diagnostics.Process.Start
- ほとんど System.IO 名前空間全体
C# に関する私の知識はまったく重要ではありませんが、C# についてもっとよく知っている人がたくさんいることは間違いありません。何に気をつけますか?
いくつかの精度がありますが、Mono を使用して小さな Linux VPS でこれを実行する予定です。
c# - 多対5の関係を持つCompileAssemblyFromDom
私は2つのクラスを持っています。
それらをそれぞれ別々のアセンブリでコンパイルする必要があります。CompileAssemblyFromDom は、別の型が見つからないと主張し、これらのクラスは循環依存であるため、理にかなっています。それを行うための回避策はありますか?
ありがとう。