トラディショナルな非同期処理をRxにリファクタリングするツール2Rxの論文.
Web GUIなどで非同期処理は必須だが,非同期処理に関するJava標準ライブラリは使い勝手が良くない.
一方,最近流行のReactive Extensionは非同期処理を宣言的に書くことができ,可読性が高く理解が容易である.
そこで,非同期処理を行うライブラリであるSwingWorker
とFuture
を対象に,これらをリアクティブプログラミング形式に書き換える(リファクタリングする)ツール,2Rxを開発した.
2Rxは対象のライブラリの利用箇所に対して,データ生成箇所をObservable
生成に書き換える.
また,データ処理も同じようにObservable
に関する処理に書き換える.
なお,これらの変換には,処理がキャンセルされないなどの前提条件が必要となる.
また,実験も大規模に行っている(3,000以上のリポジトリを対象としている).
アイデアは面白いと思った. 一方,Rxは非同期処理だけでなく並列処理なども可能なので,そこもリファクタリングできるとより感じた. Rx完全に理解したい.