異種プログラム同士を繋ぎ合わせたいといった問題はよく遭遇する問題です.特に多種多様のセンサやアクチュエータを制御しなくてはならないロボットのソフトウェアの場合,一つの包括的プログラムのみで動作させるということはほとんど不可能です.

そこで,各プログム同士を繋ぎ合わせる手段としてシリアル通信が従来から用いられています.僕の場合,計算量の高いプログラムのコアの部分をC++で実装し,その他のGUIや軽量プログラムをプログラミングが楽チンなJavaやスクリプト言語で実装しています.そこで,Java用にシリアル通信のサーバ・クライアント両方に使用できるプログラムを作成してみました.Java.util.concurrentを用いることで,クライアントの接続待ち状態を実現しています.今回はプログラムを簡潔に表現するために,せっかくのCallable実装をスレッド発行せず使っています.