Линейный ввод Java Shell REPL в Windows ведет себя не так, как линейный ввод в большинстве других консольных приложений Windows:
- Комбинация клавиш Ctrl+Стрелка влево не переходит к началу предыдущей строки.
- Символ конца файла — Ctrl+D (как в Unix) вместо Ctrl+Z.
- Курсор исчезает при прокрутке с помощью клавиш горизонтальной стрелки.
- Во время набора есть небольшая задержка (около 0,1 с), пока не появится каждая набранная буква.
Это происходит как с Java 9, так и с Java 10. Напротив, Kotlin REPL не демонстрирует такого странного поведения. Как и методы Java BufferedReader.readLine()
или Scanner.nextLine()
при использовании System.in
или System.console().readLine()
.
Мои вопросы:
Почему Java Shell использует такой тип ввода строки? (Я имею в виду, дает ли это какое-то особое преимущество, чтобы компенсировать сложность его использования?)
Есть ли конфигурация, позволяющая использовать обычный метод пользовательского ввода?
Какой метод Java API он использует для чтения пользовательского ввода (просто чтобы я мог не использовать его сам)?