Я хочу, чтобы пользователи моего веб-сайта могли загружать свои Java-программы в виде набора файлов jar. Конечно, я хочу ограничить классы, которые они могут видеть или использовать, а также базовые машинные ресурсы, такие как куча, потоки, диск, потребляемый процессор и т. д. и т. д.
Я хочу, чтобы сервер управлял, хранил и запускал эти пользовательские программы, а также позволял им создавать учетные записи и настраивать среды выполнения. Допустим, я хочу позволить им выбрать одну из набора предопределенных сред: JRE 5, JRE 6, Groovy и т. д. А также позволить им настроить некоторые переменные.
Итак, вопрос в том, знаете ли вы что-то подобное тому, что я уже описал? это с открытым исходным кодом?
Разработка такой штуки может занять годы. Я знаю, что можно было бы что-то сделать, запустив разные процессы и настроив менеджеров безопасности. Но поскольку программы, которые я ожидаю разрешить, будут очень простыми, возможно, это не лучший подход (дорогой для хоста сервера). Кроме того, я предполагаю, что это усложняет потенциальное распределение исполнения.
Дополнительными функциями будут:
пользователям придется приобретать дополнительные ресурсы или функции.
распределение выполнения по кластеру хостов (не является первоначальным требованием, но было бы отличной дополнительной функцией).
Если вы все еще не понимаете, о чем я говорю, взгляните на Google App Engine. Они позволяют загружать приложения в управляемую и очень ограниченную среду выполнения.
С Уважением.