Выполнить 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 для проверки вашего кода.