Ввод/вывод и апплеты
Потоки
Java-программы выполняют ввод/вывод через потоки. Поток производит, или потребляет информацию. Поток связывается с физическим устройством с помощью системы ввода/вывода Java (Java I/O system). Все потоки ведут себя одинаковым образом, хотя фактические физические устройства, с которыми они связаны, могут сильно различаться. Таким образом, одни и те же классы и методы ввода/вывода можно применять к устройствам любого типа. Это означает, что поток ввода может извлекать много различных видов входных данных: из дискового файла, с клавиатуры или сетевого разъема. Аналогично, поток вывода может обратиться к консоли, дисковому файлу или сетевому соединению (сокету). Благодаря потокам программа выполняет ввод/вывод, не понимая различий между клавиатурой и сетью, например. Java реализует потоки с помощью иерархии классов, определенных в пакете java.io.
Подход Java к потокам почти такой же, как в C/C++.
Байтовые и символьные потоки
Java 2 определяет два типа потоков: байтовый и символьный. Байтовые потоки предоставляют удобные средства для обработки ввода и вывода байтов. Байтовые потоки используются, например, при чтении или записи данных в двоичном коде. Символьные потоки предоставляют удобные средства для обработки ввода и вывода символов. Они используют Unicode и поэтому могут быть интернационализированы. Кроме того, в некоторых случаях символьные потоки более эффективны, чем байтовые.
На самом низком уровне весь ввод/вывод является байтовым. Символьно-ориентированные потоки обеспечивают удобные и эффективные средства для обработки символов.