リアルタイムのコラボレーションを可能にする単純なオンライン エディター (Java で記述) を開発しようとしています。このエディターでは、クライアントが任意のポイントでソース コードを編集できるようにしたいと考えています (たとえば、ソース コード ファイルの行 11、列 20 に文字 'd' を追加します)。これらのソース コード ファイル オブジェクトを効率的な方法で設計する方法がわかりませんが、文字単位のクライアント サーバー同期 (Google ドキュメントの仕組みと同様) を可能にします。
RandomAccessFile の使用を検討しましたが、この投稿を読んだ後、それは効率的なアプローチではないと思います。ファイルの先頭近くに文字を挿入すると、その後のすべてが変更されます。
私の現在の計画は、StringBuilder オブジェクトとその挿入/削除/追加メソッドを使用して、サーバーとクライアントの両方のソース ファイルを表すことです。サーバー側では、この StringBuilder は必要に応じて実際のファイルに変換されます。
この問題を解決するためのより良いアプローチがあるかどうかに興味があります。何か案は?