クラスのリロードは、生産性を大幅に向上させると思います。クラスの再定義は非常に限られていると思います。
何年にもわたって、アプリケーションの一部をある種のドメイン固有言語 (DSL) で、または XML や json やプロパティ ファイルなどのより自由な形式で絶えず変更し続けるためのいくつかの回避策を見つけましたfunction (){}
。可能であり、以前の関数定義を上書きすることは簡単に可能です。
私の考え:
クラスをリロード可能にするため、またはクラスをスクリプトとして機能させるために、注釈を付けることができます。つまり、.java ファイルを DSL として扱うことができます。
@Reloadable
public SomeReloadableClass{
}
@Script
public SomeReloadableClass{
}
現在、リロード可能なクラスの参照が他の場所で役立ち、クラスをアンロードしようとしているときにメモリ リークが発生する可能性があるという懸念があります。
これを克服するには、いくつかの制約を適用する必要があります。この部分は難しいですが、インターフェイス コントラクトまたは注釈を使用できます。必要に応じて、OSGi 記述子によく似ているが、インターセプターまたはインターフェースを使用するクラス内で、エクスポートと依存関係に課されるコントラクトが存在する可能性があります。OSGi は、クラスごとに必要とされないバージョンの依存関係のマッチングなどを処理するため、OSGi よりも単純である必要があります。
@Reloadable (exports='..., ...')
public SomeReloadableClass{
public start(){ ...}
public stop() { ...}
}
この機能は非常に便利だと思います。副産物として、java を構成ファイルとして、java を DSL として使用できますが、プログラムのほとんどの部分はコンパイルされたモノリスのままで十分にパフォーマンスを発揮できます。
JavaScript プログラムは常に、構成記述子として javascript または json を使用します。これもまた、javascript オブジェクト表記です。Java または任意の jvm 言語で同じことができるはずです。
Javaモジュールシステムはこれに焦点を当てていますか?
注: これは質問形式ではなく、むしろ提案だと思います。その意味で、間違った QA サイトにあります。どこに引っ越せばいいのかわからないので、ここで声を出して考えています。移動先を提案します。