Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Create a Web App to Compile and Run Java/C/PHP Code Online?

Tags:

Though this is a question with broader scope, I want to write a Online Test Code for my company where people can be given questions to write code in java/php/c etc and the code run and compiles online. I have seen this happening in site like codeacademy, Udacity etc. Just want to understand the architecture behind it. I have searched a lot along the similiar lines a lot on Google but couldnt find a concrete answer. Though after reading bits and pieces here and there i understood that the code is sent to compiler on server and then the results are sent back. Not sure how exactly that happens. Can somebody point me to a starting point of it.

like image 211
sushil bharwani Avatar asked Sep 22 '14 06:09

sushil bharwani


People also ask

How do I add an online compiler to my website?

Step 1: Open the website JDoodle.com and sign in, if you don't have an account then you must register first. Step 2: Select any one programming language and write your code and save it. Click on editable share and copy the embed URL.

Can PHP application be compiled?

The short answer is "no". The current implementation of PHP is that of an interpreted language.

Is Java a compiled language?

Java can be considered both a compiled and an interpreted language because its source code is first compiled into a binary byte-code. This byte-code runs on the Java Virtual Machine (JVM), which is usually a software-based interpreter.


1 Answers

What you can basically have, according to a MVC pattern applied to a web architecture, is something like this:

  • A web application client-side, which allows the user to insert some code, possibly leveraging Javascript for early syntactic check
  • A server endpoint, receiving the inserted code as input from the client

The sequence of operations could be:

  1. Server-side, the input is transformed into the appropriate structure for the target programming language, e.g. a Java class or a C module.
  2. Possibly, more context is defined (e.g. a classpath).
  3. Then, if the language is compiled, the compiler is invoked (e.g. javac or gcc). This can happen in several ways, e.g. exec in C or Runtime.getRuntime().exec in Java. Otherwise the code can be deployed on a server or some simulators can be run and passed the code.
  4. Subsequently, the code is executed and output is intercepted (e.g. by directioning the console output to a file or just leveraging the target language infrastructure, like in this example). The execution can happen through command line (e.g. java) or via other tools (e.g. curl for running a deployed php code as it was a client browser accessing it)
  5. Last step for the server is to send back the intercepted output to the client in a readable format, e.g. HTML. As an alternative, if you used Java, you could go for Applet, which doesn't change the basic architecture.

However, more in general, the point is that compilers and interpreters are base software. They are not intended for general users, which can easily live with the Operating System only. Therefore, "on line compiling", at the best of my knowledge, is something different from "posting code, letting it execute on a server, and visualizing the answer". Online compiling would mean distributing the responsibility of compiling across the network, which does make sense, but, in my opinion, it is not meant to use for demonstrative purpose (like you are mentioning).

like image 194
Manu Avatar answered Sep 24 '22 20:09

Manu