当前位置: 首页 > 面试题库 >

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

公冶阳德
2023-03-14
问题内容

尽管这是一个范围更广的问题,但我想为我的公司编写一个在线测试代码,在该代码中,人们可以被问到如何用java / php /
c等编写代码,并且该代码可以在线运行和编译。我已经在Codeacademy,Udacity等网站上看到了这种情况。只是想了解其背后的架构。我在Google上进行了很多类似的搜索,但找不到具体答案。尽管在这里和那里读完了零散的片段后,我知道代码已发送到服务器上的编译器,然后将结果发送回去。不知道到底是怎么发生的。有人可以指出我的出发点吗?


问题答案:

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

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

操作顺序可以是:

  1. 在服务器端,将输入转换为目标编程语言(例如Java类或C模块)的适当结构。
  2. 可能会定义更多上下文(例如,类路径)。
  3. 然后,如果语言已编译,则将调用编译器(例如javac或gcc)。这可以通过多种方式发生,例如C中的exec或Java中的Runtime.getRuntime()。exec。否则,可以将代码部署在服务器上,或者可以运行某些模拟器并传递代码。
  4. 随后,执行代码并截获输出(例如,通过将控制台输出定向到文件或仅利用目标语言基础结构,如本例中所示)。该执行可以通过命令行(例如Java)或其他工具(例如,用于运行已部署的php代码的curl进行,因为它是客户端浏览器对其进行访问)
  5. 服务器的最后一步是将拦截的输出以可读格式(例如HTML)发送回客户端。或者,如果您使用Java,则可以使用Applet,它不会改变基本架构。

但是,总的来说,重点是编译器和解释器是基本软件。它们不适合一般用户使用,它们只能轻松地与操作系统一起使用。因此,据我所知,“在线编译”与“发布代码,使其在服务器上执行并可视化答案”不同。在线编译将意味着在整个网络上分配编译的责任,这确实是有道理的,但是在我看来,它并不旨在用于演示目的(就像您提到的那样)。



 类似资料:
  • 问题内容: 我有一个Main.java和Test.java类,它们要编译并在Test.java代码中运行Main.java。这是我的代码 我只在Main.java中打印“ ok”,但是此代码不打印任何内容。问题是什么 ? 问题答案: 我修改了代码以包括一些检查: 这是Main.java: 当一切都很好时,它就可以工作: 现在,例如,如果在Main.java中出现一些错误: 它仍然显示“ ok”,因

  • 主要内容:C++源文件的后缀,g++ 命令C++ 和C语言类似,也要经过编译和链接后才能运行。在《 C语言编译器》专题中我们讲到了 VS、Dev C++、VC 6.0、Code::Blocks、C-Free、 GCC、Xcode 等常见 IDE 或编译器,它们除了可以运行C语言程序,还可以运行 C++ 程序,步骤是一样的,这里不再赘述,读者需要留意的是 C++ 源文件的后缀,以及 GCC 中的 命令。 下图是 C/C++ 代码生成可执行文

  • 问题内容: 我正在编译一个简单的程序 我在命令提示符下输入了Java Test.java,但没有成功 我没有使用任何IDE 我应该在哪里将程序文件放在计算机上 谢谢 问题答案: 您不能直接运行Java源文件。您需要先使用进行编译: 然后,您将获得一个可以运行的.class文件:

  • 问题内容: 我想使用另一个Java程序打开Java GUI。 它已成功编译,但无法运行。它说“无法加载主类”。这是我的代码: HelloWorld类: 问题答案: 您的代码可能失败的地方有很多,例如,由于某种原因它可能无法编译;可能不在操作系统的搜索路径中;该命令可能会失败,因为参数看起来不正确。 我相信您的命令应该看起来更像或者应该在目录的上下文中执行… 您确实需要尽一切努力来诊断潜在的问题,例

  • 问题内容: 我想知道如何在Java中运行PHP代码。使用ScriptEngine,我可以运行JavaScript: 为此,我导入了库。我相信要运行PHP,我必须导入一个类似的库,并将上面代码的第三行更改为extension 。不幸的是,我不知道这是哪个库。我已经用Google搜索并找到了答案,并遇到了PHP / Java Bridge库,但是我认为这并不是我要找的,因为它专注于通过PHP运行Jav

  • 问题内容: 编辑:我现在确定问题与保存所有其他命令的循环有关, 因为我已将其注释掉,并且在部署应用程序时没有附加的异常。我不确定它有多重要,但是我的实现看起来像这样: 因此,现在该线程在部署应用程序时运行,但是由于注释了循环,因此它没有实际意义。 当我的应用程序加载时,我需要在后台运行一个线程,并不断(无超时)检查某个对象队列。当然,一旦有了对象,它就会“照顾它们”,然后继续检查队列。 目前,我正