Выполнить Java-код на сервере

Я разрабатываю веб-приложение, своего рода онлайн-среду для написания и компиляции кода. Язык программирования разработан внутри университета, а также компилятор.

Мой вопрос: возможно ли выполнить компилятор на сервере (компилятор написан на Java), чтобы он компилировал код и возвращал скомпилированный файл для загрузки?

Проще говоря, пользователь использует онлайн-редактор кода, затем нажимает кнопку компиляции, сервер берет записанный код, выполняет компилятор, который находится на сервере (компилятор написан на Java), а затем возвращает скомпилированный файл.

Итак, как я могу выполнить компилятор (написанный на Java) на сервере?

Заранее спасибо!

3 ответа

Решение

Вы не сказали, какой тип сервера или какой язык вы используете для разработки веб-приложения (PHP, node.js, python, perl и т. Д.), Но обычно дистрибутивы Java имеют двоичный файл командной строки, который будет выполнять код Java.

Если файл компилятора находится в jar-файле, ваша команда, которую выполняет веб-приложение, может быть простой, например:

java -jar compiler.jar inputcodefile outputexecutablefile

Конечно, вы должны заменить имена файлов и добавить соответствующие параметры, необходимые для компилятора (если есть).

РЕДАКТИРОВАТЬ: я вижу, вы пометили свой вопрос с помощью node.js, поэтому я предполагаю, что это язык, который вы используете на стороне сервера.

В node.js есть "дочерний процесс", который позволяет вам выполнять внешние команды. Итак, с примером команды, которую я дал выше, вы бы сделали что-то вроде:

var exec = require('child_process').exec;
var compileit = 'java -jar compiler.jar inputcodefile outputexecutablefile';

exec(compileit, function(error, stdout, stderr) {
});

С PHP это еще проще:

exec('java -jar compiler.jar inputcodefile outputexecutablefile');

Смотрите http://php.net/manual/en/function.exec.php для получения дополнительной информации о функции exec() в PHP.

Типичный способ сделать это - создать REST API с контроллером, который обрабатывает POST-запросы. В данные запроса необходимо отправить входной исходный код, а данные ответа должны содержать скомпилированный код.

Если компиляция инкапсулирована в функцию с именем "compile", ваш REST-контроллер будет выглядеть примерно так, используя среду Spring:

@RestController
public class HelloController {

    @RequestMapping(value = "/compile", method = RequestMethod.POST)
    public String compilationAPI(@RequestBody SourceCode sourceCode) {
        String compiledCode = compile(sourceCode);
        return compiledCode;
    }

}

Попробуй это:
https://tomcat.apache.org/download-70.cgi

некоторый учебник:
https://www.youtube.com/watch?v=3CXBRjpiTws
http://www.coreservlets.com/Apache-Tomcat-Tutorial/
http://www.tutorialspoint.com/servlets/

Вы можете использовать eclipse, чтобы запустить сервер Tomcat для проверки вашего кода.

Другие вопросы по тегам