Создание сетевых приложений
Когда мы начинали разговор про язык
программирования Java, то отмечали, что он
специально ориентирован на глобальные сети,
такие как Internet. В этой главе мы начнем знакомство
с конкретными классами Java, разработанными для
сетевого программирования. На примере наших
приложений вы сможете убедиться, что классы Java
действительно очень удобны для создания сетевых
приложений.
В этой главе мы рассмотрим два аспекта сетевого
программирования. Первый из них касается доступа
из приложений Java к файлам, расположенным на
сервере Web, второй - создания серверных и
клиентских приложений с использованием сокетов.
Напомним, что из соображений безопасности
алпетам полностью запрещен доступ к локальным
файлам рабочей станции, подключенной к сети. Тем
не менее, аплет может работать с файлами,
расположенными на серверах Web. При этом можно
использовать входные и выходные потоки,
описанные нами в предыдущей главе.
Для чего аплетам обращаться к файлам сервера Web?
Таким аплетам можно найти множество
применений.
Представьте себе, например, что вам нужно
отображать у пользователя диаграмму, исходные
данные для построения которой находятся на
сервере Web. Эту задачу можно решить, грубо говоря,
двумя способами.
Первый заключается в том, что вы создаете
расширение сервера Web в виде приложения CGI или ISAPI,
которое на основании исходных данных
динамически формирует графическое изображение
диаграммы в виде файла GIF и посылает его
пользователю.
Однако на пути решения задачи с помощью
расширения сервера Web вас поджидают две
неприятности. Во-первых, создать из программы
красивый цветной графический файл в стандарте GIF
не так-то просто - вы должны разобраться с
форматом этого файла и создать все необходимые
заголовки. Во-вторых, графический файл занимает
много места и передается по каналам Internet
достаточно медленно - средняя скорость передачи
данных в Internet составляет 1 Кбайт в секунду.
В то же время файл с исходными данными может
быть очень компактным. Возникает вопрос - нельзя
ли передавать через Internet только исходные данные,
а построение графической диаграммы выполнять на
рабочей станции пользователя?
В этом заключается второй способ, который
предполагает применение аплетов. Ваше
приложение может, например, получать через сеть
файл исходных данных, а затем на основании
содержимого этого файла рисовать в своем окне
цветную круговую диаграмму. Объем передаваемых
данных при этом по сравнению с использованием
расширения сервера Web сокращается в десятки и
сотни раз.
Помимо работы с файлами, расположенными на
сервере Web, мы расскажем о создании каналов между
приложениями Java, работающими на различных
компьютерах в сети, с использованием сокетов.
Сокеты позволяют организовать тесное
взаимодействие аплетов и полноценных приложений
Java, при котором аплеты могут предавать друг другу
данные через сеть Internet. Это открывает широкие
возможности для обработки информации по схеме
клиент-сервер, причем в роли серверов здесь может
выступать любой компьютер, подключенный к сети, а
не только сервер Web. Каждая рабочая станция может
выступать одновременно и в роли сервера, и в роли
клиента.