Hi, all.
I want to enable the users of my website to upload their Java programs as a set of jar files. Of course I want to restrict the classes they can see or use, along with the underlying machine resources such as the heap, the threads, the disk, the consumed processor, etc, etc.
I want a server to manage, store and run those user programs, and also to allow them to create accounts and configure they runtime environments. Let's say I want to allow them to pick one of a set of predefined environments: JRE 5, JRE 6, Groovy, etc. And also to let them configure some variables.
So, the question is do you know something similar to what I've described already done? is it open source?
Developing such a thing could take years. I know that something could be done starting different processes and configuring security managers. But since the programs I expect to allow would be very simple, maybe this could not be the best approach (expensive to the server host). Besides, I guess this complicates potential execution distribution.
Additional features would be:
users would have to purchase additional resources or features.
execution distribution over a cluster of hosts (not an initial requirement, but would be a great additional feature).
If you still don't have a clue of what I'm talking about, take a look to Google App Engine. They allow you to upload applications in a managed and very restrictive runtime environment.
Regards.