2016-01-15 3 views
1

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

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

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

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

Спасибо заранее!

ответ

5

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

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

java -jar compiler.jar inputcodefile outputexecutablefile

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

EDIT: Я вижу, что вы отметили свой вопрос с помощью 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.

+0

Здравствуйте! Спасибо за этот быстрый ответ! На самом деле я разрабатываю веб-приложение с помощью PHP (Laravel), но некоторые ребята сказали мне, что я могу использовать node.js для выполнения компилятора, поэтому я пометил node.js. Кроме того, да, компилятор является файлом jar, поэтому он не так уж сложный, я просто прошу, какая технология лучше всего подходит для выполнения такой работы? – IgZiStO

+0

Нет проблем! Что я ответил на ваш вопрос? – ruhnet

+0

Привет! Спасибо за этот быстрый ответ! На самом деле я разрабатываю веб-приложение с помощью PHP (Laravel), но некоторые ребята сказали мне, что я могу использовать node.js для выполнения компилятора, поэтому я пометил node.js. Кроме того, да, компилятор является файлом jar, поэтому он не так уж сложный, я просто прошу, какая технология лучше всего подходит для выполнения такой работы? – IgZiStO

0

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

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

@RestController 
public class HelloController { 

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

} 
+0

Благодарим за ответ! Но, как я уже сказал, компилятор сделан, и я не думаю, что ребята, стоящие за ним, хотели бы изменить код ... У них есть рабочий фляж..so ... – IgZiStO

+0

Я думал, что вам нужна помощь с пониманием как создать взаимодействие между клиентом и сервером. Вам нужна помощь в программном запуске компилятора и загрузке выходного файла? –

+0

Это то, что я хочу сделать. В веб-приложении вы нажимаете на компиляцию, мы запускаем компилятор программно и загружаем скомпилированный файл! – IgZiStO

-1

попробовать это:
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/

вы можете использовать затмение запустить сервер Tomcat, чтобы проверить код.

+0

Благодарим за быстрый ответ! Я не думаю, что мы можем переключиться на tomcat juste как на такую ​​простую задачу. Спасибо вам в любом случае! – IgZiStO