Программа ниже печатает каждый символ, записанный на стандартном, но только после того, как была написана новая строка (по крайней мере, в моей системе!).
public class Test {
    public static void main(String[] args) throws java.io.IOException {
        int c;
        while ((c = System.in.read()) != -1)
            System.out.print((char) c);
    }
}
Это позволяет людям писать такие вещи, как "Нажать любую клавишу, чтобы продолжить", и заставляет что-то вроде "Нажмите enter для продолжения".
- В чем причина этого?
 - Является ли это ограничением Java?
 - Является ли это поведение зависящим от системы (я на Ubuntu)? Как это работает на Mac? Windows?
 - Зависит ли он от конкретного терминала, в котором я запускаю приложение? (Для меня это ведет себя как в Eclipse и в gnome-терминале)
 - Есть ли обходной путь?
 
