如何创建Web应用程序以在线编译和运行Java / C / PHP代码?

时间:2014-09-22 06:11:34

标签: java php c online-compilation

虽然这是一个范围更广的问题,但我想为我的公司编写一个在线测试代码,人们可以在java / php / c等中编写代码并运行代码并在线编译。我在网站上看到过这种情况,比如codeacademy,Udacity等。只是想了解它背后的架构。我在Google上搜索过很多类似的东西,但却找不到具体的答案。虽然在这里和那里阅读了点点滴滴之后,我知道代码被发送到服务器上的编译器,然后结果被发回。不知道究竟是怎么回事。有人能指出我的起点。

2 个答案:

答案 0 :(得分:6)

根据应用于Web架构的MVC模式,您基本上可以拥有的是这样的:

  • Web应用程序客户端,允许用户插入一些代码, 可能利用Javascript进行早期语法检查
  • 服务器端点, 接收插入的代码作为客户端的输入

操作顺序可以是:

  1. 服务器端,输入被转换为目标编程语言的适当结构,例如, Java类或C模块。
  2. 可能会定义更多上下文(例如类路径)。
  3. 然后,如果编译语言,则调用编译器(例如javac或gcc)。这可以通过几种方式实现,例如exe中的C或Runtime.getRuntime()。exec in Java。否则,代码可以部署在服务器上,或者可以运行某些模拟器并传递代码。
  4. 随后,执行代码并截取输出(例如,通过将控制台输出定向到文件或仅利用目标语言基础结构,如this example)。执行可以通过命令行(例如java)或通过其他工具(例如用于运行已部署的php代码的curl,因为它是访问它的客户端浏览器)来实现。
  5. 服务器的最后一步是以可读格式将截取的输出发送回客户端,例如, HTML。作为替代方案,如果你使用Java,你可以选择Applet,它不会改变基本架构。
  6. 然而,更一般地说,重点是编译器和解释器是基础软件。它们不适用于一般用户,只能轻松使用操作系统。因此,据我所知,"在线编译"与发布代码,让它在服务器上执行以及可视化答案相关的东西是不同的。在线编译意味着分配整个网络编译的责任,这是有道理的,但在我看来,它并不意味着用于示范目的(就像你提到的那样)。

答案 1 :(得分:2)

我将domjudge用于我的公司并根据我的需要进行了自定义。

PHP代码编写得很好。它非常模块化,易于满足您的要求。