На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Программирование » Java

Java в Сети

С течением времени технологии Java все глубже проникают в мир Интернет. В свое время большой популярностью пользовались Java-апплеты, которые работают в окне браузера, но обладают возможностями, сопоставимыми с возможностями обычных программ.
Но в настоящее время в силу ряда причин апплеты не имеют для Сети такого значения, как Java-технологии, используемые при создании серверов.

Яков Сироткин

Предположим, что у вас родился ребенок (или коммерческая компания), и вы хотите, чтобы ваши друзья, родственники (или партнеры по бизнесу) имели возможность любоваться фотографиями (пресс-релизами) новорожденного. Проблема в том, что друзей и родственников довольно много, они живут в разных городах и странах, и кроме того, стоимость печати фотографий (прайсов, ежеквартальных отчетов) для всех них довольно внушительна.

В этой ситуации логично будет сделать небольшую HTML-страничку с информацией о своем детище и поместить ее на каком-либо бесплатном или не очень дорогом сервере, а затем по электронной почте разослать ее адрес всем, кому вы хотите показать свое творение. Для реализации этой идеи вполне достаточно статического HTML-кода.

Потом вы решаете сделать гостевую книгу, чтобы посетители сайта могли радовать вас своими пожеланиями. Для этого можно взять готовый CGI-скрипт (например, написанный на языке Perl) и установить его на сервер. Но рано или поздно и этого становится мало. Ребенок (компания) растет, фотоаппарат щелкает, количество фотографий (пресс-релизов) увеличивается настолько, что возникает необходимость организовывать их в каталоги, рубрики и альбомы. Кроме того, у друзей тоже рождаются дети (коммерческие проекты), и они тоже хотят сделать сайты, но им не хочется править HTML-код вручную, и нужен веб-интерфейс для администрирования все более и более сложных информационных структур.

Средства, предоставляемые статическим HTML, для этого уже не подходят. Количество скриптов стремительно увеличивается, стройные строчки Perl-кода по мере внесения исправлений превращаются в перловую кашу, и вот вы уже начинаете путаться в структуре собственного сайта.

Для того, чтобы этого не происходило, обычно применяют технологии объектно-ориентированного программирования (ООП). Создав объектную модель сайта, можно, к примеру, использовать один и тот же программный компонент в нескольких местах, что при благоприятных условиях может в несколько раз упростить процесс разработки. Но самое главное - концептуальная ясность и формализованность проекта значительно увеличиваются.

Существует великое множество объектно-ориентированных языков программирования, но для создания серьезных интернет-решений, вероятно, чаще всего используется язык Java (java.sun.com).

Java в Сети - не только сервлеты
Одна из особенностей языка Java - наличие большого количества библиотек, удовлетворяющих тщательно проработанным стандартным спецификациям. Примером такой библиотеки является стандартный механизм доступа к базам данных в Java - JDBC (Java Database Connectivity). Практически для любой СУБД, и даже для Microsoft Excel, существуют различные реализации JDBC. Это дает разработчику независимость от конкретной СУБД: если доступ к данным в программе осуществляется через интерфейс JDBC, то переход на другую СУБД может быть осуществлен простой заменой JDBC-драйвера. Учитывая тот факт, что базы данных активно используются в любом мало-мальски серьезном интернет-приложении, трудно переоценить необходимость наличия такого универсального механизма доступа к данным, как JDBC.

Еще одним из важных стандартов 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 и бизнес
Несмотря на специальные IT-отделы, корпоративные стандарты и стратегии развития, компьютерное оборудование и программное обеспечение любой крупной компании можно охарактеризовать одним словом - зоопарк. Мэйнфреймы соседствуют с персоналками, Unix-системы - с Windows-станциями, самые разнообразные сетевые протоколы, платформы, программы каким-то невероятно хитрым образом уживаются друг с другом, и все делают вид, что так и должно быть.

И как правило, ситуация редко меняется к лучшему. Проблема даже не в затратах на обновление парка компьютеров и программного обеспечения, нужно учитывать еще и то, что практически все сотрудники крупной компании на своих рабочих местах выполняют работу, которая приносит компании прибыль. Представьте, что в банк привезли новый компьютер и начали устанавливать на рабочее место операционистки: пока поставили, пока к сети подключили, пока иконки двигали, пока объясняли, где находится кнопка 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-технологий разработчики могут легко использовать решения друг друга. Это особенно верно в случае разработок с применением компонентных архитектур Java, таких как JMX, JavaBeans и EJB. Такие компоненты являются законченными программными модулями, предназначенными для решения определенных задач, и существует целый рынок распространяемых на коммерческой основе Java Beans и Enterprise Java Beans.

Кроме того, многие среды разработки для 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-технологий для создания интернет-решений. Например, если для сервера, на котором размещен статический сайт, критичными являются лишь скорость соединения с Интернетом и наличие свободного места на диске, то сайт, сделанный с применением Java-технологий, является полноценным приложением, которое требует для своего функционирования существенное количество процессорного времени. Для больших проектов это не имеет особого значения, так как затраты на разработку и поддержку программного обеспечения значительно превышают затраты на оборудование, но для маленьких сайтов это слишком дорогое решение.

Есть и проблемы, специфичные для России. Документация и книги переводятся на русский язык с существенным запозданием, основные сайты, посвященные Java-технологиям, также англоязычные. Поэтому, если вы хотите разрабатывать продукты серьезного уровня, необходимо, как минимум, уметь читать по-английски.

