Библиотека Интернет Индустрии I2R.ru |
|||
|
Java в СетиС течением времени технологии Java все глубже проникают в мир Интернет. В свое время большой популярностью пользовались Java-апплеты, которые работают в окне браузера, но обладают возможностями, сопоставимыми с возможностями обычных программ. Предположим, что у вас родился ребенок (или коммерческая компания), и вы хотите, чтобы ваши друзья, родственники (или партнеры по бизнесу) имели возможность любоваться фотографиями (пресс-релизами) новорожденного. Проблема в том, что друзей и родственников довольно много, они живут в разных городах и странах, и кроме того, стоимость печати фотографий (прайсов, ежеквартальных отчетов) для всех них довольно внушительна. В этой ситуации логично будет сделать небольшую HTML-страничку с информацией о своем детище и поместить ее на каком-либо бесплатном или не очень дорогом сервере, а затем по электронной почте разослать ее адрес всем, кому вы хотите показать свое творение. Для реализации этой идеи вполне достаточно статического HTML-кода. Потом вы решаете сделать гостевую книгу, чтобы посетители сайта могли радовать вас своими пожеланиями. Для этого можно взять готовый CGI-скрипт (например, написанный на языке Perl) и установить его на сервер. Но рано или поздно и этого становится мало. Ребенок (компания) растет, фотоаппарат щелкает, количество фотографий (пресс-релизов) увеличивается настолько, что возникает необходимость организовывать их в каталоги, рубрики и альбомы. Кроме того, у друзей тоже рождаются дети (коммерческие проекты), и они тоже хотят сделать сайты, но им не хочется править HTML-код вручную, и нужен веб-интерфейс для администрирования все более и более сложных информационных структур. Средства, предоставляемые статическим HTML, для этого уже не подходят. Количество скриптов стремительно увеличивается, стройные строчки Perl-кода по мере внесения исправлений превращаются в перловую кашу, и вот вы уже начинаете путаться в структуре собственного сайта. Для того, чтобы этого не происходило, обычно применяют технологии объектно-ориентированного программирования (ООП). Создав объектную модель сайта, можно, к примеру, использовать один и тот же программный компонент в нескольких местах, что при благоприятных условиях может в несколько раз упростить процесс разработки. Но самое главное - концептуальная ясность и формализованность проекта значительно увеличиваются. Существует великое множество объектно-ориентированных языков программирования, но для создания серьезных интернет-решений, вероятно, чаще всего используется язык Java (java.sun.com). Java в Сети - не только сервлеты Еще одним из важных стандартов Java является спецификация Servlet API (java.sun.com/products/servlet), сейчас уже принятая в версии 2.3. На основе этого документа различные разработчики создают конкурирующие программные продукты - как бесплатные, так и встроенные в коммерческие серверы приложений. Технология сервлетов, описанная в этой спецификации, позволяет разработчикам создавать полноценные веб-приложения. Сервлеты обладают широкими возможностями для работы с HTTP-запросами пользователей, для организации сессий и аутентификации, а также многими другими жизненно важными механизмами, использующимися в Web. Часто говорят, что сайт создан с применением сервлетов, и может сложиться впечатление, что это примерно то же самое, что написать сайт на Perl или PHP. На самом деле Java представляет собой технологию другого уровня, соответствующего уровню C++. Более того, нет принципиальной разницы в технологиях разработки на C++ или Java, но особенности Java делают этот язык значительно более привлекательным. К таким особенностям относятся переносимость программ без перекомпиляции с Windows-машины разработчика на Unix-серверы, большое количество разнообразных средств разработки, колоссальная информационная поддержка со стороны Sun, IBM, Oracle и других компаний, продуманная структура стандартных библиотек, легкость освоения и многое другое. Все это существенно удешевляет разработку по сравнению с С++ и способствует широкому распространению Java. Отдельно хочется сказать о технологии JSP (Java Server Pages) (java.sun.com/products/jsp), позволяющей встраивать Java-код непосредственно в HTML-страницы. Понятно, что это был ответ Sun на аналогичную технологию ASP (Active Server Pages) от Microsoft, и ответ удачный. Технически JSP представляет собой просто еще один удобный метод написания Java-классов; JSP-страница <на лету> компилируется в обычный сервлет. Код, содержащийся в JSP, легко интегрируется с различными компонентными моделями Java (JMX, Java Beans, Enterprise Java Beans) и при грамотном применении очень способствует решению задачи разделения оформления и содержания. Спецификация JSP разрабатывается вместе со спецификацией Servlet API и также поддерживается различными разработчиками. Помимо JSP существуют альтернативные методы решения аналогичных задач, использующие язык Java. Среди них особенно выделяется технология XSP (eXtensible Server Pages) (xml.apache.org/cocoon/xsp), предложенная Apache Software Foundation. В отличие от JSP, XSP-страницы активно используют технологии XML/XSLT, что позволяет выделять в отдельный слой не только оформление и содержание, но и логику веб-приложений. Java и бизнес И как правило, ситуация редко меняется к лучшему. Проблема даже не в затратах на обновление парка компьютеров и программного обеспечения, нужно учитывать еще и то, что практически все сотрудники крупной компании на своих рабочих местах выполняют работу, которая приносит компании прибыль. Представьте, что в банк привезли новый компьютер и начали устанавливать на рабочее место операционистки: пока поставили, пока к сети подключили, пока иконки двигали, пока объясняли, где находится кнопка Power, - сколько потерял банк? А если в новой конфигурации возникли ошибки при переводе денег? Поэтому в крупных компаниях затраты на развитие IT-инфраструктуры связаны не столько с покупкой оборудования и программ, сколько с необходимостью их освоения и поддержания в состоянии, обеспечивающем бесперебойную работу. Естественно, что благодаря своей беспрецедентной переносимости, Java-решения часто становятся стандартом де-факто при разработке информационных систем крупных компаний. Программное обеспечение, используемое в таких компаниях, может быть установлено в далеком прошлом и постоянно совершенствуется со временем. При этом активно используются технологии объектно-ориентированного программирования, и в большинстве случаев выбор платформы разработки сводится к дилемме C++/Java. И на этом <поле битвы> более молодой язык Java имеет существенные преимущества, упрощающие разработку и модернизацию программного обеспечения. В их число входят развитые стандарты кодирования и документирования, простота освоения (по сравнению с C++), тщательно выстроенные компонентные модели и многое другое. На любом языке программирования можно написать как хороший, так и отвратительный код, но разработчики Java приложили много усилий для того, чтобы плохой код просто не компилировался. Поэтому на Java можно с большей легкостью создавать надежные программы, а это в бизнесе играет очень важную роль. Однако на этом преимущества Java для создания бизнес-решений не заканчиваются. Пока компания Microsoft вынашивала планы по созданию распределенной архитектуры, .NET, Sun, BEA, Oracle, IBM, Borland и другие компании предложили альтернативную компонентную модель EJB (Enterprise Java Beans). Технология EJB позволяет изолировать бизнес-логику приложений от поддерживающих операций вроде обеспечения доступа к данным и управления интерфейсом. Это открывает широкие возможности для разработчиков, обеспечивая разделение труда при написании различных уровней приложения. Например, одна команда программистов занимается интерфейсом, другая - проектированием базы данных, третья - непосредственно логикой работы программы. Кроме того, написанные в рамках архитектуры EJB компоненты обретают поистине волшебную универсальность - один и тот же компонент, управляющий каталогом картинок, может быть задействован и в базе данных сотрудников компании, и в ленте новостей, и даже в том самом сайте о детях, о котором шла речь в начале статьи. Впрочем, последний пример, пожалуй, сомнителен. Все преимущества EJB наиболее отчетливо проявляются в крупных корпоративных проектах. Накладные расходы при использовании этой технологии в небольшом проекте могут перевесить преимущества, особенно если написанные компоненты в дальнейшем не планируется использовать где-либо еще. Есть идеи? Используйте Java! Кроме того, многие среды разработки для Java имеют собственный открытый API, что позволяет создавать для них дополнительные модули. Часто сам продукт и реализуется как набор таких модулей, просто включенных в стандартную поставку. Скорее всего, именно поэтому новые технологии программирования в первую очередь интегрируются с Java (например, библиотека JUnit, используемая для написания тестов в методологии eXtreme Programming (XP), уже включается в новые версии некоторых средств разработки). Особенно тесно язык Java связан с технологиями XML/XSLT, которые приобретают все большую популярность у разработчиков интернет-решений. Естественно, существуют стандартные API, которые позволяют использовать большинство существующих XML-парсеров или написать собственный. О тесной связи технологий Java и XML/XSLT говорит хотя бы тот факт, что в спецификации XSLT 1.0 Java упоминается трижды, а ее редактор Джеймс Кларк (James Clark) написал собственный XML-парсер для Java. Что дальше? Тем не менее, существуют факторы, значительно ограничивающие применение Java-технологий для создания интернет-решений. Например, если для сервера, на котором размещен статический сайт, критичными являются лишь скорость соединения с Интернетом и наличие свободного места на диске, то сайт, сделанный с применением Java-технологий, является полноценным приложением, которое требует для своего функционирования существенное количество процессорного времени. Для больших проектов это не имеет особого значения, так как затраты на разработку и поддержку программного обеспечения значительно превышают затраты на оборудование, но для маленьких сайтов это слишком дорогое решение. Есть и проблемы, специфичные для России. Документация и книги переводятся на русский язык с существенным запозданием, основные сайты, посвященные Java-технологиям, также англоязычные. Поэтому, если вы хотите разрабатывать продукты серьезного уровня, необходимо, как минимум, уметь читать по-английски. К сожалению, в какой-то степени из-за низкой цены использования программного обеспечения Microsoft решения на базе Java не слишком популярны у российских заказчиков. В нашей стране Java-программист с вероятностью примерно 80% работает на западного заказчика, в случае других языков программирования эта цифра существенно ниже. Одним из факторов, приводящих к такой ситуации, является низкий уровень конкуренции между компаниями в России, что приводит к снижению требований к качеству программного обеспечения. Но ситуация постепенно меняется к лучшему: наши банки уже активно конкурируют в предоставлении своим клиентам качественного сервиса, и компании, занимающиеся информатизацией российских банков, активно используют Java-решения. Принято считать, что именно Java-разработчики на данный момент являются наиболее востребованными и высокооплачиваемыми среди программистов. И хотя это не вполне соответствует действительности (например, специалисты по SAP/R3 ценятся еще выше), в целом, если отбросить специализированные прикладные пакеты и ограничиться лишь языками общего назначения, картина получится вполне достоверная. Это дает основания считать, что Java-решения нашли свою нишу и претендуют на лидерство как в технологическом, так и в экономическом плане. Java-технологии и реинжиниринг интернет-проектов Не так давно я стал работать в компании, занимающейся созданием систем технической поддержки пользователей. Первая версия такой системы, как это происходит в большинстве случаев, создавалась под конкретного заказчика в качестве инструмента для решения конкретной определенной задачи, и лишь потом эволюционировала до уровня тиражируемого коммерческого продукта. Соответственно, для разработки первоначально была выбрана платформа, позволяющая быстро создавать работающие конкретные решения, - CGI/Perl. Со временем разработчики, принимавшие участие в проекте, начали сталкиваться с существенными проблемами. Интеграция в существующий код новых возможностей становилась все более и более затруднительной. Изменения, требовавшие реструктуризации программной архитектуры, было практически невозможно внести из-за отсутствия в проекте четкой компонентной модели и разделения обязанностей компонентов. В конце концов, это привело к фактической невозможности дальнейшего эволюционного развития проекта, и руководителем проекта было принято решение о реинжиниринге. В качестве новой платформы разработки были выбраны Java-технологии. Реинжиниринг программного проекта - процесс, по сложности сравнимый с созданием проекта с нуля. В случае изменения платформы разработки, перед тем, как начинать писать новый код, требуется провести колоссальную исследовательскую работу. И такая работа была проведена. Прежде всего, менеджерами проекта и системными аналитиками был написан объемистый список требований к новой версии программного продукта, занявший не одну сотню страниц. Этот документ включал в себя спецификации интерфейса и поведения системы, основанные на опыте работы с предыдущей версией и дополненные пожеланиями клиентов и разработчиков. На его основе и была создана объектная модель проекта - набор спецификаций, сверяясь с которым, разработчики могут реализовывать программные компоненты с таким поведением, которого от них ожидают пользователи, да и сами программисты. И лишь после того, как стали появляться первые спецификации объектной модели, а разработчики вдоволь наигрались с реализацией на Java прототипов ключевых компонентов, началось собственно кодирование. В отличие от процесса разработки с использованием языка Perl, теперь менеджеры проекта регулярно получают сведения о том, сколько и каких функций системы реализовано на данный момент, в каком состоянии сейчас кодирование того или иного модуля системы, и могут определить сроки завершения работ и критерии успеха. Ранее это казалось практически невозможным. Требования к системе по мере продвижения процесса разработки в значительной мере перерабатывались, но гибкая архитектура новой платформы позволяла безболезненно вносить эти изменения. Эта гибкость являлась прямым следствием тщательности первоначального проектирования. Чем четче определена методология разработки, тем легче вносить изменения на любом ее этапе, так как последствия этих изменений становятся предсказуемыми. Повысилась и надежность системы. Примененная компанией технология экстремального программирования (www.extremeprogramming.org) позволила заключить каждую программную функцию, являющуюся потенциальным источником ошибок, в защитную оболочку множества интенсивных тестов, которые программист создает перед тем, как написать реализацию этой функции. Таким образом, в проекте просто не существует неработающего кода - любая программная конструкция является результатом прохождения того или иного теста и удовлетворяет той или иной спецификации. Все это было бы невозможным, если бы не беспрецедентная взаимная поддержка Java и новых технологий программирования. Последние достижения идеологов программирования - адаптивные методологии разработки - прежде всего находят свое воплощение именно в русле Java. Справедливости ради стоит сказать, что они могут применяться и в проектах, реализуемых с использованием других языков программирования, в том числе и Perl. Но вся мощность этих методологий, приводящая к быстрому созданию качественных и надежных систем, проявляется лишь в языках, использующих большинство подходов объектно-ориентированной парадигмы, таких, как Smalltalk и Java. Андрей Голубев |
|
2000-2008 г. Все авторские права соблюдены. |
|