問題タブ [plugin-architecture]
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.
java - プラグイン可能な Java プログラムを作成するには?
プラグインで拡張できる Java プログラムを作成したい。どうすればそれを行うことができ、どこを探すべきですか?
プラグインが実装する必要があるインターフェイスのセットがあり、それは jar にある必要があります。プログラムは、(プログラムに対して) 相対的なフォルダーで新しい jar を監視し、何らかの方法で登録する必要があります。
私は Eclipse RCP が好きですが、私の単純なニーズには多すぎると思います。
春もそうだけど、とりあえず見るからやってみようかな。
それでも、自分のプラグイン「フレームワーク」をできるだけ簡単に作成する方法を見つけたいと思っています。
java - J2SE アプリケーションにプラグイン サポートを追加するための最適なテクノロジは?
コンポーネントの 1 つをプラグ可能にする必要がある J2SE デスクトップ アプリケーションを作成しています。このプラグインの Java インターフェイスは既に定義済みです。ユーザーは、実行時に (GUI を介して) このインターフェースのどの実装を使用したいか (初期化ダイアログなどで) 選択できる必要があります。各プラグインは、実装クラスと必要なヘルパー クラスを含む JAR ファイルとしてパッケージ化されることを想定しています。
デスクトップJavaアプリでこの種のことを行うのに最適なテクノロジーは何ですか?
flash - AdobeAIRを使用したプラグインアーキテクチャの構築
今後のプロジェクトのクライアント側の実装技術としてAdobeAIRを選択することを考えています。(以前の選択はC#とWPFでしたが、最近Flash / Flex / AIRに本当に感銘を受けました。)
しかし、私の製品の最も重要な機能の1つはプラグインアーキテクチャであり、サードパーティの開発者が機能とGUIを興味深い方法で拡張できるようにします。
C#でアーキテクチャを設計する方法を知っています。プラグインローダーは、ローカルの「app /plugins/」ディレクトリにあるすべてのアセンブリを列挙します。アセンブリごとに、すべてのクラスを列挙し、「IPluginFactory」インターフェースの実装を探します。工場で作成されたプラグインごとに、MVCクラスを要求し、GUI要素(メニュー項目、パネルなど)を既存のGUIレイアウトの適切なスロットにスナップします。
AIR内で同じことを実行したいと思います(Webからではなくローカルファイルシステムからプラグインをロードします)。この記事を読んだ後、私の理解はそれが可能であり、基本的なアーキテクチャ(サンドボックス化されたApplicationDomainsへのSWFのロードなど)は.NETで行う方法と非常に似ているということです。
しかし、私は落とし穴に興味があります。
Flash Playerを使用して動的なクラスローディングを行ったことがある場合(できれば、Flash / Flexの混合アプリで、特にAIRホスト内で)、プラグインフレームワークを構築した経験と、トリッキーな状況に遭遇した場所についてお聞かせください。フラッシュプレーヤー、およびフラッシュ、フレックス、およびAIRAPIを使用します。
たとえば、誰かが私にこれと同じ質問をしたが、Javaプラットフォームを念頭に置いている場合、JVMには「モジュール」または「アセンブリ」の概念がないことは間違いありません。最高レベルの集約は「クラス」であるため、大規模なプロジェクトを管理するためのプラグインシステム内に組織構造を作成することは難しい場合があります。また、複数のクラスローダーの問題と、それぞれがロードされたクラスの独自の個別のインスタンスを(独自の個別の静的変数を使用して)維持する方法についても説明します。
これが私にとってまだ答えられていないいくつかの特定の質問です:
1)actionscript "Loader"クラスは、SWFをApplicationDomainにロードできます。しかし、そのappdomainには正確に何が含まれていますか?モジュール?クラス?MXMLコンポーネントはどのように表現されますか?プラグインインターフェイスを実装するすべてのクラスを見つけるにはどうすればよいですか?
2)メインアプリケーションとは別のApplicationDomainにプラグインをロードした場合、他のappdomain内からコードを呼び出すのはかなり複雑ですか?アプリ間ドメインマーシャリングレイヤーを通過できるデータの種類について、重要な制限はありますか?マーシャリングは法外に高価ですか?
3)理想的には、自分のメインコードの大部分をプラグインとして開発し(メインアプリケーションはプラグイン読み込みシェルにすぎません)、プラグインアーキテクチャを使用してその機能をアプリに追加したいと思います。それはあなたの心に恐怖をもたらしますか?
java - Javaでプラグインシステムを構築するための最良の方法
Javaアプリケーション用のプラグインシステムをどのように実装しますか?
次のことを実現する(開発者にとって)使いやすいシステムを持つことは可能ですか?
- ユーザーはプラグインをアプリのサブディレクトリに配置します
- プラグインは設定画面を提供できます
- フレームワークを使用する場合、ライセンスは商用開発と互換性がありますか?
java - JAR をサポートする Java Plugin Framework
より具体的には、以下の機能をすべて備えた Java プラグイン フレームワークはありますか。
- 複数の JAR ファイルのサポート
- JAR は署名および/または封印することができます
- インスタンス化の前に、各 JAR のライセンス チェックを実行できます。
- 複数のスレッドを使用して複数の JAR をロードできます
java - Java PlugIn の作成方法
Java プログラムを OME へのプラグインとして作成する必要があります。これは、Java API を備えた画像処理 Web ベースのソフトウェアです。
www.openmicroscopy
java - プラグインで特定の Java コードを制限する
Java Plugin Frameworkを使用してプラグインをロードし、それらをプログラムに統合するアプリケーションを作成しています。
私の質問は、プラグインで特定の操作 (新しいプロセスの開始など) を制限する方法はありますか? 私が念頭に置いているのは、Java WebStart のようなものです。つまり、アプリケーションが FileSytem にアクセスしようとすると、ユーザーはそのアクションを許可するかどうかを尋ねられます。
セキュリティマネージャーを作成することを考えていましたが、もしそうなら、どうすればそれができますか?
c# - インターフェイスを備えたプラグインアーキテクチャ。インターフェイスチェックが機能しない
アプリケーションに単純なプラグインアーキテクチャを実装しています。プラグインの要件は、アプリケーションとプラグインによって参照される* .dllにあるインターフェイス(IPlugin)を使用して定義されます。アプリケーションにはプラグインマネージャー(同じ* .dll内)があり、プラグインフォルダー内のすべての* .dllを検索してプラグインをロードし、プラグインがインターフェイスを実装していることを確認します。私はこれを2つの異なる方法でチェックしました[以前は単純なif(プラグインはIPlugin)でした]が、プラグインがインターフェースを実装するタイミングをどちらも認識しません。コードは次のとおりです。
以前は特定のクラス名(「プラグイン」)をテストしていましたが、アセンブリ内のすべてのクラスを循環させても無駄になりました。(これは、他の場所で見つけた例に従います。)これをもう少し複雑にするために、それぞれが元のインターフェイス(IPluginA、IPluginB)を実装する2つのインターフェイスがあります。プラグインは実際には、より具体的なインターフェースの1つ(IPluginB)を実装します。ただし、より一般的なインターフェイス(IPlugin)を実装するだけのプラグインで試してみましたが、それでも機能しません。
[編集:最初に受け取った2つの応答への応答]はい、IsAssignableFromを使用してみました。以下を参照してください。
ruby-on-rails - Ruby on Rails でプラグイン アーキテクチャを使用するにはどうすればよいですか?
Ruby on Rails でソーシャル ネットワーキング サイトを構築する必要があります。サイトの機能は随時変更される場合があります。そのため、機能を簡単に追加/削除する必要があります。さらに、別のソーシャル ネットワーキング サイトを構築している可能性もあります。これらの理由から、フレームワークへの拡張機能をインストールまたはアンインストールする機能を備えた、RoR でソーシャル ネットワーキング サイトの基本的なフレームワークを構築することを考えています。
以前は Joomla! で働いていました。拡張機能を追加/削除するための CMS とそのアーキテクチャは、私が見ているもののようなものです。Joomlaで!インストールには通常、拡張機能を追加/削除/カスタマイズできる管理者側があります。
私は RoR に不慣れで、これを行う方法を決定するのは少し難しいと感じています。どんな助けでも大歓迎です。
java - java: jar の動的なロードとアンロードを可能にするフレームワークはありますか (osgi は不可)?
jar を動的にロードおよびアンロードしたり、jar でアクティベーター クラスを呼び出したりできるメカニズムが必要です。面倒なインポート/エクスポート メカニズムがあるため、OSGi を使用したくありません。