К сожалению, в какой-то степени из-за низкой цены использования программного обеспечения Microsoft решения на базе Java не слишком популярны у российских заказчиков. В нашей стране Java-программист с вероятностью примерно 80% работает на западного заказчика, в случае других языков программирования эта цифра существенно ниже. Одним из факторов, приводящих к такой ситуации, является низкий уровень конкуренции между компаниями в России, что приводит к снижению требований к качеству программного обеспечения. Но ситуация постепенно меняется к лучшему: наши банки уже активно конкурируют в предоставлении своим клиентам качественного сервиса, и компании, занимающиеся информатизацией российских банков, активно используют Java-решения.

Принято считать, что именно Java-разработчики на данный момент являются наиболее востребованными и высокооплачиваемыми среди программистов. И хотя это не вполне соответствует действительности (например, специалисты по SAP/R3 ценятся еще выше), в целом, если отбросить специализированные прикладные пакеты и ограничиться лишь языками общего назначения, картина получится вполне достоверная. Это дает основания считать, что Java-решения нашли свою нишу и претендуют на лидерство как в технологическом, так и в экономическом плане.

Java-технологии и реинжиниринг интернет-проектов
Описанная в начале статьи ситуация, когда возможностей традиционно используемых программных средств (таких, как CGI-скрипты) становится недостаточно, - весьма обыденное явление для компаний, занимающихся разработкой интернет-решений. По мере развития проекта изначальный выбор немасштабируемых средств разработки становится основным источником всевозможных проблем для программистов и пользователей, а в конечном итоге - практически прекращает всякую возможность дальнейшего совершенствования проекта. Тогда перед разработчиками встает необъятная по своей трудности задача реинжиниринга - переноса проекта на современную платформу разработки и его реструктуризация реструктуризации в соответствии с используемой в рамках этой платформы идеологией.

Не так давно я стал работать в компании, занимающейся созданием систем технической поддержки пользователей. Первая версия такой системы, как это происходит в большинстве случаев, создавалась под конкретного заказчика в качестве инструмента для решения конкретной определенной задачи, и лишь потом эволюционировала до уровня тиражируемого коммерческого продукта. Соответственно, для разработки первоначально была выбрана платформа, позволяющая быстро создавать работающие конкретные решения, - CGI/Perl.

Со временем разработчики, принимавшие участие в проекте, начали сталкиваться с существенными проблемами. Интеграция в существующий код новых возможностей становилась все более и более затруднительной. Изменения, требовавшие реструктуризации программной архитектуры, было практически невозможно внести из-за отсутствия в проекте четкой компонентной модели и разделения обязанностей компонентов. В конце концов, это привело к фактической невозможности дальнейшего эволюционного развития проекта, и руководителем проекта было принято решение о реинжиниринге. В качестве новой платформы разработки были выбраны Java-технологии.

Реинжиниринг программного проекта - процесс, по сложности сравнимый с созданием проекта с нуля. В случае изменения платформы разработки, перед тем, как начинать писать новый код, требуется провести колоссальную исследовательскую работу. И такая работа была проведена. Прежде всего, менеджерами проекта и системными аналитиками был написан объемистый список требований к новой версии программного продукта, занявший не одну сотню страниц. Этот документ включал в себя спецификации интерфейса и поведения системы, основанные на опыте работы с предыдущей версией и дополненные пожеланиями клиентов и разработчиков. На его основе и была создана объектная модель проекта - набор спецификаций, сверяясь с которым, разработчики могут реализовывать программные компоненты с таким поведением, которого от них ожидают пользователи, да и сами программисты.

И лишь после того, как стали появляться первые спецификации объектной модели, а разработчики вдоволь наигрались с реализацией на Java прототипов ключевых компонентов, началось собственно кодирование. В отличие от процесса разработки с использованием языка Perl, теперь менеджеры проекта регулярно получают сведения о том, сколько и каких функций системы реализовано на данный момент, в каком состоянии сейчас кодирование того или иного модуля системы, и могут определить сроки завершения работ и критерии успеха. Ранее это казалось практически невозможным.

Требования к системе по мере продвижения процесса разработки в значительной мере перерабатывались, но гибкая архитектура новой платформы позволяла безболезненно вносить эти изменения. Эта гибкость являлась прямым следствием тщательности первоначального проектирования. Чем четче определена методология разработки, тем легче вносить изменения на любом ее этапе, так как последствия этих изменений становятся предсказуемыми.

Повысилась и надежность системы. Примененная компанией технология экстремального программирования (www.extremeprogramming.org) позволила заключить каждую программную функцию, являющуюся потенциальным источником ошибок, в защитную оболочку множества интенсивных тестов, которые программист создает перед тем, как написать реализацию этой функции. Таким образом, в проекте просто не существует неработающего кода - любая программная конструкция является результатом прохождения того или иного теста и удовлетворяет той или иной спецификации.

Все это было бы невозможным, если бы не беспрецедентная взаимная поддержка Java и новых технологий программирования. Последние достижения идеологов программирования - адаптивные методологии разработки - прежде всего находят свое воплощение именно в русле Java. Справедливости ради стоит сказать, что они могут применяться и в проектах, реализуемых с использованием других языков программирования, в том числе и Perl. Но вся мощность этих методологий, приводящая к быстрому созданию качественных и надежных систем, проявляется лишь в языках, использующих большинство подходов объектно-ориентированной парадигмы, таких, как Smalltalk и Java.

Андрей Голубев
Впервые статья была опубликована в журнале "Мир Internet" (www.iworld.ru)

Другие разделы
C, C++
Java
PHP
VBasic, VBS
Delphi и Pascal
Новое в разделе
Базы данных
Общие вопросы
Теория программирования и алгоритмы
JavaScript и DHTML
Perl
Python
Active Server Pages
Программирование под Windows
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100