Java Agent Development Framework(JADE )は、 Javaで実装されたソフトウェアエージェント開発のためのソフトウェアフレームワークです。JADEシステムは、複数のFIPAエージェント間の連携をサポートし、エージェント間の通信を容易にし、システムのサービス検出を可能にする通信言語FIPA-ACLの標準実装を提供します。JADEは元々 Telecom Italiaによって開発され、フリーソフトウェアとして配布されています。
JADEは、FIPA規格に準拠したマルチエージェントシステムの開発を容易にするミドルウェアであり、エージェント用の複数のコンテナを作成します。各コンテナは1つまたは複数のシステム上で実行可能です。コンテナの集合はプラットフォームを構成するものと理解されています。
JADEが提供するもの:
JADEは当初、Telecom Italia Labによって開発されました。この部門は、Telecom Italiaグループの研究開発部門であり、技術革新の推進を担当しています。Telecom Italiaは2000年にJADEを構想し、普及させました。最新バージョンは2022年12月(バージョン4.6.0)です。フリーソフトウェアとして配布された最初のJADEバージョンは2000年2月(バージョン1.3)から入手可能です。
2003年3月、モトローラとテレコム・イタリアは、ミドルウェアベースのモバイル通信業界におけるJADEの開発と普及を促進することを目的として、JADE運営委員会を設立しました。JADE運営委員会は、JADEの商業利用および活用に関心のある企業や組織に対し、その開発と普及への貢献を呼びかけています。
2021年、JADEの開発に成功したチームは、これ以上開発を続けることができないと発表した。現在、別の研究者チームがJADEをフォークし、プラットフォーム開発を引き継いでいる。
JADEは分散エージェントプラットフォームであり、エージェントを実行するホストごとにコンテナが用意されています。さらに、このプラットフォームには、さまざまなデバッグツール、コードおよびコンテンツエージェントのモビリティ、エージェントの動作の並列実行機能、言語およびオントロジーの定義サポートなどが備わっています。各プラットフォームには、AMSとDFと呼ばれる2つの特別なエージェントを含む親コンテナが必要です。
DFエージェントにアクセスするには、クラス「jade.domain.DFService」とその静的メソッド(register、deregister、modify、Search)を使用します。
AMSサービスにアクセスするには、エージェントが作成されます。このエージェントは、デフォルトでAMSのregisterメソッドを自動的に実行してから、新しいエージェントからsetupメソッドを実行します。エージェントが破棄されると、デフォルトでtakeDown()メソッドが実行され、自動的にAMSのderegisterメソッドが呼び出されます。
Agentクラスは、ユーザーがJADEエージェントを作成できるようにするスーパークラスです。エージェントを作成するには、Agentクラスを直接継承する必要があります。通常、各エージェントは複数のサービスを記録し、それらのサービスは1つ以上の動作によって実装されます。
このクラスは、エージェントの基本的なタスクを実行するためのメソッドを提供します。
JADEエージェントのライフサイクルは、FIPAが提唱するサイクルに従います。これらのエージェントは、以下のように定義されるさまざまな状態を経ます。
動作は、特定のイベント発生時のアクションを定義します。エージェントのこの動作は、addBehaviourメソッドを使用してsetupメソッドで定義されます。エージェントが採用するさまざまな動作は、抽象クラス Behaviour から定義されます。Behaviour クラスには、次の抽象メソッドが含まれています。
ユーザーは、 onStart()プロパティとOnEnd()プロパティのメソッドをオーバーライドできます。さらに、エージェントの動作を変更するために使用される block ()やrestart()などのメソッドもあります。エージェントがロックされている場合、さまざまな方法でロックを解除できます。それ以外の場合は、ユーザーはエージェントが持つonStart()メソッドとonEnd()メソッドをオーバーライドできます。
エージェント間の通信の基盤となるのは、メッセージパッシングACL (エージェント通信言語)です。メッセージの送信は、Agentクラスのsendメソッドで行います。このメソッドでは、受信者情報、言語、エンコーディング、メッセージの内容を含むACLMessage型のオブジェクトを渡す必要があります。これらのメッセージは非同期で送信され、受信されたメッセージはメッセージキューに格納されます。ACLメッセージの受信には、ブロッキングとノンブロッキングの2種類があります。それぞれblockingReceive()メソッドとreceive()メソッドが用意されています。どちらのメソッドでも、異なるテンプレートを設定することで、キューから取得するメッセージをフィルタリングできます。
JADEにはWADE (Workflows and Agents Development Environment)と呼ばれる拡張機能があり、これはWOLFというグラフィックエディタでプロセスを作成できるワークフローシステムです。