オンラインコンパイラを作成するには


閲覧ありがとうございます。  
現在Javaのオンラインコンパイラを作成したいと思っています。  
作成するにあたり、どのように作成するのがモダンなのかを知りたく質問いたしました。

私の想定するオンラインコンパイラとは、いわゆるpaiza.ioのようなもので、  
ユーザーが入力を行ったプログラムをサーバーサイドで実行し、その結果を返却するものです。

私の実装イメージは以下の通りです。

  1. Webサーバー内で実行する（サンドボックス的な機能がある？）
  2. 仮想マシン上にファイルを配備し、実行する。その標準出力を何等かの形でサーバーと連携する
  3. なんらかのライブラリを用いる

2が有力なのかなと思っているのですが、貧弱なサーバーで実現したいので可能であれば１の方法を取りたいと思っています。  
参考となる情報を頂ければ幸いです。




特に詳しいわけではないですが、私の聞いたことがある範囲で…

  * [Wandbox](https://wandbox.org/)
    * [Wandboxを支える技術](https://melpon.org/pub/wandbox) [#21](https://melpon.org/pub/wandbox#21)

> chrootを使って環境を閉じ込める

    * コード: <https://github.com/melpon/wandbox>
  * [AtCoder](https://atcoder.jp/) ジャッジサーバ 
    * <https://twitter.com/chokudai/status/1076367979686678529>

>
> ちなみに初期のAtCoderのジャッシサーバーはDockerとかなかったのでフルスクラッチで書いてて（cgroupsとかで制御してたはず？）、現行のAtCoderはLXCでやってるよ。

