問題は言語ではありません。あなたの問題は、テクノロジーが非常にモジュール化されていないことです。OSGi は、ライブラリや秘密のソースではありません。追加すると、魔法のようにモジュール性のすべての利点が得られます。その中には、必要な複数の「クラス スペース」があります。OSGi は、モジュラー アプリケーションのファブリックを提供します。つまり、アプリケーションは、まとまりのある最小限に結合されたコンポーネントから構築されます。
Spring や Hibernate など、人気はあるがモジュール化されていないテクノロジを選択しました。これらのテクノロジは、動的クラス ローディング (Class.forName) を広範囲に使用するため、単一のクラス空間に大きく依存しているため、モジュール化されていません。つまり、XML ファイル内の各クラス名は動的にロードされます。このパラダイムは、グローバル クラス スペースを必要とするだけでなく (これらのクラス名は実質的にグローバル変数として扱われます。これは、CS の学生なら誰でも知っているはずです)、実装クラスの名前も使用します。モジュールの外側で実装クラスの名前を使用することは、モジュール性とは正反対です。ClassNotFoundExceptions は OSGi であり、誰かがそのモジュール フェンスを尊重していないことを示しています。つまり、コードを構造化する方法にはモジュール性が必要であり、OSGi はこれらのモジュールを実行するための基盤を提供し、それらの境界を強化するだけです。
そのため、OSGi には、グローバル変数や実装の詳細の漏洩に悩まされない非常に強力なモジュールを作成するための、非常に洗練された、非常に過小評価されているテクノロジー、uServices があります。これらの uService は、仕様パッケージで指定され、軽量ブローカーを介してモジュール間で共有されるオブジェクトです。uServices は実際には Spring XML の必要性を無効にします。
残念ながら、現在の最先端では、Java の開発者の多くは、クラス ローディング ハックがオープン ソース プロジェクトを結び付ける方法であると信じて育ちました。
良いニュースは、物事が動いているということです。現在、多くのプロジェクトが JAR バンドルを作成し始めています (OSGi は maven central での人気が 33 位です) が、ほとんどのポートはヘッダーを提供するだけです (maven central で最もダウンロードされたプラグインの 1 つを使用しています)。ただし、この最初のステップが語られると、通常、サービスの追加はそれほど難しくありません。私は、このプロセスをスピードアップするために OSGi Alliance に雇われています。実際、JPA は私のリストの一番上にあります。
元の質問に戻ります。私が知る限り、複数のクラス スペースに必要な概念であるクラス ローダーをサポートしているのは Java だけです。私が知っているすべての動的言語は、クラス名によってのみバインドされ、要件を効果的に除外します。だから私は、実際には代替案がないことをかなり確信しています...