Как работатет javaRush, Codecademy?

Здравствуйте!

Интересует такой простой(или не очень) вопрос: как работают сервисы по типу javaRush, Codecademy? Мне очень захотелос сделать в учебных целях что-то похожое

Как я это вижу сейчас:
Есть форма, где я пишу код. При нажатии на кнопку к ним на сервер отправляется POST-запрос, который содержит этот код. Далее этот код должен быть проанализирован или пропущен через тесты. И в результат тестов будет выведен пользоователю

Сама большая проблема, с которой я столкнулся - анализ кода при запущеном сервере. Я использую Tomcat&Java Servlets, код анализирую в спомощью Java Reflection, а для самого сайта использую JSP(Spring я не знаю)

Вся эта возня с рефлексией, jsp и сервлетами довольно муторная. И в случае с несколькими классами, которые вместе связаны я вообще в замешательстве. Меня все время не покидает чувство, что я делаю что-то неправильно.

Так вот вопрос: какие технологии использует JavaRush например? Может есть что-то вроде готовых решений\движков\фреймворков для реализации на Java моей задумки? Заранее благодарю
  • Вопрос задан
  • 935 просмотров
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
Зачем вам анализировать код? что вы хотите в нем найти? Если ошибки синтаксиса - пропустите через компилятор он вам всё скажет. Ошибки выполнения вылезут при запуске.

Такое делается обычно в песочнице - делаете безопасное окружения для запуска кода, запускаете его там, если какие-то ошибки - вам компилятор или среда выполнения все скажут, если нет - вывод скрипта проверяете и отправляете обратно в браузер результат.
Как делать песочницу - отдельный вопрос. Возможно есть какие-то готовые решения для запуска java кода в изоляции, тут гугл вам в помощь. Я бы для простоты запускал в изолированном докере - тяжеловато и не слишком ограничено там внутри но быстро и надежно. Для учебных целей подойдет. Можно и свою песочницу нагородить, если уверены в безопасности.
Ответ написан
@BMaks_N1
Можно крч через ANTLR прогнать) для каждой задачки написать парсер) если разбор строки происходит правильно, то пробуем скомпилить и прогнать через тесты, если и тут все ок, отправляем, что все ок) но это мб чутка муторно, хотя если приловчиться)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы