Короткий ответ - работа с Java-оберткой вокруг проклятий.
Длинный ответ:
Терминалы сильно различаются, поэтому существуют библиотеки terminfo / termcap, и с ними трудно разобраться (сопровождающие этих проектов, кстати, святые). Они отвлекают все действительно базовые вариации на что-то вменяемое. Проклятия превращают их в хорошие эффективные библиотеки.
Если вы хотите чисто Java-решение, вам понадобятся обе эти библиотеки или их эквивалент в Java. Я уверен, что кто-то укажет вам на это, если оно существует, но я, насколько я знаю, его не существует.