Одно из основных отличий между FreeMarker и JSP заключается именно в том, что FreeMarker не поддерживает произвольные фрагменты кода Java в шаблоне. Что касается разделения интересов, это очень хорошая вещь.
Если вам абсолютно необходимо преобразовать JSP-скриптлеты в шаблон FreeMarker, вы должны сначала проверить, что на самом деле делают эти скриптлеты. Некоторые из них могут быть заменены их эквивалентными макросами; например:
<% if (x < 3) { %>
может быть легко заменено на:
<#if (x < 3)>
Вы поняли.
Оставшиеся скриптлеты могут быть заменены пользовательскими макросами FreeMarker, но вы должны вместо этого задать себе вопрос: не слишком ли много в моем шаблоне?
Что касается написания универсального макроса, который может содержать код Java, это будет очень сложно, потому что, хотя JSP фактически компилируются в сервлеты во время выполнения, обработка шаблона FreeMarker не требует компиляции Java. Что, опять же, хорошо.