Много лет назад Билл Брогден присутствовал на конференции, посвященной обработке данных об окружающей среде. Одной из целей конференции было обсуждение серьезных проблем, возникающих при обмене данными между учеными, особенно проживающими в разных странах. При попытке согласовать данные, поступившие из различных источников, любому исследователю приходилось иметь дело с различными форматами хранения данных, всевозможными способами записи и типами компьютеров — это выглядело как строительство Вавилонской башни.
Конференцию открыл один из заведующих кафедры экологии (имевший гуманитарное образование). Он начал свое выступление с того, что описал глубокое изумление, которое он испытал, узнав, что на магнитной ленте с данными научно-технического характера отсутствует встроенное описание этих данных. Без подробной информации, полученной из отдельного источника, такая лента становится совершенно бесполезной. Остальные участники конференции согласились, что эта ситуация неудовлетворительна, но никто не знал, как исправить положение.
Теперь, с появлением языка XML, наконец реализовалась идея о том, что любые данные должны сопровождаться собственным описанием. Широкое распространение, которое получил расширяемый язык разметки (Extensible Markup Language, XML) за время, прошедшее с 1998 года, когда первый стандарт XML был опубликован консорциумом W3C (World Wide Web Consortium), служит подтверждением того, что многие отрасли науки и промышленности созрели для серьезных изменений в области описания данных.
Одна из причин быстрого распространения XML заключается в том, что Интернет способствует знакомству широких слоев пользователей с HTML, стандартным языком разметки web-страниц. HTML помог многим пользователям получить представление о том, как с помощью тегов в простой текст можно включать дополнительную информацию. Основываясь на этой идее, можно сделать следующий небольшой, хотя и нетривиальный, шаг — перейти к использованию тегов XML для описания данных.
Наиболее очевидным преимуществом XML является возможность расширения этого языка для решения специфических для каждого пользователя задач. Эта возможность делает XML столь привлекательным для тех, кому приходится работать с различными типами данных в какой-либо специальной области. Другoe, не столь очевидное преимущество заключается в том, что для любых расширений этого языка при проверке и обработке данных можно продолжать использовать инструментарий XML, если только при записи данных соблюдены правила языка.
Оказалось, что подобная гибкость — как раз то, что требуется для многих практических приложений. Компании, которые обмениваются информацией с другими компаниями через Интернет, все чаще и чаще отказываются от стандарта EDI (Electronic Data Interchange — электронный обмен данными) в пользу XML. Предполагается, что эти так называемые В2В (Business-to-business — бизнес для бизнеса) приложения содержат наибольшее количество данных в формате XML во всем Интернете.
В настоящее время имеется большое количество сайтов, которые представляют интерес для пользователей Java и XML. Прекрасным местом для начала поиска новостей и справочных материалов является сайт oasis.oasis-open.org, который принадлежит организации по продвижению стандартов структурирования информации. Эта самая большая в мире независимая некоммерческая организация, занимающаяся стандартизацией приложений XML.
Если вы интересуетесь Java, вам наверняка приходится часто слышать и о XML, так как с самого начала язык Java был тесно связан с XML. Джон Босак (Jon Bosak), один из первых инициаторов стандартизации XML, работает в компании Sun, и большая часть работы по созданию анализаторов XML на первом этапе была сделана с помощью Java.
Так или иначе, интерес к XML распространился всюду в компьютерной промышленности, от огромных корпораций, таких как IBM и Microsoft, до неформальных рабочих групп на всех уровнях. Силами отдельных программистов и небольших групп сделаны многие существенные усовершенствования XML. Например, неформальной группе «XML Devian», организовавшейся на основе списка рассылки в Интернете, принадлежит заслуга создания упрощенного интерфейса API для XML, известного как SAX. Разработка этого проекта исходно велась на языке Java.
В нашем курсе мы будем использовать сервлеты [Так, по-видимому, по аналогии с апплетами авторы называют программы, написанные на языке Java и выполняющиеся на сервере — Примеч ред. ] Java и JSP-страницы (JavaServer Pages) для создания web-приложений, работающих с данными XML. Сервлеты выполняются на web-сервере, осуществляя те функции, которые ранее возлагались на сценарии CGI. JSP-страницы позволяют объединять элементы разметки HTML и фрагменты кода Java. Технология сервлетов и JSP-страниц развивается примерно так же быстро, как язык XML.
Во время написания этого курса текущей версией API для сервлетов Java была версия 2.2, выпущенная в декабре 1999 года. Этот интерфейс API содержит много изменении по сравнению с предыдущей версией, особенно в области создания web-приложений и стандартизованной настройки приложения на базе XML.
Стандартизация технологии JavaServcr Pages происходила гораздо медленнее. Развитие интерфейса API надолго затормозилось на версии 0.92. Отсутствие ясных указаний со стороны Sun привело к тому, что многие компании по созданию программного обеспечения разработали свои собственные технологии для объединения пользовательских тегов в HTML с возможностью поиска по базе данных и другими аналогичными возможностями.
Когда компания Sun разработала редакцию Java, которая впоследствии стала называться Java 2 Enterprise Edition (редакция Java 2 для корпоративных программных систем на базе Java), стало ясно, что технология JSP будет играть значительную роль в общей концепции создания web-приложений. Поэтому дальнейшее развитие API для JSP-страниц пошло быстрее, появились версии 1.0 и 1.1. Когда была опубликована редакция J2EE, стало ясно, что сервлеты Java и JSP-страницы уже в значительной степени интегрированы в общую картину развития web-приложений на Java. Другой важной особенностью J2EE явилось использование XML для описания web-приложений.
Наиболее значительное в этой области событие произошло в октябре 1999 года. Компания Sun передала организации Apache весь исходный код API 2.2 для сер- влетов и API 1.1 для JSP-страниц с целью дальнейшей разработки открытых эталонных реализаций контейнеров сервлетов Java и JSP-страниц. Эта разработка не зависит от J2EE и гарантирует постоянное наличие в свободном доступе новейших реализаций интерфейсов API для сервлетов и JSP-страниц.
Мы предполагаем, что вы на базовом уровне знакомы с HTML, Java и web-серверами и у вас имеется доступ к компьютеру, на котором можно установить небольшой web-сервер, стандартный компилятор Java и другие служебные программы. Редактировать данные XML можно с помощью любого текстового редактора, либо вы можете использовать один из многочисленных коммерческих или находящихся в свободном доступе специализированных редакторов XML.
Если эти требования выполнены, то практически любой человек, который работает с данными в той или иной форме, потенциально является пользователем XML. Трудно представить себе такую область человеческой деятельности, для которой в Интернете не нашлось бы ни одного относящегося к ней проекта, использующего язык XML.
Для многих проектов мы использовали находящийся в свободном доступе небольшой web-сервер —Jakarta-Tomcat (http://jakarta.apache.org), содержащий комплект необходимых разработчику инструментальных средств. Если у вас еще нет web-сервера, то для начала Tomcat является хорошим вариантом. Также мы использовали сервер JRun (www.allaire.com) — как в автономном режиме, так и в качестве дополнения к web-серверам Microsoft PWS и IIS. Еще вы можете испытать сервер Orion (www.orionserver.com), в который включено хорошее учебное пособие по библиотеке тегов JSP.
Служебные программы и комплекты инструментальных средств для работы с XML, написанные на Java, появляются как грибы после дождя. Для того чтобы придерживаться определенных стандартов, мы использовали версию JAXP 1.0 (Java API for XML parsing — интерфейс API Java для анализа документов XML). Этот пакет можно загрузить с web-сайта java.sun.com. Следующая версия пакета JAXP во время создания этого курса проходила стадию бета-тестирования, так что к моменту выхода курса он, вероятно, уже будет доступен.
Цель этого курса — познакомить разработчиков с технологиями использования XML в программах на Java. Вместо того чтобы рассказывать о теоретической стороне дела, мы сразу переходим к практическому применению этих технологий на примере построения коммерческого web-сайта.
Лекция 1. В этой лекции вы найдете введение в XML с объяснениями всех каверзных моментов этого языка и типичных способов его использования. Также в этой лецции приводится обзор двух моделей обработки данных XML с помощью Java — DOM и SAX.
Лекция 2. Эта лекция посвящена решению вопросов, возникающих при разработке каталога товаров на XML. Этот язык является настолько гибким, что иногда бывает непросто выбрать один из многих способов представления данных. Выбранная структура каталога иллюстрирует многие важные задачи, которые вам придется решать при разработке собственного проекта подобного рода. Построенный нами каталог, который дорабатывается в следующих лекциях, включает описания более сотни наименований товаров.
Лекция 3. Эта лекция начинается с обзора интерфейсов API для сервлетов Java и JSP-страниц, используемых для создания динамических web-страниц Затем мы рассматриваем стандартные интерфейсы API Java для извлечения данных из документов XML, после чего мы объединяем все эти функции в сервлете Java, предназначенном для получения информации из каталога и отображения ее в формате HTML. В числе прочих этот сервлет реализует возможность поиска товаров по ключевым словам.
Лекция 4. В этой лекции мы расширяем классы для представления каталога из лекции 3 и создаем действующую корзину покупателя, которая позволяет покупателю заказывать товары через Интернет. В процессе создания этого приложения мы рассказываем о том, как концепция мониторинга сеанса реализована в сервлетах Java.
Лекция 5. Теперь, когда у нас имеется корзина покупателя, нам нужно обеспечить возможность получения денег от клиента и оформления заказа (разумеется, с использованием XML). В нашем примере для представления соответствующей информации клиенту используется технология JavaServer Pages.
Лекция 6. В этой лекции мы исследуем задачу обновления каталога, отформатированного средствами XML, через специальный интерфейс в режиме подключения к сети.
Лекция 7. Насущной потребностью для любого коммерческого сайта является способность собирать информацию о своих клиентах. В этой лекции приводится основанная на XML система опроса, в которой предусмотрена возможность ветвления (возможность задавать различные вопросы различным пользователям в зависимости от их ответов на определенные специальные вопросы). Возникающая задача анализа собранных результатов дает нам возможность продемонстрировать, как с помощью интерфейса SAX обрабатывать большие документы XML.
Лекция 8. Каждому коммерческому сайту необходимо как-то информировать клиентов о новостях компании. В этой лекции на основе XML разрабатываются гибкая система для отображения новостей компании, а также сервлеты и JSP-страницы для ее поддержки.
Лекция 9. В наши дни многие коммерческие сайты включают в свои домашние страницы заголовки новостей, пытаясь тем самым заинтересовать пользователей и стимулировать их к частому посещению сайта. Как показано в этой лекции, вы можете обеспечить присутствие на вашем сайте текущих новостей буквально по сотням тематических категорий, и для этого не нужен целый штат репортеров — всего лишь XML и Java.
Лекция 10. В предыдущих лекциях рассказывается о деталях организации ресурсов для web-приложения на Java. В этой лекции мы приводим обзор спецификации Sun для версии API 2.2 сервлетов Java и обсуждаем интерфейсы для Java и XML следующего поколения.
Что можно скачать из каталога по FTP?
Естественно, курс по технологиям Java и XML должен сопровождаться работающими примерами применения этих технологий. Для лекций 3-6 мы создали на XML виртуальный каталог с описанием более сотни забавных товаров для воображаемого коммерческого web-сайта. Другие лекции также содержат некоторые примеры файлов XML для данного приложения.
Исходный код для всех этих программ вы найдете в каталоге http://bourabai.kz/xml/cod/, в папках, названия которых соответствуют нумерации лекций. Поскольку подготовка каталога относится к тем видам работы над курсом, которые заканчиваются в последнюю очередь, файлы в каталоге могут содержать исправления или добавления, отсутствующие в листингах, включенных в текст курса.
Соглашения, используемые в этом курсе
Мы старались придерживаться максимально простого способа организации материала. Соглашения об обозначениях в этом курсе знакомы всем читателям. Для фрагментов кода и текстов программ используется моноширинный шрифт, пример которого вы видите в следующем объявлении метода:
public void _jspService(HttpServletRequest request, HttpServletResponse response)
ПРИМЕЧАНИЕ
Мы иногда будем использовать эту врезку для того, чтобы вставить какое-либо замечание, выходящее за рамки рассматриваемого в основном тексте вопроса.
ВНИМАНИЕ
Эту врезку мы используем для того, чтобы обратить ваше внимание на возможные сложности, например отклонение от стандарта.
СОВЕТ
Здесь вы найдете советы тех, кто действительно знает решение.