我正在寻找一个可以编译一些输入代码(可能是C / Java)的Web服务,并且可以对它进行一些测试。我应该遵循什么样的设计?我可以在服务器上放置什么编译器来完成这项工作?建议?优点?缺点?
答案 0 :(得分:3)
Kattis使用GCC和Sun java编译器来编译C / C ++ / Java。您打算支持哪些平台当然会确定您可以使用哪些编译器。我认为如果你只使用多个编译器而不是试图找到一个可以编译你想要支持的每种语言的编译器,那对你来说会更容易。
最大的问题之一可能是阻止提交的代码接管您的主机。 Java包含内置支持,用于限制程序可以使用的类,但我不确定如何防止在C / C ++中分叉和创建套接字等事情。
答案 1 :(得分:1)
您可能需要Go Playground
之类的内容答案 2 :(得分:1)
对于Java,请参阅JavaCompiler。
我提供了一个名为SSCCE Text Based Compiler的小工具,可以在客户端和文档中执行此操作。请注意,它需要Java SDK,而不仅仅是JRE。
优点:
缺点:
很久以前我还提供了一个在我的某个域上编译代码(但不运行它)的工具。事实证明,特定类型的代码可能会将Sun编译器绑定在需要超过30分钟编译少于100行代码的结上!拒绝服务攻击,有人吗?由于我没有时间实施解决方案,因此我撤回了该工具。
为了运行代码,您几乎肯定需要实现全面的SecurityManager。
答案 3 :(得分:0)
最简单的事情是Web容器(如Tomcat或Jetty),允许用户上传自己的JSP页面。
这些由Web容器自动编译,并在请求时执行。