Многие знают такие ресурсы как htmlacademy или же Stepik, где по шагам нужно вносить изменения в код, нажимать на кнопку проверить и если все верно, то отправиться на следующий шаг.
С помощью каких инструментов можно сделать тоже самое для языка Java?
Пример:
Задание: Измените код так, что бы он прошел стадию компиляции.
Обучающийся меняет код, нажимает кнопку "проверить".
Если он отвечает верно, то уходит на следующий вопрос, если неверно, то подсвечивается та строка, где он допустил ошибку.
Будет очень здорово, если вы укажите готовые инструменты по созданию таких "уроков".
Нет никаких готовых инструментов. Эта задача очень большая и комплексная. Делать такое на джаве очень сомнительная идея, проще сделать в вебе на js. Самая большая и сложная часть - сервер. Вот его можно смело писать на джаве. Боюсь, для вас задача подобного масштаба будет неподъёмной. Разве что можно поковырять edu плагин для idea(если его код открыт).
В данном случае задача состоит из двух частей:
1. Фронтенд - страница с заданием и текстовой областью для ввода кода. Можете писать на чем угодно: Spring MVC, Node JS, либо вообще статические HTML страницы делать. При нажатии на кнопку "проверить" идет запрос к бекенду, запрос содержит в себе код в текстовом виде.
2. Бекенд - другой http сервер, который отвечает за компиляцию Java кода. Лучше всего его писать на Java (например, Spring). Посмотрите на StackOverflow ответы по запросу "dynamic java code compilation" - выдаст про интерфейс JavaCompiler, есть и библиотеки-обертки с более простым API для этих целей. То есть у вас бекенд сервер будет по определённому URL принимать код как строку, компилировать его, а на выходе выдавать результат компиляции, либо можно даже результат с System.out отправлять.