div.main {margin-left: 20pt; margin-right: 20pt}
Апплеты и сервлеты
Автор:
Джон Уделл, Computerworld
Определение
Апплеты — это программы на Java, которые, как правило, предназначены для того, чтобы загружаться посредством браузера, а затем работать в окне браузера. Они могут использоваться для создания богатых графикой и интерактивными возможностями пользовательских интерфейсов, которые не способны выразить средствами обычного языка разметки HTML. Сервлеты — программы на Java, которые работают на Web-серверах Java или серверах приложений Java. Как и программы CGI, сервлеты могут доставлять Web-службы непосредственно в браузер или действовать как промежуточное ПО, которое связывает браузер с серверными службами.
Когда появился язык Java, настоящими звездами этого шоу стали апплеты. И уже тогда было ясно, что HTML-браузер представляет собой превосходную универсальную прикладную платформу, хотя и не отличается богатством выразительных возможностей. Апплеты обещали стать почти идеальным со всех точек зрения решением: не требуют затрат на установку, соответствуют лозунгу сторонников чистого HTML («написано однажды — работает везде») и отличаются богатым «родным» графическим пользовательским интерфейсом.
Но до сих пор эти надежды не сбылись. Проведенный недавно опрос, касающийся использования апплетов Java, показал, что они применяются менее чем на 2% из 500 самых популярных Web-сайтов. Почему? Некоторые разработчики неверно оценили накладные расходы при интерпретации байт-кода в виртуальной машине Java. У других множество нареканий вызывает защита, основанная на принципе «песочницы» (sandbox), который не позволяет Java использовать в полной мере локальные и удаленные службы. Третьи отмечают различия между виртуальными машинами основных браузеров, имеющихся на рынке. Так или иначе по прошествии пяти лет апплеты не оправдали ожиданий, и Web-приложения на базе HTML не были вытеснены Web-приложениями с равным уровнем переносимости и мобильности, но функционально более мощным графическим пользовательским интерфейсом.
Тем не менее, хотя апплеты не заслуживают той шумихи, которая была поднята при их появлении, они делают немало полезного. Вот несколько ярких примеров.
AnywareOffice компании VistaSource (www.anywareoffice.com). VistaSource использует апплет Java для реализации Applixware, своего популярного офисного пакета, в браузерах, ориентированных на Java. Когда провайдер услуг доступа к приложениям использует AnywareOffice, приложения (такие, как текстовый процессор) работают на сервере, но отображаются в апплете.
QuestAgent компании JObjects (www.jobjects.com). Этот апплет представляет собой кроссплатформенный механизм поиска, часто включаемый в состав компакт-диска с публикациями на базе HTML. Браузер может отображать информационное наполнение таких публикаций, но не может выполнять поиск в своем индексе. QuestAgent предлагает мобильный поиск и позволяет отказаться от необходимости создавать и отображать оригинальный механизм поиска.
MindTerm компании Mindbright Technologies (www.mindbright.com). Предположим, что пользователь оказался вне офиса и при нем нет мобильного компьютера, а ему необходимо передать файл на домашний сервер. MindTerm — реализация защищенной версии интерпретатора команд Secure Shell (SSH) на базе Java позволяет преобразовать любой ориентированный на Java браузер в клиент SSH, который можно применять для шифрования сеансов передачи файла.
Сервлеты — восходящая звезда
Хотя Java на стороне клиента не оправдал возложенных на него надежд, использование Java на сервере, похоже, имеет неплохие перспективы. Сейчас серверы Java-приложений предлагают огромное и продолжающее расти число Web-служб. И их lingua franca — это API-интерфейс для сервлетов, который определяет, как сервлет Java взаимодействует с хостом на базе Java. Подобное решение применяется очень широко, и хотя Enterprise JavaBeans постепенно превращается в стандарт, намного более простой API сервлета создает общую основу для взаимодействия серверных компонентов Java.
Поскольку сервлеты написаны на Java, они предлагают превосходную платформу для сетевых служб. Программисты Java не управляют памятью напрямую, поэтому сервлеты не порождают ошибки переполнения буфера, которые приводят к изъянам в защите ПО, написанного на Си или C++. Простые механизмы Java для обработки исключений и многониточных программ способствуют разработке надежных и оперативно реагирующих сетевых служб.
Сервлеты также имеют преимущества с архитектурной точки зрения, которые позволяют им в полной мере использовать все присущие Java достоинства. Если апплет, посланный по сети, окажется в несовместимой с ним виртуальной машине Java, то он, скорее всего, корректно работать не будет. Сервлет развертывается в более управляемой среде. Так как параметры JVM известны, проблем совместимости не возникает. Более того, среда, которая окружает данную виртуальную машину, может увеличивать производительность сервлета. Некоторые серверы Java-приложений могут компилировать сервлеты в «родной» для себя код и тем самым значительно увеличивать скорость выполнения. Другие серверы запускают параллельно несколько JVM, иногда в различных процессах хостовой ОС. Эти стратегии увеличивают масштабируемость и отказоустойчивость службы.
Апплеты Java еще могут оправдать надежды. Спрос на более богатый возможностями графический пользовательский интерфейс Web растет, и ни одна из технологий пока не готова предложить кроссплатформенные возможности, сравнимые с возможностями Java. В то же время, однако, сервлеты Java, безусловно, имеют успех.
|