javakliは、KLICのプログラムと、Javaのプログラムを接続するイ
ンタフェースである。KLICとJavaの双方でインタフェースのライブ
ラリが用意されており、これらを利用することにより、2つの言語
で記述されたプログラム間で通信が行える。この2言語間では、ソ
ケット通信を用いて通信を行っている(図)。このこ
とにより、2つの言語で記述されたプログラムは、互いに独立に動
作することが出来る。例えば、GUI部をJavaのアプレットとしてWeb
上で動作させ、必要に応じてサーバマシン上のKLICのプログラムと
接続し、通信を行うといったアプリケーションが作成できる。
javakliでは、大きく分けて3つのインタフェース形態を持つ。こ れは、データストリーム、オブジェクト操作、手続き呼び出しの3 つである。これらを組み合わせて利用することにより、JavaとKLIC のプログラム間で通信を行うような、GUIアプリケーションが作成 できる。KLIC側では、インタフェースの機能を提供するjkプロセス に対してストリームでメッセージを送ることにより、インタフェー スへのアクセスが行える。また、Java側では、JKクラスのオブジェ クトに対してメソッドを呼び出すことにより、インタフェースが利 用できるようになっている。
データストリームのインタフェースは、KLICとJavaのプログラム間 で、KLICのデータを用いたストリーム通信が行えるものである。 KLICでは、ストリームに対するアクセスで処理が行なえ、Javaでは、 JKクラスのオブジェクトに対して put() や get() 等のメソッドを 呼び出すことにより利用することが出来る。このインタフェースで 利用できるデータは、整数や文字列だけでなく、ファンクタが利用 できるため、リスト構造にしたデータをJava側に送ることも可能と なっている。
オブジェクト操作のインタフェースは、KLIC側から、Javaのオブジェ クトに対する操作が行えるインタフェースである。具体的にいうと、 オブジェクトを作成し、そのオブジェクトに対して、メソッド呼び 出しやフィールド値の参照、設定を行うことが出来る。このインタ フェースは、今回新たに追加したインタフェース形態である。この インタフェースにより、KLIC側からJavaのプログラムを容易に扱う ことが出来るようになっている。
手続き呼び出しのインタフェースは、Java側からKLICのゴールを簡 単に利用するためのインタフェースとなっている。JKクラスの call() メソッドを呼び出すことにより、引数で指定されたゴール が呼び出され計算が開始される。そして、その計算結果を、メソッ ドの戻り値としてJava側で利用することが出来るようになっている。