Java для веб разработки и создания веб-сервисов история создания и основные преимущества

Содержание материала:

Автор

Інформаційні управляючі системи та комп’ютерний моніторинг (ІУС КМ — 2013) / Збірка матеріалів IV Всеукраїнської науково-технічної конференції студентів, аспірантів та молодих вчених. — Донецьк, ДонНТУ — 2013, Том 2, с. 303-307.

Очень часто возникают ситуации, когда большому количеству пользователей необходимо предоставить доступ к некоторым данным, дать им возможность их получения и редактирования. Эти данные являются общими для всех пользователей и не могут располагаться на каждой клиентской машине. Для решения задач такого рода применяются веб-приложения Web-приложения, Web-application) — программные средства, предназначенные для автоматизированного выполнения действий на Web- серверах. При этом данные хранятся на сервере, там же при необходимости выполняется их программная обработка. По запросу необходимые данные предоставляются клиенту. Для обеспечения диалога с пользователем в веб- приложениях используются Web-браузеры. С одной стороны это представляет ряд преимуществ, с другой – накладывает определённые условия при выборе средств разработки интерфейсов таких приложений. В данной статье дан обзор технологий, позволяющих упростить создание веб-интерфейсов и их связывания с логической частью приложений.

Проведен анализ общих требований к проектированию интерфейсов [1]. В указанной в списке источников книге выделен ряд рекомендаций для создания «дружелюбного» к пользователю интерфейса. Можно выделить следующие из них: вместо создания отдельной страницы для редактирования данных предоставлять возможность их редактирования по месту; не требовать перезагрузки страницы при каждом действии пользователя, использовать контекстные инструменты.

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

Веб-приложения создаются в различных вариантах архитектуры клиент-сервер. В таком случае клиентом выступает браузер, а сервером — веб-сервер.

Логика веб-приложения распределена между сервером и клиентом, хранение и обработка данных осуществляется, преимущественно, на сервере, её представление в удобном для пользователя виде — в браузере. Обмен информацией происходит по сети. Общая структура веб-приложения приведена на рисунке 1.

Рисунок 1 – Общая структура веб-приложения

Таким образом, чаще всего веб-приложения состоят как минимум из трёх основных компонентов.

Серверная часть веб-приложения — это программа или скрипт на сервере, обрабатывающая запросы пользователя (точнее, запросы браузера). Для программирования серверной части веб-приложения могут использоваться различные языки программирования: Java, PHP, Perl, Ruby, платформа .NET (языки VB.NET, C# и другие, поддерживаемые .NET). В рамках данной статьи предполагается, что серверная часть написана на языке Java. При каждом переходе пользователя по ссылке браузер отправляет запрос серверу. Сервер обрабатывает данный запрос, запуская некоторый скрипт, который формирует веб-страницу, описанную на языке HTML, и отсылает клиенту по сети. Браузер тут же отображает полученный в виде очередной веб-страницы результат.

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

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

Технологии создания клиентской части

Основной язык, которым описывается графический интерфейс веб-приложения — это HTML. Данный язык описывает структуру веб-страницы, размещение на ней компонентов. Оформление веб-страниц, их стиль и цветовая схема описываются в таблицах стилей — CSS. Для «оживления» графического интерфейса, придания ему динамичности, используются дополнительные технологии: скрипты JavaScript, а также встроенные в веб-страницу компоненты, созданные на Flash, Java или Silverlight. Все эти элементы веб-страницы могут взаимодействовать между собой: программа, написанная на JavaScript и выполняющаяся на веб- странице, может управлять встроенными в страницу компонентами, тем самым реализуя пользовательский интерфейс с богатыми возможностями.

Отсутствие необходимости полностью перезагружать страницу после каждого получения данных от сервера может существенно ускорить работу веб-приложения. Такая концепция имеет название Asynchronous JavaScript and XML (асинхронный JavaScript и XML, Ajax). При использовании данного подхода динамические запросы к серверу происходят без видимой перезагрузки веб-страницы: пользователь не замечает, когда его браузер запрашивает данные.

Преимущества использования фреймворка GWT

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

Google Web Toolkit (GWT) — это фреймворк с открытым исходным кодом, который позволяет Java разработчикам легко разрабатывать веб-приложения на Ajax без углубленного изучения JavaScript и браузерной разработки.

GWT предоставляет разработчику специальное Java API и позволяет разрабатывать графические пользовательские интерфейсы (GUI), избегая работы с JavaScript и абстрагируясь от протокола HTTP и DOM моделей, лежащих в основе браузеров. Все это достигается использованием GWT компилятора, который генерирует JavaScript из написанного на Java кода интерфейса. Таким образом, скомпилированное GWT приложение состоит из фрагментов HTML, XML и JavaScript. Для связи клиентской части приложения с веб-сервером в арсенале GWT есть Remote Procedure Call (RPC) – механизм удаленного вызова процедур, который осуществляет простой обмен Java- объектами между клиентом и сервером в обе стороны.

GWT также позволяет разработчикам эффективно тестировать и отлаживать приложения без необходимости преобразования приложений в JavaScript и развертывания их на веб-сервере. GWT позволяет приложениям быть запущенными в так называемом «Хостинг режиме» (“Hosted Mode”), при этом JVM исполняет код GWT приложения в виде Java байт-кода внутри встроенного браузера. После проверки и тестирования GWT приложений в «Хостинг режиме», можно скомпилировать исходный код Java в JavaScript и развернуть приложение. GWT приложения, которые были развернуты, называются запущенными в «Веб-режиме»(“Web Mode”).

Таким образом, и клиентская и серверная части веб-приложения пишутся на Java. Затем GWT компилятор преобразует клиентские Java классы в совместимые с браузером JavaScript и HTML. После чего появляется возможность развернуть эти JavaScript и HTML на веб-серверах, так что конечные пользователи будут видеть только веб-версию приложения, в то время как классы серверной стороны могут быть развернуты на Tomcat, Jetty или каком-либо ином сервлет-контейнере

Создание интерфейса веб-приложения с использованием Vaadin

Vaadin – это платформа веб-приложений с открытым исходным кодом для создания полнофункциональных интернет приложений. В противоположность библиотекам JavaScript и решениям на основе браузеров/подключаемых модулей, в ее состав входит архитектура на стороне сервера, что означает выполнение большей части программной логики на серверах. Технология Ajax используется на стороне браузера для обеспечения функционально насыщенного и интерактивного интерфейса пользователя. На стороне клиента Vaadin строится на основе GWT и может быть расширена с ее помощью.

Основным элементом Vaadin является библиотека Java, рассчитанная на упрощение создания и обслуживания высококачественных веб-интерфейсов пользователей. Основная идея сервероцентричной модели программирования Vaadin состоит в том, что она позволяет забыть о сети и программировать интерфейсы пользователей точно так же, как программируются все настольные приложения Java, то есть с помощью обычных наборов средств, таких как AWT, Swing или SWT – только еще проще. Сервероцентричная модель программирования позволяет Vaadin взять на себя управление пользовательским интерфейсом в браузере и связь Ajax между браузером и сервером. Естественно, подход Vaadin позволяет не тратить силы на изучение и отладку технологий на стороне браузеров, таких как HTML или JavaScript.

Библиотека Vaadin четко отделяет представление пользовательского интерфейса от логики и позволяет разрабатывать их по отдельности. Подход Vaadin состоит в использовании тем, определяющих внешний вид приложений. Темы контролируют внешний вид интерфейсов пользователей посредством шаблонов CSS и (при желании) HTML. Vaadin предоставляет темы по умолчанию, но при необходимости можно создавать свои собственные. В серверной части Vaadin используется Google Web Toolkit (GWT) для визуализации интерфейса пользователя в браузере. GWT идеально подходит для реализации дополнительных компонентов интерфейса и логики взаимодействия в браузере, тогда как Vaadin обрабатывает логику самого приложения на сервере. Платформа Vaadin разработана с расчетом на расширяемость и позволяет легко использовать любые компоненты GWT от сторонних производителей в дополнение к компонентам, предлагаемым в Vaadin

Выводы

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

Список источников

1. Скотт Б., Нейл Т. Проектирование веб-интерфейсов. – Пер. с англ. – СПб.: Символ-Плюс, 2010. 352 с., ил.

Концепция веб-сервисов. Реализация в Java-технологиях

Kратко рассмотрены основные положения архитектуры веб-сервисов. Освещена разработка веб-сервиса и его клиентов. Пример основывается на реализации концепции веб-сервисов в рамках Java-технологий (Apache AXIS). (Внимание! Статья написана в начале 2003, в ней рассматривается Apache AXIS 1.0. Apache AXIS 1.1 и выше несколько отличны от него. Поэтому имейте под рукой документацию к AXIS. 😉

Cодержание

Введение

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

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

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

Основные положения модели веб-сервисов

Веб-сервисы являются концепцией создания таких приложений, функции которых можно использовать при помощи стандартных протоколов Интернет. В настоящее время эту концепцию применяют и развивают многие ведущие компании в IT-области. Концепция веб-сервисов реализуется при помощи ряда технологий, которые стандартизованы World Wide Web Consortium (W3C).

Взаимосвязь этих технологий можно условно представить следующим образом.

Веб-сервисы являются одним из вариантов реализации компонентной архитектуры.

XML является фундаментом для создания большинства технологий, связанных с веб-сервисами.

Для удаленного взаимодействия с веб-сервисами используется Simple Object Access Protocol (SOAP) [3]. SOAP обеспечивает взаимодействие распределенных систем, независимо от объектной модели, операционной системы или языка программирования. Данные передаются в виде особых XML документов особого формата.

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

Наиболее часто реализуется передача SOAP сообщений по протоколу HTTP. Также широко распространено использование в качестве транспортного протокола SMTP, FTP, TCP.

Согласно определению W3C, «WSDL — формат XML для описания сетевых сервисов как набора конечных операций, работающих при помощи сообщений, содержащих документно-ориентированную или процедурно-ориентированную информацию» [4]. Документ WSDL полностью описывает интерфейс веб-сервиса с внешним миром. Он предоставляет информацию об услугах, которые можно получить, воспользовавшись методами сервиса, и способах обращения к этим методам.

Технология Universal Description, Discovery and Integration (UDDI) предполагает ведения реестра веб-сервисов. Подключившись к этому реестру, потребитель сможет найти веб-сервисы, которые наилучшим образом удовлетворяют его потребностям. Технология UDDI дает возможность поиска и публикации нужного сервиса, как человеком, так и программой-клиентом. Поиск и публикация в реестре предоставляется программе-клиенту как набор веб-сервисов реестра UDDI.

Веб-сервисы позиционируются как программное обеспечение промежуточного слоя. Использовать веб-сервисы могут как клиентские приложения, непосредственно работающие с пользователем, так и другие приложения (в том числе и другие веб-сервисы).

Веб-сервисы размещаются на серверах приложений.

Разработчики концепции веб-сервисов предлагают следующие сценарии применения веб-сервисов:

Веб-сервисы как реализация логики приложения (бизнес-логики). То есть, создание нового приложения бизнес-логика, которого реализуется в веб-сервисе.

Веб-сервисы как средство интеграции. То есть, использование веб-сервиса как способа доступа удаленных клиентов к внутренней ИС компании, или для организации взаимодействия компонента (например, EJB, COM-компонента) с различными удаленными клиентами.

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

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

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

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

Учебный пример

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

Пример веб-сервиса, созданный в практической части данной работы, носит учебный характер. И сам веб-сервис и его клиенты упрощены таким образом, чтобы показать основные моменты создания и использования веб-сервисов, не отвлекая на моменты, не связанные непосредственно с концепцией веб-сервисов.

При создании примера я ориентировался на широко распространенные программные продукты, а также старался, чтобы они не были сложны в использовании. Поэтому была выбрана реализация архитектуры веб-сервисов на базе AXIS и библиотека SOAP::Lite (использовалась в данной работе для создания клиентских приложений на Perl-е).

Итак, для изучения примера потребуются следующие знания:

  • базовое знание языка Java;
  • базовые знания о веб-приложениях в Java-технологиях;
  • понимание синтаксиса Perl-а.

Постановка задачи

Пусть существует FAQ(Частые Вопросы и Ответы) по некоторой тематике. В него включаются часто задаваемые вопросы на форумах по этой тематике. Ответы в FAQ создаются на основе ответов участников форумов. Те, чьи ответы используются в FAQ, включаются в список FAQmaker-ов.

Задачей нашего веб-сервиса будет предоставление удаленному приложению информации о FAQmaker-ах. Такой информацией будет список FAQmaker-ов, наиболее активные FAQmaker-ы, данные по конкретному FAQmaker-у (выдаваемые, например, по его имени).

Необходимое ПО

Для разработки примера веб-сервиса использовалась реализация архитектуры веб-сервисов в Java-технологиях. Такой реализацией является проект Apache Software Foundation под названием AXIS (Apache eXtensible Interaction System). AXIS включает в себя контейнер для размещения и использования веб-сервисов на серверах приложений, утилиты для работы с WSDL-описаниями, классы для разработки веб-сервисов и их клиентов.

Для работы AXIS требуется парсер XML. В документации к AXIS рекомендуется использовать Xerces.

Для организации сервера приложений для веб-сервисов, кроме AXIS понадобится JSP/Servlet контейнер, поддерживающий спецификацию 2.2 для сервлетов. Я предлагаю использовать Tomcat 4.

Также необходимо Java JDK 1.3 или выше.

При разработке клиентов веб-сервиса использовался Perl 5.6 c библиотекой SOAP::Lite. Для ОС Windows 98/Windows 2000/Windows XP я предлагаю использовать ActivePerl 5.6.

Использовать какую-либо особенную среду разработки (IDE) для создания веб-сервиса и его клиентов необязательно.

Разработка веб-сервиса

Как сказано в постановке задачи, веб-сервис должен предоставлять своему клиенту данные по конкретному FAQmaker-у, имена наиболее активных FAQmaker-ов, а также полный список FAQmaker-ов.

Примем решение, что данные по конкретному FAQmaker-у веб-сервис выдает в виде экземпляра класса MakerInfo. Класс MakerInfo содержит 2 поля: имя (FAQmaker) и число его ответов (Answer), которые включены в FAQ.

Имена наиболее активных FAQmaker-ов веб-сервис возвращает как массив строк, а полный список FAQmaker-ов выдается веб-сервисом как массив объектов MakerInfo.

Таким образом, наш веб-сервис можно представить в виде класса FaqMakerService.

Класс FaqMakerService и является исходным кодом нашего веб-сервиса.

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

Для того, чтобы передавать данные по протоколу SOAP, сервер должен иметь механизм упаковки этих данных в набор тегов сообщения SOAP. Протокол SOAP предусматривает автоматическое преобразование для простых типов, а также для массивов, для элементов которых определен механизм преобразования.

Веб-сервис FaqMakerService передает клиенту объекты MakerInfo, поэтому для класса MakerInfo необходимо организовать механизм сериализации. Для нашего случая AXIS предлагает использовать так называемый «beanMapping». Для использования «beanMapping» полный код класса MakerInfo должен реализовывать интерфейс java.io.Serializable.

Механизм «beanMapping» — наиболее простой в использовании механизм преобразования. При его использовании достаточно убедится, что передаваемый сложный тип реализует интерфейс java.io.Serializable, а также описать при развертывании веб-сервиса имя типа и пространство имен, к которому он относится.

Создание веб-приложения

Для использования веб-сервиса FaqMakerService, его необходимо разместить на сервере приложений. Веб-приложение, в которое войдет веб-сервис, должно иметь доступ к AXIS, а также к парсеру XML.

Приложение располагается в каталоге приложений сервера (обычно «каталог Tomcat»/webapp), в отдельном подкаталоге с именем этого приложения.

AXIS размещается на сервере приложений как сервлет. JAR-файлы, составляющие AXIS , помещаются в каталог веб-приложения: в «приложение»/WEB-INF/lib/. В качестве парсера XML используется xerces. Парсер может быть отдельным для приложения и располагаться в каталоге приложения: в «приложение»/WEB-INF/lib/, или использоваться совместно с другими приложениями на сервере и располагаться вместе с другими совместно используемыми JAR-файлами (обычно «каталог Tomcat»/common/lib/).

Кроме того, необходимо настроить параметры приложения в «приложение»/WEB-INF/web.xml (зарегистрировать AXIS, открыть доступ к сервисам приложения, указать, как веб-серверу передавать WDSL-файлы).

Для веб-сервиса FaqMakerService будем использовать веб-приложение webservice, доступ к веб-сервисам этого приложения откроем как /webservice/services/*.

Настройки AXIS находятся в файле /webservice/WEB-INF/server-config.wsdd (server-config.wsdd сконфигурированный для нового приложения надо скопировать из дистрибутива AXIS). В нем указываются установленные веб-сервисы. По умолчанию установлен веб-сервис для администрирования AXIS. Теперь при обращении к /webservice /services/* можно увидеть сообщения от AXIS.

Установка веб-сервиса

Для установки веб-сервиса FaqMakerService необходимо описать для AXIS следующую информацию:

  • Имя, которое веб-сервис будет иметь в веб-приложении (urn:FaqMaker).
  • Тип сервиса (java:RPC).
  • Класс, реализующий веб-сервис (FaqMakerService).
  • Методы, предоставляемые сервисом (mostActiveMaker getMakerList getMakerInfo).

Также надо указать механизм сериализации для класса MakerInfo.

Информация для развертывания веб-сервиса содержится в специальном файле — deployment descriptor-е (*.wsdd). Deployment descriptor веб-сервиса FaqMakerService — файл FaqMaker.wsdd

Классы (откомпилированные), которые реализуют веб-сервис, надо скопировать в каталог веб-приложения, в /WEB-INF/classes.

Для осуществления развертывания веб-сервиса нужно использовать утилиту AdminClient:

Установленный веб-сервис появляется в server-config.wsdd. Теперь его можно использовать.

3.6 Использование веб-сервиса

Для использования веб-сервиса клиент должен обладать следующей информацией:

  • адрес, по которому расположен сервис;
  • имя сервиса;
  • метод и его параметры.

В простейшем случае можно задать эту информацию при разработке клиента

С учетом сказанного можно создать простейший клиент для веб-сервиса urn:FaqMaker. Ниже приведен исходный код, где получается информация по FAQMaker-у зарегистрированному как «Ivanov».

Скрипт FaqMakerDirectClient.pl — клиент, который использует все методы веб-сервиса urn:FaqMaker.

Этот и все приведенные ниже клиенты веб-сервиса urn:FaqMaker всего лишь выводят информацию, полученную от веб-сервиса. Однако они позволяют продемонстрировать различные способы подключения к веб-сервису, а также преимущества и недостатки этих способов.

В состав AXIS входит утилита tcpmon, которая позволяет следить за обменом сообщений между клиентом и веб-сервисом.

В настройке утилиты указывается прослушиваемый порт и адрес, на который надо перенаправлять сообщения. Tcpmon позволит нам пронаблюдать за взаимодействием квинта FaqMakerDirectClient.pl и веб-сервиса urn:FaqMaker.

Сообщения SOAP передаются между клиентом и веб-сервисом в теле сообщений HTTP.

Рассмотрим использование клиентом метода getMakerInfo().

Вот фрагмент вызова метода getMakerInfo():

Вызываемый метод и его параметры передаются внутри тела сообщения SOAP (тег ). Название веб-сервиса используется как указание пространства имен, к которому относится название метода.

Вот фрагмент ответа метода getMakerInfo():

Название вызванного метод и его результат передаются внутри тела сообщения SOAP (тег ). Тег определяет ответное сообщение метода getMakerInfo(), а тег определяет результат этого метода. Результатом метода является сложный структурированный объект MakerInfo, его содержимое вынесено из тега .

Взаимодействие клиента и веб-сервиса при использовании метода getMakerList() и метода mostActiveMaker() имеют некоторые отличия.

Во-первых, оба метода не имеют входных параметров, поэтому для них, при вызове метода веб-сервиса, тег, определяющий вызываемый метод имеет пустое тело.

Во-вторых, оба метода выдают результат в виде массива. Метод mostActiveMaker() возвращает массив строк. Этот массив передается внутри .

Метод getMakerList() возвращает массив объектов MakerInfo.

Содержимое элементов массива объектов MakerInfo вынесено в тег .

Ошибки при работе клиента с веб-сервисом

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

Если ошибок не было, то эти теги отсутствуют в сообщении.

Покажем реакцию веб-сервиса urn:FaqMaker на неверный вызов метода.

FaqMakerDirectClient_Fault.pl — клиент, вызывающий несуществующий метод и метод с неверными параметрами.

Использование веб-сервиса при помощи WSDL-описания

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

Клиент может использовать WSDL-описание в виде файла, хранящегося на жестком диске вместе с клиентской программой, а также в виде веб-ресурса.

AXIS может создать по запросу WSDL-описание для установленных веб-сервисов. Для получения WSDL-описания нужно обратится в браузере по адресу

Методы веб-сервиса urn:FaqMaker используют сложные (комплексные) типы данных: объекты класса MakerInfo, массив объектов класса MakerInfo, массив строк. Эти комплексные типы имеют описание в WSDL-документе для веб-сервиса urn:FaqMaker.

Скрипт FaqMakerWSDLClient.pl — клиент, который использует веб-сервис urn:FaqMaker при помощи его WSDL-описания. Ниже приведен фрагмент скрипта FaqMakerWSDLClient.pl

Очевидно, что использование WSDL-документа имеет существенные преимущества по сравнению с прямым указанием местоположения, имени, методов и параметров веб-сервиса:

  • Возможна проверка правильности имен методов, числа и типов параметров для методов веб-сервиса на стороне клиента.
  • Возможны смен имени, местоположения веб-сервиса без изменения клиентского приложения.

Скрипт FaqMakerWSDLClient_badmethod.pl демонстрирует попытку использования неверного имени метода и неправильных входных параметров.

Замечания по учебному примеру

Пример веб-сервиса носит учебный характер, поэтому класс FaqMakerService, реализующий веб-сервис, намеренно упрощен, в нем не используется соединение с БД, или получение данных из другого источника. Клиенты не производят каких-либо особенных действий, а просто выводят результат, полученный из метода веб-сервиса.

Однако, используя знания, полученные при прочтении данной работы, можно создать свой веб-сервис и клиентов с необходимой функциональностью. Стоит отметить, что работа веб-сервиса с БД (или использование EJB-компонента) осуществляется так же как в сервлетах и JSP-страницах.

Знания, полученные при изучении веб-сервиса FaqMakerService и его клиентов из данной работы, можно применить как при разработке своих веб-сервисов и клиентов в рамках Java-технологий, так и при работе с веб-сервисами на других платформах.

В архиве «source4ws.zip» находятся исходные тексты веб-сервиса, его клиентов, а также deployment descriptor, WSDL-описание и bat-файлы для компиляции, установки веб-сервиса на сервере приложений.

Заключение

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

В работе продемонстрировано создание несложного веб-сервиса, взаимодействие с ним клиентских приложений как с явным заданием веб-сервиса и метода, так и с использованием описания сервиса в виде WSDL-документа.

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

Java WEB

При разработке WEB приложения можно использовать одну из наиболее популярных технологий, к которым следует отнести Java Servlets, Java Server Page, PHP, ASP.NET, Node.js. В статье приводятся преимущества и недостатки данных технологий при разработки Web приложения.

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

Схематично логика работы WEB приложения представлена на рисунке.

Как следует из рисунка, работа приложений в облаке происходит в три основных этапа:

  • Запрос клиента. Браузер (клиент) инициирует запрос к серверной части WEB-приложения.
  • Обработка запроса сервером. После получения запроса сервер приложения проводит обработку запрашиваемой информации.
    Если запрашивается статический ресурс типа страницы HTML, рисунок, документ, то данная информация форматируется согласно протоколу HTTP и передается клиенту в качестве ответа.
    Если требуется динамический ресурс, то запрос передается на обработку соответствующему серверному приложению («контейнеру» WEB приложения), где и происходит дальнейшая обработка параметров запроса.
  • Ответ клиенту. После обработки запроса и формирования ответа, данные передаются браузеру (клиенту) с использованием протокола HTTP. Ответ содержит данные (обычно в виде HTML кода, иногда двоичные данные), а также дополнительные параметры в заголовке HTTP ответа.

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

Однако наличие сложности разработки WEB приложения не ограничивается только сессией работы пользователя. Для ускорения разработки серьезных WEB приложений используются различные дополнительные фреймворки. Таким образом, чем больше возможностей предоставляет платформа, тем быстрее и эффективнее может вестись разработка.

Выбор технологии

Какую выбрать технологию для разработки WEB приложения целиком и полностью зависит от руководителя проекта (конструктора, разработчика). Можно, конечно, освоить новую, самую модную на текущий момент технологию, для расширения своего кругозора и разработки в ней еще одного приложения. Это особенно оправданно, если за все это платят хорошие деньги. Но чтобы стать после этого хорошим специалистом в данной области требуется значительное время.

Большой проект (WEB приложение) в конечном итоге может оказаться «провальным». Нет, не то, чтобы его не выполнили и не смогли сдать заказчику. Нет это все как раз со скрипом прошло успешно; ведь и заказчику порой нужно списать деньги, чтобы получить в следующем году не меньше. Но эта уже другая тема — как сдавать проект заказчику. Просто WEB приложением не стали пользоваться и оно умерло, не успев родиться.

В каком случае проект может оказаться неудачным, с чем это может быть связано? Может быть с неумелым управлением? Или с неправильным выбором платформы, о чем стало известно на последнем этапе. Причин может несколько, а виновных нет. Как известно, только у Побед много родителей, а вот Поражение всегда сирота.

Выбор конкретного подхода для разработки WEB приложения полностью зависит от руководителей проектов (конструкторов, разработчиков и т.п.), их опыта и знаний. Трудно сказать, что та или иная технология может решить все проблемы. У каждой есть определенные преимущества и недостатки.

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

Серверная часть приложения

Для различных платформ создания WEB приложений необходимо выделить два основных существующих подхода к разработке серверной части:

  1. Формирование кода в виде текста определенного формата.
  2. Встраивание кода в определенные шаблоны.

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

Второй подход использует оформленные особым образом шаблоны страниц, что позволяет вставлять в них участки кода. Этот подход особенно эффективен при создании WEB приложений, основная информация в которых статична, а динамическая информация может быть сгенерирована простыми программными конструкциями. При разработке больших систем этот вариант усложняет взаимодействие между компонентами и затрудняет реализацию сложной архитектуры. Также он менее эффективен по производительности и ограничивает возможности по реализации сложных страниц. Примерами данного подхода являются наиболее популярные на данный момент технологии PHP, ASP, JSP.

Наиболее важные требований, выдвигаемые при создании сложных Web систем, наличие которых делает систему привлекательной для использования:

  • платформная независимость;
  • язык реализации;
  • производительность, масштабируемость;
  • возможности расширения и интеграции;
  • простота использования, наличие средств разработки;
  • наличие необходимых программных библиотек;

Таким образом определены требования, необходимые для платформы разработки. Далее рассматриваются наиболее популярные на данный момент платформы, их особенности

Common Gateway Interface, CGI

Технология Common Gateway Interface (CGI) в отличии от остальных рассматриваемых технологий является наиболее низкоуровневой. Кроме этого данная технология является стандартом интерфейса, который служит для связи внешней программы с WEB сервером.

Протокол CGI разработан таким образом, чтобы можно было использовать любой язык программирования, который работает со стандартными устройствами ввода/вывода. Так как данная возможность присутствует на уровне операционной системы, то, если не требуется сложный скрипт, его можно оформить в виде командного файла.

Основные достоинства и недостатки технологии CGI :

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

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

CGI программа представляет из себя готовый к исполнению файл, что препятствует легкому расширению системы.

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

Java Servlets

Технология Java Servlets (сервлеты) была разработана компанией Sun Microsystems, чтобы использовать преимущества платформы Java для решения проблем технологии CGI и API расширений сервера. Технология решает проблему производительности, выполняя все запросы как потоки в одном процессе. Сервлеты не зависят от платформы поскольку выполняются внутри Java Virtual Machine (JVM), и могут легко разделять ресурсы.

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

Сервлет является классом Java должен быть выполнен внутри Java VM. «Контейнер» WEB приложения типа Tomcat загружает класс сервлета при первом обращении к нему, либо сразу при запуске сервера согласно настройки конфигурации. Далее сервлет остается загруженным для обработки запросов, пока он не выгружается явным образом, либо до остановки контейнера.

Технология сервлетов является распространенной и может быть использована со всеми популярными WEB серверами, выполняющими функции контейнера сервлетов (Apache Tomcat, Java Web Server от Sun).

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

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

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

Java Server Page, JSP

Технология Java Server Pages (JSP) от компании Sun Microsystems является надстройкой над технологией Java Servlets, обеспечивающая более быструю и простую разработку WEB приложений с помощью использования шаблонов. Для понимания архитектуры и преимуществ JSP необходимо знать технологию Java Servlets, поскольку они тесно связаны.

Страницы JSP представляют из себя шаблоны страниц, схожие с шаблонами РНР и ASP. Основным отличием от других подобных технологий является то, что код, находящийся внутри страницы, предварительно компилируется в Java Servlet. Статические участки шаблона преобразуются в вызовы к функциям для их помещения в поток вывода. Код компилируется так, как если бы он находился внутри сервлета. Компиляция JSP страниц в сервлеты проводится один раз — либо при первом обращении к странице, либо при запуске контейнера сервлетов.

Технология JSP удачно объединяет все преимущества Java платформы b шаблонный подход к построению сайтов. Благодаря этому технология получила широкое распространение как среди профессиональных коммерческих разработчиков, так и при создании открытых бесплатных проектов.

Важным шагом к расширению шаблонного подхода стали так называемые библиотеки тэгов (tag libraries). Это гибкая возможность интегрировать стандартные, сторонние, или собственные программные компоненты в страницы. Простота создания и использования привели к большой популярности библиотек тэгов.

Технология JSP не привязана к конкретной аппаратной или программной платформе благодаря работе на основе Java. То есть JSP являются отличным решением для использования в гетерогенных средах.

Производительность технологии ограничена объективными особенностями архитектуры. Во-первых, страницы должны быть откомпилированы в сервлеты, но только один раз при первом к ним обращении. Во-вторых сервлеты выполняются в JVM, т.е. в режиме интерпретации. Однако эти ограничения компенсируются дополнительными возможностями. Так современные WEB «контейнеры» поддерживают кластеризацию серверов, что перекладывает нагрузку на аппаратное обеспечение. Это является экономически оправданным и простым решением.

Основными достоинствами JSP является простота разработки, характерная для шаблонного подхода, наличие большого количества сторонних библиотек, легкость их использования, мощные и разнообразные среды разработки. Благодаря всем этим факторам JSP является наиболее перспективной базовой технологией разработки при создании Web — сайтов. Однако при создании сложных WEB систем ограничения, накладываемые шаблонным подходом становятся серьезным препятствием к развитию.

Personal Home Page, PHP

Технология Personal Home Page (PHP) получила широкое распространение благодаря поддержке самых популярных платформ своей и бесплатности. Она базируется на принципе построения страниц на основе шаблонов. Страницы РНР имеют вид обычных HTML страниц, в которые могут быть включены специальные тэги вида . Между тэгами вставляются строки программного кода на специальном языке сценариев РНР.

Основные достоинства и недостатки платформы PHP :

  • Применяемый в РНР язык прост и удобен, однако не является в полном смысле объектно-ориентированным; Для РНР существуют обширные библиотеки, а также масса встроенных функций для решения самых разнообразных задач.
  • При использовании РНР с Web сервером Apache есть возможность эффективного исполнения ядра, как расширения сервера. В остальных случаях производительность платформы невысока. Собственных средств масштабирования РНР не имеет, все возможности по кластеризации целиком ложатся на WEB сервер и разработчиков.
  • Возможности интеграции ограничены включением модулей и использованием внешних функций, что не соответствует современным требованиям.

Хранение всего кода в файлах-страницах приводит к затруднению разделения бизнес-логики и интерфейса при создании больших систем.

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

Технология Microsoft .NET и среда ASP.NET

Технология .NET является последней разработкой компании Microsoft и заявлена как новый этап в развитии средств взаимодействия между приложениями. В настоящий момент она доступна в качестве дополнения .NET Framework к семейству операционных систем Microsoft Windows. Также продолжаются работы по созданию и совершенствованию технологии .NET Framework на других операционных системах.

Основой .NET является Common Language Runtime (CLR общая среда исполнения языков), опирающаяся на системные службы операционной системы и управляющая выполнением кода, написанного на любом языке программирования. Набор базовых классов дает доступ к сервисам платформы, которые можно использовать при программировании. CLR и базовые классы вместе составляют основу .NET платформы.

NET предлагает такие высокоуровневые сервисы для разработки WEB приложений как :

  • ASP .NET — новая версия ASP, позволяющая использовать любой (.NET совместимый) язык для программирования Web страниц;
  • Windows Forms и Web Forms — набор классов для построения пользовательского интерфейса локальных и WEB-ориентированных приложений.

Важной составляющей частью платформы .NET является обновленная среда ASP.NET (ранее использовалось ASP+). В ее основе лежит новая платформа, и основными языками программирования для нее выбраны С# и Visual Basic, вместо бывших скриптовых языков. В то же время, новая технология позволяет писать ASP страницы на любом подходящем языке программирования.

В технологию ASP.NET заложено все, чтобы сделать весь цикл разработки WEB приложения более быстрым, а поддержку проще. Основные возможности ASP.NET.

  1. Компилирование кода при первом обращении.
  2. Широкий выбор библиотек компонентов, поставляемых с .NET.
  3. Поддержка среды разработки Visual Studio.NET.
  4. Языковая независимость в пределах платформ для которых реализована общая языковая среда исполнения.
  5. Возможности расширения с помощью мультипроцессорных и кластерных решений.
  6. Новые возможности по обработке ошибок.
  7. Объектно-ориентированные языки разработки (С#).

Вместе с созданием технологии ASP.NET появились новые возможности по разработке WEB систем, отвечающие всем современным требованиям и позволяющие значительно ускорить и упростить разработку сложных приложений. Однако ASP.NET сильно привязана к серверу IIS, и, хотя архитектура .NET позволяет перенести приложения ASP.NET на другую платформу, на данный момент реальная возможность отсутствует.

Топ-пост этого месяца:  Как правильно удалять (деинсталлировать) плагин в WordPress

Таким образом, многоплатформенность пока еще не может быть удовлетворена платформой .NET. Однако необходимо отметить, что такая система должна иметь возможности интеграции с платформой .NET (особенно WEB сервисы).

Node.js

Согласно Википедии Node или Node.js — это серверная реализация языка программирования JavaScript, основанная на движке V8. Предназначена Node для создания масштабируемых распределённых сетевых приложений, таких как WEB сервер. В отличие от большинства программ с использованием JavaScript, Node.js исполняется не в браузере клиента, а на стороне сервера.

Несомненно, Node.js и JavaScript имеют существенные отличия. В первую очередь Node.js — это платформа для разработки веб приложений, а JavaScript — это язык. Опять же под JavaScript подразумевают скрипт, выполняемый на стороне клиента (в браузере), а Node.js выполняется на сервере. То есть, Node.js просто другой контекст : он позволяет запускать JavaScript-код вне браузера.

Чтобы код JavaScript выполнился вне браузера (на backend), он должен быть интерпретирован. Именно это и делает Node.js. Для этого он использует движок V8 от Google — ту же самую среду исполнения для JavaScript, которую использует браузер Google Chrome.

Основные недостатки Node.js

1. Отсутствие полноценной IDE. Существуют плагины для Eclipse и NetBeans, есть частичная поддержка и в других IDE, но назвать их полноценными решениями на данный момент нельзя. Особый интерес представляет Cloud9 IDE для разработки на JavaScript прямо в браузере. Эта IDE быстро развивается и уже активно используется многими Node.JS разработчиками.

2. Необходимость перезапуска приложения после внесения изменения. Несмотря на существование утилит, автоматизирующих данный процесс, некоторое время на это всё равно уходит. Для сравнения, при использовании шаблонного подхода для разработки интерфейса (JSP, PHP) перезапуск приложения не требуется. Но если вносятся изменения к примеру в JavaBean или servlet, то также потребуется перезапуск WEB-приложения, и происходит это намного дольше.

Контроль за уечкой памяти. С этим сталкиваются начинающие Node.JS. За памятью надо следить всегда и везде, но быстро живущие PHP-скрипты или небольшой клиентский JavaScript сильно расслабляют. В таких приложениях многие разработчики особо не предают значения потере нескольких килобайт памяти, а некоторые вообще не следят за этим показателем. Node.JS таких поблажек не делает. Приложение на Node.JS работает долго, и в случае утечки, каждый запрос к сайту будет уносить с собой кусочек памяти, которая очень быстро закончится, что приведёт к известным последствиям. Специфика JavaScript также располагает к появлению этого типа ошибок.

Возврат ошибок из асинхронного кода. Например, в PHP весь код выполняется синхронно, поэтому отловить ошибку на любом уровне вложенности можно с помощью конструкции try-catch. Но в Node.js большая часть кода работает асинхронно (операции ввода/вывода). При этом исключительные ситуации, как правило, возникают не при вызове метода, а при работе его callback’а, который выполняется уже вне конструкции try-catch. Для передачи информации об ошибках в Node.JS принято использовать первый параметр callback-функции. Т.е. если у нас возникла ошибка, мы вызываем callback-функцию либо с одним единственным параметром, описывающем её, либо первый параметр выставляем в undefined/null, а в последующих передаём результаты работы нашего функционала. В реальных приложениях вложенность вызовов может быть довольно большой и каждый раз передавать ошибку наверх очень неудобно.

Сложные математические расчёты не для Node.JS. Конечно, можно и на велосипеде привезти кирпичи для дома. Но зачем? Так и в Node.JS всё же возможно производить сложные математические расчёты, путём разбиения задачи на короткие итерации, выполняемые за несколько витков event loop, но это уже извращения и фанатизм. Гораздо проще выносить такие задачи за пределы event loop или вообще выбрать другую технологию для разработки.

Достоинства Node.js

Асинхронный ввод/вывод. Это самое значимое преимущество Node.js и оно лежит в основе данной технологии. В Node.js можно одновременно выполнять несколько операций, не зависящих друг от друга. При синхронном выполнении, например в PHP, операции будут выполняться друг за другом последовательно, каждый раз ожидая завершения предыдущей. В Node.js запросы к СУБД можно отправить «параллельно». На самом деле запросы отправляются последовательно , но Node.JS не дожидается результата работы предыдущего запроса, чтобы отправить следующий. По мере выполнения запросов, будут вызваны callback-функции для обработки их результата.

Использование асинхронного ввода/вывода к примеру в JSP потребует включение в приложение дополнительной библиотеки jQuery, которая позволяет осуществлять Ajax-запрос к серверу без перезагрузки страницы.

Один и тот же язык на сервере и на клиенте. Это позволяет повторно использовать некоторый код для валидации форм, построения шаблонов на клиенте и т.п. В целом, это очень упрощает разработку, особенно, когда клиентская часть приложения сложная и требует серьёзной работы.

Обработка http-запроса внутри себя. Это значит, что для каждого нового запроса не выполняется инициализация, как, например, на PHP. Настройки загружены, соединения с БД и с кешем открыты, код скомпилирован и готов к работе. Благодаря такой архитектуре и гибкости открывается огромный простор для различных техник оптимизации. Например, один раз разобрав шаблон, можно хранить его в виде функции, принимающей на вход данные и возвращающей готовый HTML. Или можно легко организовать локальное (для процесса) кеширование, наиболее часто используемых данных, что даст прирост в скорости работы с ними.

Языки программирования и технологии для веб-разработки

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

В последние годы, когда сеть продолжает развиваться, появилось несколько различных потоков веб-разработки:

  • Backend (или веб-разработка на стороне сервера) охватывает все те вещи, которые работают в фоновом режиме, чтобы создавать веб-сайты или веб-приложения, например базы данных и скрипты.
  • Frontend (также известная как веб-разработка на стороне клиента) касается части веб-интерфейса, с которой пользователь взаимодействует — часть, с которой знакомы все, кто пользуется Интернетом.
  • Есть Fullstack разработчики, которые могут сделать все вышеперечисленное.

Независимо от того, какой путь вы выбрали, вы все равно должны понимать каждую сторону, чтобы правильно выполнять свою работу.

Итак, вот 10 лучших языков программирования для веб-разработки, как на стороне клиента, так и на стороне сервера.

CSS / HTML

Рука об руку с JavaScript идут CSS и HTML — вместе они составляют святую троицу разработки веб-интерфейса. HTML (Hyper Text Mark Up Language) — это язык веб-браузеров — с помощью которых сделаны сайты. Вы можете пройти курс HTML бесплатно на нашем сайте. CSS (каскадные таблицы стилей) заставляет их выглядеть стильно и со вкусом — гораздо лучше, чем те ужасные сайты, действующие с первых дней работы в Интернете. Для разработчиков веб-интерфейсов очень важно знать эти инструменты от и до. Они также окажутся полезными для backend разработчиков: вы сможете понять, как изменения вашей серверной части влияют на конечного пользователя.

PHP — это скриптовый язык, используемый для быстрого создания динамических веб-страниц. Отличный выбор для frontend и backend разработчиков, чтобы добавить их в арсенал (но особенно для последних), он стоит за такими веб-гигантами, как WordPress и Facebook. PHP позволяет быстро и легко расширять веб-приложения и запускать веб-сайты с повторяющимися серверными задачами (например, обновлять новостные ленты). Он имеет открытый исходный код и очень популярен в среде начинающих компаний, медиа-агентств и электронной коммерции — таких людей, которые часто нанимают новых веб-разработчиков. А ещё, это любимый язык программирования автора этого блога, и да, у нас вы можете изучить PHP бесплатно!

Для full stack разработчиков и на стороне сервера SQL (Structured Query Language) — это вишня на торте вашего разрабатываемого инструментария. SQL является важной частью веб-разработки, что позволяет получать конкретные данные из больших, сложных баз данных. Он пользуется большим спросом среди крупных компаний, таких как Microsoft, поэтому это умный выбор для любого разработчика с высокими амбициями или необходимость, если вы работаете с базами данных на регулярной основе. На нашем сайте вы также можете найти бесплатный курс MySQL для начинающих.

JavaScript

Язык интерфейса, используемый для создания и разработки веб-сайтов, настольных приложений и игр. JavaScript работает во всех браузерах и может работать с программами, которые не размещены в Интернете. Он поддерживает как функциональные, так и объектно-ориентированные стили программирования, и в основном, это ваш подход к созданию потрясающих пользовательских интерфейсов и веб-сайтов / приложений / игр, которые выглядят супер круто. Понимание JavaScript важно, даже если ваше сердце настроено на развитие серверной части. Компоненты, структуры данных и алгоритмы JavaScript применяются практически к любому другому языку.

Python

Новый парень на блоке по сравнению с некоторыми другими языками в этом списке. Python чрезвычайно прост в освоении и является динамичным, универсальным языком. Хотя он более популярен как язык на заднем плане, с ним можно делать практически все, что вы хотите. Разработанный с целью быть читабельным, простым и, самое главное, забавным, это новый фаворит разработчиков во всех областях индустрии. Python является основным языком для начинающих. Он гибкий и чрезвычайно мощный, а главное — имеет очень светлое будущее.

Go — специальный язык программирования Google. Новичок на сцене программирования, который может похвастаться отличной интеграцией, хорошей читабельностью и простотой использования, а также возможностью решения множества проблем, с которыми друг языки не справляются. По мере появления новинок этот — очень перспективный. Кроме того, мы все знаем, что Google является королем Интернета на сегодняшний день, и именно он платит за создание веб-приложений за языке Go.

Java, разработанная в 1990-х годах и по-прежнему наиболее востребованная, является золотым стандартом в области веб-разработки во всем мире, во всех областях. Она ориентирована на объекты и работает на любой платформе, что делает ее чрезвычайно универсальной. Если вы хотите, чтобы ваш safe можно было использовать практически во всех технологических компаниях в мире, то непременно выбирайте Java. Интересный факт: Java изначально предназначался для интерактивного телевидения, но вскоре его создатели поняли, что она слишком далеко опережает свое время для этой конкретной отрасли. Остальное уже история.

Масштабируемая, простая и сверхбыстрая, Ruby и Ruby on Rails — это дуэт мечты, который предлагает язык full stack, а также рамки для быстрого создания полных программ. Любимый среди предпринимателей и начинающих, Ruby имеет широкий выбор сторонних «драгоценных камней» (надстроек), которые могут заставить его делать практически все, что вам нужно. Twitter и Basecamp используют Ruby — неплохой показатель, не так ли?

Главная цель, правильно поставленная и действующая с 1979 года, C ++ — объектно-ориентированный, очень технический язык. Чрезвычайно мощный и с обширными библиотеками, это один из краеугольных языков backend развития. С++ особенно полезен для высокопроизводительных программ и программ с большим количеством шаблонов. Если вы уже знаете C (или если вы изучили C ++ и хотите повернуть свою голову на C), вы уже находитесь на правильном пути.

Подобно C++, C — старый школьный язык, легко скомпилированный. Это часто используемая платформа программирования, которая предлагает элементы построения для других языков, таких как C ++, Python и Java. Фактически, многие из этих языков основаны на C. Отличный вариант для full stack и тех, кто хочет добавить новое измерение в свой набор навыков (или метафорическое силовое упражнение в свою панель инструментов программирования). Он лучше всего подходит для написания системного программного обеспечения и приложений, гарантируя удобный язык для разработчиков, на котором все привыкли работать.

Веб-приложения на Java

Урок 1: Основы технологии сервлетов

Для создания любых динамических веб-приложений можно использовать не только PHP, но и Java с технологией сервлетов. Мы настроим необходимые компоненты для разработки веб-приложений в среде Java, а также разберём основные принципы разработки сервлетов. После урока вы сможете создать свой первый динамический сайт на языке Java.
Темы урока:
* Настройка веб-сервера Apache Tomcat;
* Развертывание сервлета в IDE Eclipse;
* Назначение и жизненный цикл сервлетов;
* Обработка запросов HTTP.

Урок 2: Основы технологии сервлетов, часть 2

Для создания профессионального и современного веб-приложения необходимо уметь получать данные из веб-форм и грамотно обрабатывать их. Мы рассмотрим механизм Redirect с использованием средств сервлета, а также сохранение сеанса пользователя. После урока вы сможете создавать профессиональные формы регистрации, авторизации и работать с полученной информацией на профессиональном уровне.
Темы урока:
* Обработка данных, поступающих из веб-форм;
* Переадресация запросов;
* Отслеживание состояния сеанса;
* Механизм Cookies.

Урок 3: Разработка JSP-страниц, взаимодействие с базами данных

Мы рассмотрим Java Server Pages (JSP). Это одна из технологий J2EE, которая представляет собой расширение технологии сервлетов для упрощения работы с web-содержимым. JSP позволяет легко разделить web-содержимое на статическую и динамическую часть, допускающую многократное использование ранее определённых компонентов.
Темы урока:
* Основы JSP;
* Компоненты сценария;
* Стандартные действия;
* Практика.

Пошаговая разработка веб-приложения

При устройстве на работу java программистом меня попросили написать тестовое web приложение «Телефонный справочник». Хочу поделиться с вами этим «шедевром».

Вид и функциональность приложения

Инструменты

Создание проекта

Укажите путь к Java в Project SDK.

Укажите путь к своей Maven home directory.

«Maven projects need to be imported» кликаем Enable Auto-Import.

Добавим Tomcat Server.

В Application server укажите путь до Tomcat сервера.

Проверим, что всё работает.

Клиент (ExtJS)

Добавим файлы фрэймворка.

Модель ExtJS MVC.

Создадим файл app.js

  • Метод Ext.application инициализирует приложение Ext JS;
  • name: ‘PhonesDir’ указывает имя приложения, которое будет затем использоваться для создания полных имен классов приложения;
  • appFolder: ‘app’ указывает на нашу папку с инфраструктурой приложения (controller, model, store, view);
  • launch: function()<> тут происходит создание приложения.

В файле index.jsp подключаем стили ExtJS, затем фреймворк ExtJS и только потом app.js:

Проверим, что всё работает.

Нам понадобится четыре вида — это вид поиска SearchPhones.js, вид таблицы PhoneGrid.js, вид формы добавления данных AddWindowForm.js и вид каркаса PhonesDirectory.js, куда мы поместим все виды.

Изменим параметр items в app.js.

  • phonesDirectory’ алиас, который мы указали в параметре alias в PhoneDirectory.js.
  • Метод Ext.define(‘Имя’, <параметры>) создает класс-компонент, который может быть унаследован от какого-нибудь компонента. Например в PhoneGrid.js указали extend: ‘Ext.grid.Panel’, что будет представлять собой таблицу.
Controller

Виды загружаются из контролера, поэтому создадим контролер PhonesDirectoryControoler.js и укажим его в app.js

  • С помощью параметра init инициализируются обработчики для компонентов (кнопки, поля и т.д). Связать конпонент с обработчиком помогает функция control.

Конечная структура app.js

Проверим, что всё работает.

Модель и хранилище
  • pageParam: ‘search’ нужен для реализации логики поиска на сервере. В нём будут находится данные из поля поиска и, если не пусто, сервер выполнит выборку данных из БД , иначе вернет все данные.
  • ‘phone’ имя, на которое будет замапен java-класс (контролер), который будет обрабатывать GET, POST, DELETE запросы с клиента.

Добавим модель PhonesDirectoryModel.js и хранилище PhonesDirectoryStore.js в контролер PhonesDirectoryController.js

Добавим в PhonesGrid.js параметр store: ‘PhonesDirectoryStore’, для отображения данных в таблице.

Проверим, что всё работает. 404 (Not Found) — это нормально, так как по адресу localhost:8080/phone еще ничего нет.

Сервер (Java)

Создадим папку java:

Создадим модель данных и слой доступа к данным (DAO)

  • Метод getPhones(String search) принимает значение параметра, которого мы указали в PhonesDirectoryModel.js;
  • Метод findByPhone(String name, String phone) используется для поиска дубликата при добавлении данных.

Создадим слой сервиса:

Создадим контролер, который будет замапен на адрес /phone для обработки запросов с клиента.

  • Каждый метод замапен на соответствующий запрос с клиента. Внедряем зависимость с помощью spring аннотации @Autowired и вызывает соответствующие методы у сервиса;
  • ExtResult — вспомогательный класс. Используется для ответа клиенту, что сущность, которую пытаемся записать в БД , дубликат или не дубликат.

Проверьте, что всё работает. Соберите проект с помощью maven install и запустите приложение.

Создадим spring контекст my-context.xml c:

  • настройками подключения к БД;
  • бином EntityManager — объект, через который происходит взаимодействие с БД. Инжектится в PhoneDaoImpl.java;
  • инжектом объекта класса PhoneDaoImpl.java в объект класса PhoneServiceImpl.java.

Создайте БД с названием phonedir или измените название в контексте на своё.

Создадим настройки для spring DispatcherServlet, который будет обрабатывать запросы с клиента.

  • context:component-scan поиск и регистрация компонентов в контейнере спринга;
  • mvc:view-controller домашняя страница;
  • mvc:resources автоматически обрабатывать запросы на получение статических данных.

Добавим spring контекст my-context.xml и настройки для spring DispatcherServlet в дескриптор развертывания web.xml

Добавим в контролер PhonesDirectoryController.js параметр refs и обработчики для компонентов.

  • ref ссылка на что-то в selector’e.
  • selector указывает на компоненты, для быстро обращения к ним через ref.
  • onSavePhone создается модель данных и сохраняется.
  • onAddPhone создает виджет формы добавления.
  • onDelPhone удаляет запись.
  • onChangeText загружает данные в соответствии со значением в поле поиска.
  • onLineGrid при выделении строки кнопка «Удалить» становится активной
  • onValidation валидация полей формы добавления.

И последнее — добавим иконки к кнопкам «Добавить» и «Удалить»:

Обзор современных WEB технологий

История создания и развития html

Язык HTML (Hyper Text Markup Language — язык разметки гипертекста) был разработан Тимом Бернерс-Ли во время его работы в CERN и распространен браузером Mosaic, разработанным в NCSA. В 1990-х годах он добился особенных успехов благодаря быстрому росту Web. В это время HTML был расширен и дополнен. В Web очень важно использование одних и тех же соглашений HTML авторами Web-страниц и производителями. Это явилось причиной совместной работы над спецификациями языка HTML. HTML 2.0 (ноябрь 1995) был разработан под эгидой Internet Engineering Task Force (IETF) для упорядочения общепринятых положений в конце 1994 года. HTML+ (1993) и HTML 3.0 (1995) — это более богатые версии языка HTML. Несмотря на то, что в обычных дискуссиях согласие никогда не было достигнуто, эти черновики привели к принятию ряда новых свойств. Усилия Рабочей группы World Wide Web Consortium по HTML в упорядочении общепринятых положений в 1996 привели к версии HTML 3.2.

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

В HTML 4.0 вводятся механизмы таблиц стилей, скриптов, кадров, внедрения объектов, улучшенная поддержка разных направлений письма и направления справа налево, таблицы с большим количеством возможностей и новые свойства форм, обеспечивая лучшие возможности доступа для людей с физическими недостатками. Эта версия HTML разработана с помощью экспертов в области интернационализации, так что документы можно писать на любом языке и легко передавать их по всему миру. Важным шагом стало принятие стандарта ISO/IEC:10646 в качестве набора символов для документов HTML. Это наиболее содержательный стандарт в мире, в котором решены вопросы представления национальных символов, направления письма, пунктуации и других языковых вопросов. HTML теперь предоставляет лучшую поддержку различных языков в одном документе. Это обеспечивает более эффективное индексирование документов для поисковых машин, типографию высшего качества, преобразование текста в речь, более удобные переносы.

С появлением Internet проблема межплатформной несовместимости файловых форматов стала ощущаться особенно остро: ведь тем, кто размещает информацию в Сети, хочется, чтобы она была доступна как можно более широкому кругу пользователей без особенных затрат. Очевидно, что самый простой путь решения — разработка общепринятого формата файлов, под который и будут «подстраиваться» вновь создаваемые приложения. В WWW таким стандартом стал HTML. Основа WWW — файлы в формате HTML, или гипертекстовые страницы.

Гипертекст — это легкая в использовании и чрезвычайно мощная система связанных слов и фраз, позволяющая легко перемещаться по особым образом организованным страницам. Она связывает фразу или слово одной страницы с любой другой страницей, абзацем, фразой или словом. Если развить идею гипертекста и включить в него графику, видео и звук, мы получим гипермедиа. Гипермедиа — среда, основанная, как и гипертекст, на взаимосвязях, в которой в качестве гиперссылок могут выступать визуальные и аудиокомпоненты. Гипертекст и гипермедиа являются фундаментальными для WWW технологиями, а HTML — средство для работы с этими технологиями. HTML расширение языка SGML (Standart General Markup Language — стандартный язык разметки), глобального стандарта описания языков разметки гипертекста. SGML одобрен ISO (International Organization for Standartization — Международная организация по стандартизации) в 1986 г . и является стандартом для многих государственных и коммерческих систем создания документов. Документы SGML не «привязаны» к какой-нибудь программе, операционной системе и т. п.

Таким образом, когда потребовалось выбрать стандарт для документов WWW, выбор естественно остановился на HTML. Файлы HTML состоят из команд форматирования, текста и ссылок на другие файлы или объекты (графика, звуки, программы). Программа для просмотра HTML-документов (броузер) интерпретирует код HTML, содержащийся в файле, и согласно командам форматирования собирает готовую Web-страничку. Текстовые документы, написанные на этом языке, обрабатываются специальными приложениями, которые осуществляют вывод форматированного текста. Такие приложения, называемые браузерами или интернет-обозревателями, обычно предоставляют пользователю интерфейс для запроса страниц, их просмотра и, возможно, дополнительные возможности [5].. В середине 90-х годов возникла следующее явление. Производители браузеров — Netscape и Microsoft — начали внедрять собственные наборы тегов в HTML разметку. Создалась мешанина из различных конструкций для работы в Web, доступных для просмотра то в одном, то в другом браузере. Особенно большие трудности были при создании кросс-браузерных программ на JavaScript. Веб-мастерам приходилось создавать несколько вариантов страниц или прибегать к другим ухищрениям. Проблема постепенно теряет актуальность по двум причинам:

Из-за вытеснения браузером Internet Explorer от Microsoft всех остальных примерно до 2003 года.

Соответственно проблема веб-дизайнеров становилась проблемой пользователей альтернативных браузеров.

Благодаря следованию других производителей браузеров стандартам W3C (как Mozilla), или же создавая максимальную совместимость с Internet explorer (как Opera).

Поддержка спецификаций W3C в Internet explorer так и не реализована в полной мере, доля продуктов на движке Mozilla растёт. Возможно скоро мы будем наблюдать новый виток браузерных войн.

Возможности html

Язык HTML позволяет размечать в тексте:

Цвет, кегль, жирность, стиль, название шрифта для визуального вывода.

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

Гипертекстовые ссылки, значительно упрощающие чтение множества связанных документов, ибо позволяют запросить документ с адресом, указанным в коде ссылки, простым выделением и подтверждением (в подавляющем большинстве случаев — щелчком мыши).

Анкеты для введения пользователем текста, пересылаемого по заполнении на указанный в коде анкеты адрес. Анкеты и другую информацию можно обрабатывать с помощью специальных языков программирования (PHP, Perl)

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

Версии html

Официальной спецификации HTML 1.0 не существует. До 1995 года существовало множество неофициальных стандартов HTML. Чтобы стандартная версия отличалась от них, ей сразу присвоили второй номер. Версия 3 была предложена W3С в марте 1995, и обеспечивала много новых возможностей вроде поддержки таблиц, обтекание изображений текстом и отображения сложных математических формул. Даже при том что этот стандарт был совместим с второй версией, реализация его была сложна для браузеров того времени. Версия 3.1 официально никогда не предлагалась, и следующей версией стандарта HTML стала 3.2, в которой были опущены многие нововведения из версии 3.0, зато добавлены нестандартные теги поддерживаемые браузерами Netscape и Mosaic. Поддержка математических формул пошла дополнительным стандартом MathML.

Стандарт HTML 3.2 является спецификацией языка разметки гипертекста, предложенной организацией W3C и разработанной в начале 1996 года в кооперации с такими поставщиками, как IBM, Microsoft, Netscape Communication Corporation, Novell, SoftQuad, Spyglass, и Sun Microsystems. Версия 3.2 языка HTML дополнена такими широко распространенными элементами, как таблицы, апплеты и обтекание текстом изображений. При этом обеспечивается полная обратная совместимость с ныне существующим стандартом HTML 2.0. HTML 4.0 также содержит много определенных браузером тегов, но в то же самое время начал пробовать почистить стандарт от лишних тегов.

Новых версий HTML не будет. Однако существует дальнейшее развитие HTML в виде XHTML, основанном на XML.

Структура html документа

HTML — это теговый язык разметки документов, то есть любой документ на языке HTML представляет собой набор элементов, причем начало и конец каждого элемента обозначается специальными пометками, называемыми тегами. Регистр в котором набрано имя тега значения не имеет.

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

Далее обозначается начало и конец документа тегами и соответственно. Внутри этих тегов должны находиться теги заголовка() и тела() документа.

Значение html

Изначально разработанный для создания Web-страниц, HTML оказался полезным во многих других, иногда неожиданных, приложениях, и поэтому очень скоро развился в мощное средство программирования. Хотя Всемирная паутина считается самым большим «потребителем» HTML, этот язык широко используется при создании корпоративных сетей Intranet, для придания неповторимого облика электронной переписке и даже в разработке графических интерфейсов пользователя (Graphical User Interface, GUI) для индивидуального или сетевого применения. Соответственно, язык разметки приобретает все новые функции и особенности, поэтому сегодняшняя версия (НТМL 4.0) имеет мало общего со своими более простыми и менее амбициозными предшественниками. За несколько лет HTML превратился в мощное и широко используемое средство программирования.

История создания и развития php

PHP (рекурсивный акроним словосочетания «PHP: Hypertext Preprocessor») — это широко используемый язык программирования общего назначения с открытым исходным кодом. PHP сконструирован специально для ведения Web-разработок и может внедряться в HTML-код.

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

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

История PHP начинается осенью 1994 года. Когда Расмус Лердорф (Rasmus Lerdorf) начал работать над тем, что впоследствии стало PHP, единственной целью, которая была у него в мыслях, выяснить, кто читает его резюме. В то время, являясь независимым подрядчиком, Лердорф рассылал потенциальным работодателям свое мини-резюме с URL ссылкой на его полную версию. Чтобы следить за посетителями, он создал CGI скрипт на Perl-e, который вставлялся как специальный тег в HTML код его страницы, и собирал информацию о посетителях. Чтобы произвести впечатление на потенциальных работодателей, он позволил любому посетителю страницы просматривать собираемую статистику посещений.

Он назвал этот код для сбора статистики «PHP-Tools for Personal Home Page», поскольку сам использовал его на своей персональной домашней странице (personal home page). Несколько человек поинтересовались тем, как они могли бы получить этот инструмент, и Лердорф принял решение предоставить его другим лицам. «Это чудо программного обеспечения. Вы можете дать это и тем не менее оставить это себе», остроумно заметил Лердорф. В то время движения Open Source не существовало. «Тогда оно назвалось freeware». Ближе к концу 1995 года Лердорф открыл для людей первый список рассылки по PHP, чтобы можно было обмениваться идеями, исправлениями ошибок и кодом.

Php/Fi. В результате своих действий, Лердорф получил контракт в Университете Торонто на создание dial-up системы, предоставляющей студентам доступ в интернет. Требование включало разработку административного web интерфейса и возможности доступа студентов к Университетской библиотечной системе, хранившейся на мейнфрейме IBM. Было необходимо, чтобы администраторы библиотеки могли предоставлять студентам доступ на основе платежей, сделанных ими для своих интернет эккаунтов, и, чтобы эта информация обновлялась в базе данных в реальном времени.

В середине 1995 года синтаксический анализатор PHP был переписан на языке C. Кроме того, Лердорф создал некоторое количество тегов для вставки их в HTML код. Эти теги он назвал «Form Interpreters» (интерпретаторы форм) поскольку они должны были получать данные, которые вводились в форме, и преобразовывать эти данные в символьные переменные так, чтобы они могли быть экспортированы в другую систему.

В то время не было инструментов для «стыковки» web-страниц и баз данных. Поэтому Лердорф добавил в PHP поддержку базы данных mSQL, чтобы облегчить разработку web-сайтов, которым необходима реляционная база данных.

Объединив интерпретатор форм с пакетом PHP-Tools, Лердорф подошел в 1996 году ко второй версии PHP, названной PHP/FI. Он отнесся легкомысленно к идее создания из него коммерческого продукта. Но в то же самое время, Лердорф получал огромное число сообщений от других программистов, которые присылали ему улучшения кода и исправления ошибок.

Привести точную статистику непросто, но приблизительно в конце 1996 года PHP/FI использовался не менее чем на 15,000 web-сайтов во всем мире. А в середине 1997 года это число превысило 50,000.

Php 3. PHP 3.0 был первой версией, которая близко походила на тот PHP, который мы знаем сегодня. Он был создан Энди Гутмансом (Andi Gutmans) и Зивом Суразски (Zeev Suraski) в 1997 году как полная переделка предыдущей версии PHP, после того, как они нашли, что возможностей PHP/FI 2.0 сильно не хватает для развития их собственного приложения для eCommerce. Энди Гутманс, Расмус Лердорф и Зив Суразски решили начать работу над новой версией PHP с существующей базы PHP/FI и, объединившись, выпустили PHP 3.0 как официальный последователь PHP/FI 2.0, а развитие PHP/FI 2.0 был в основном прервано.

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

Полностью новый язык был выпущен под новым именем, из которого был удален намек на ограниченное персональное использование, который содержался в имени PHP/FI 2.0. Он был назван просто «PHP», со значением, являющимся рекурсивным акронимом – «PHP: Hypertext Preprocessor».

Php 4. К зиме 1998 года, вскоре после официального выхода PHP 3.0, Энди Гутманс и Зив Суразски начали работу по переписыванию ядра PHP. Целью их плана было увеличение производительности сложных приложений и совершенствование модульности основы кода PHP. Существование таких приложений стало возможным благодаря новым возможностям PHP 3.0 и поддержкой PHP широкого диапазона различных баз данных и API сторонних производителей. Но все же PHP 3.0 не был предназначен для эффективной обработки таких сложных приложений.

Новый движок (ядро PHP), прозванный «Zend Engine» (составлено от первых букв их имен – Зив и Энди), успешно удовлетворил этим целям и был впервые представлен в середине 1999 года. PHP 4.0, базирующийся на этом движке и дополненный различными новыми дополнительными возможностями, был официально выпущен в мае 2000 года, почти два года спустя после своего предшественника – PHP 3.0. В дополнение к сильно увеличенной производительности, PHP 4.0 включил другие ключевые возможности, такие как поддержку гораздо большего количества web-серверов, HTTP-сессии, буферизацию вывода, более безопасные пути обработки ввода пользователей и ряд новых языковых конструкций.

Сегодняшняя ведущая команда разработчиков РНР включает специалистов со всего мира. Зив Сураски и Энди Гутманс живут в Израиле, Шейн Каравео (Shane Caraveo) постоянно находится во Флориде, Стиг Беккен (Stig Bakken) – из Норвегии, Андрей Змиевски (Andrei Zmievski) живет в штате Небраска, Саша Шуман (Sasha Schumann) и Тес С. Арнцен (Thes С. Arntzen) – из Германии, Джим Уинстед (Jim Winstead) – из Лос-Анджелеса, а сам отец РНР – Расмус Лердорф, постоянно живет в Северной Каролине. Команда разработки PHP включает десятки разработчиков, и немало других людей работают над проектами, связанными с PHP, такими как PEAR, Smarty и Проект документации. Благодаря открытости ресурсов РНР многие разработчики и любители внесли собственный вклад в развитие и совершенствование РНР.

Php 5. Пятая версия PHP была выпущена разработчиками 13 июля 2004 года. Изменения включают обновление ядра Zend, что существенно увеличило эффективность интерпретатора. Введена поддержка языка разметки XML. Полностью переработаны функции ООП, которые стали во многом схожи с моделью, используемой в Java. В частности, введён деструктор, открытые, закрытые и защищённые члены и методы, окончательные члены и методы, интерфейсы и клонирование объектов. Нововведения, однако, были сделаны с расчётом сохранить наибольшую совместимость с кодом на предыдущих версиях языка. На данный момент самыми стабильными и часто используемыми являются именно версии 5.xx, даже несмотря на то, что уже имеется dev-версия PHP 6.

Php 6. Шестая версия PHP находится в стадии разработки. В ней уже сделано множество нововведений, как, например, исключение из ядра POSIX-регулярных выражений и «длинных» суперглобальных массивов.

Общие сведения о ASP и ASP.NET

ASP (англ. Active Server Pages — «активные серверные страницы») — технология от Microsoft, позволяющая легко разрабатывать приложения для World Wide Web. ASP работает на платформе операционных систем линии Windows NT и на веб-сервере IIS. ASP не является языком программирования — это лишь технология предварительной обработки, позволяющая подключать программные модули во время процесса формирования Web-страницы. Относительная популярность ASP основана на простоте используемых языков сценариев (VBScript или JScript) и возможности использования внешних COM-компонент.

ASP.NET — это технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP. На данный момент последней версией этой технологии является ASP.NET 2.0.

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

Хотя ASP.NET берёт своё название от старой технологии Microsoft, ASP, она значительно от нее отличается. Microsoft полностью перестроила ASP.NET, основываясь на Common Language Runtime (CLR), который является основой всех приложений Microsoft.NET. Программисты могут писать код для ASP.NET, используя различные языки программирования, поддерживаемые в .NET Framework, обычно Visual Basic.NET, JScript .NET или C#, а также «открытые» языки, например, Perl и Python. ASP.NET имеет преимущество в скорости по сравнению с другими технологиями, основанными на скриптах, потому что код на стороне веб-сервера обычно компилируется в одну или несколько DLL.

Преимущества ASP.NET перед ASP

Компилируемый код выполняется быстрее, большинство ошибок отлавливается ещё на стадии разработки

Значительно улучшенная обработка ошибок времени выполнения

Пользовательские элементы управления позволяют выделять часто используемые шаблоны, такие как меню сайта

Использование метафор, уже применяющихся в Windows-приложениях, например, таких как элементы управления и события

Расширяемый набор элементов управления и библиотек классов позволяет быстрее разрабатывать приложения

ASP.NET опирается на многоязыковые возможности .NET, что позволяет писать код страниц на VB.NET, C++, J# и т.д.

Возможность кэширования всей страницы или её части для увеличения производительности

Возможность разделения визуальной части и бизнес логики по разным файлам

История создания java

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

Рождению языка Java предшествовала довольно интересная история. В 1990 году разработчик ПО компании Sun Microsystems Патрик Нотон (Patrick Naughton) понял, что ему надоело поддерживать сотни различных интерфейсов программ, используемых в компании, и сообщил исполнительному директору Sun Microsystems и своему другу Скотту МакНили (Scott McNealy) о своем намерении перейти работать в компанию NeXT. МакНили, в свою очередь, попросил Нотона составить список причин своего недовольства и выдвинуть такое решение проблем, как если бы он был Богом и мог исполнить все, что угодно.

Нотон, хотя и не рассчитывал на то, что кто-то обратит внимание на его письмо, все же изложил свои претензии, беспощадно раскритиковав недостатки Sun Microsystems, в частности, разрабатываемую в тот момент архитектуру ПО NeWS. К удивлению Нотона, его письмо возымело успех: оно было разослано всем ведущим инженерам Sun Microsystems, которые не замедлили откликнуться и высказать горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems. Обращение вызвало одобрение и у высшего руководства компании, а именно, у Билла Джоя (Bill Joy), основателя Sun Microsystems, и Джеймса Гослинга (James Gosling), начальника Нотона.

В тот день, когда Нотон должен был уйти из компании, было принято решение о создании команды ведущих разработчиков с тем, чтобы они делали что угодно, но создали нечто необыкновенное. Команда из шести человек, с кодовым названием Green, ушла в самовольное изгнание, погрузившись в исследования бытовых устройств, таких как Nintendo Game Boys, устройств дистанционного управления. Команда Green пыталась найти средство, с помощью которого можно было бы установить взаимодействие между этими устройствами. Вскоре стало ясно, что такие электроприборы, как видеомагнитофоны, проигрыватели лазерных дисков, стереосистемы — все они были реализованы на разных процессорах. Это означало, что если производитель захочет добавить телевизору или видеомагнитофону дополнительные функции или характеристики, он будет зажат в рамках средств, зашитых в аппаратное обеспечение. Эта проблема, в сочетании с ограниченностью памяти микросхем этих устройств, выдвинула новый подход к программированию ПО, который должен был стать ведущим на рынке бытовой электроники.

Команда приступила к разработке нового объектно-ориентированного языка программирования, который был назван Oak (дуб), в честь дерева, росшего под окном Гослинга.

Вскоре компания Sun Microsystems преобразовала команду Green в компанию First Person. Новая компания обладала интереснейшей концепцией, но не могла найти ей подходящего применения. После ряда неудач неожиданно ситуация для компании резко изменилась: был анонсирован Mosaic — так родился World Wide Web, с которого началось бурное развитие Internet.

Нотон предложил использовать Oak в создании Internet- приложений. Так Oak стал самостоятельным продуктом, вскоре был написан Oak-компилятор и Oak-браузер «WebRunner». В 1995 году компания Sun Microsystems приняла решение объявить о новом продукте, переименовав его в Java (единственное разумное объяснение названию — любовь программистов к кофе). Когда Java оказалась в руках Internet, стало необходимым запускать Java-аплеты — небольшие программы, загружаемые через Internet. WebRunner был переименован в HotJava и компания Netscape встала на поддержку Java-продуктов.

О технологии java

Технология Java — это объектно-ориентированная, платформо-независимая, многопоточная среда программирования. Java стала основой для «умных» Web- и сетевых сервисов, позволила надежно и безопасно наращивать информационную структуру предприятия без зависимости от отдельной платформы. Все виды систем могут взаимодействовать друг с другом — начиная со смарт карт и заканчивая суперкомпьютерами — независимо от аппаратной платформы и системного программного обеспечения. С технологией Java приложение можно исполнять на любом типе машин — персональном компьютере, компьютере Макинтош, сетевом компьютере или даже на телефоне. Когда программный продукт, написанный на языке программирования Java, компилируется с использованием Java-компилятора, получается байткод. Этот байткод может интерпретироваться на любой платформе, где установлена виртуальная машина Java. Это означает, что нет необходимости в портировании программ, то есть их перевода на язык, понятный конкретному компьютеру.

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

За последние годы увеличилось множество несовместимых аппаратных архитектур, каждая из которых поддерживает множество несовместимых операционных систем, которые, в свою очередь, управляют несовместимыми графическими пользовательскими интерфейсами. Задача создания распределенных клиент-серверных сред сталкивается с проблемой интеграции подобных разрозненных продуктов. Развитие Internet, World Wide Web и электронного бизнеса привнесло новый уровень сложности в процесс разработки. Язык Java компании Sun Microsystems решает эти проблемы. Java является объектно-ориентированным и одновременно простым языком программирования. Цикл разработки программных средств с использованием Java значительно сокращается в силу того, что Java — интерпретируемый язык. Процесс компиляции-сборки-загрузки устарел — теперь программу надо только откомпилировать и сразу запускать.

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

Благодаря Java работа по разработке программного обеспечения значительно упрощается, все старания направлены на достижение конечной цели: вовремя получить передовой продукт, опирающийся на солидную основу Java.

Основные характеристики языка java

Развитие Internet и World Wide Web заставляет совершенно по-новому рассматривать процессы разработки и распределения программного обеспечения. Для того, чтобы выжить в мире электронного бизнеса и распространения данных, язык Java должен быть

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

  • нейтральным к архитектуре,
  • переносимым,
  • динамически подстраиваемым.

    Разработчики Java с самого начала хорошо понимали, что язык, предназначенный для решения проблем гетерогенных сред, также должен быть

  • простым
  • ясным
  • объектно-ориентированным
  • многопоточным
  • интерпретируемым

    Более подробно рассмотрим перечисленные характеристики Java.

    Простота. Простота языка входит в ключевые характеристики Java: разработчик не должен длительное время изучать язык, прежде чем он сможет на нем программировать. Фундаментальные концепции языка Java быстро схватываются и программисты с самого начала могут вести продуктивную работу.

    Разработчиками Java было принято во внимание, что многие программисты хорошо знакомы с языком С++, поэтому Java, насколько это возможно, приближен к С++.

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

  • перегрузки операторов (но перегрузка методов в Java осталась),
  • множественного наследования,
  • автоматического расширяющего приведения типов.

    Добавилась автоматическая сборка мусора, упрощающая процесс программирования, но несколько усложняющая систему в целом. В С и С++ управление памятью вызывало всегда массу проблем, теперь же об этом не придется много заботиться.

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

    Надежность. Платформа Java разработана для создания высоконадежного прикладного программного обеспечения. Большое внимание уделено проверке программ на этапе компиляции, за которой следует второй уровень — динамическая проверка (на этапе выполнения). Модель управления памятью предельно проста: объекты создаются с помощью оператора new. В Java, в отличие от С++, механизм указателей исключает возможность прямой записи в память и порчи данных: при работе с указателями операции строго типизированы, отсутствуют арифметические операции над указателями. Работа с массивами находится под контролем управляющей системы. Существует автоматическая сборка мусора. Данная модель управления памятью исключает целый класс ошибок, так часто возникающих у программистов на С и С++. Программы на Java можно писать, будучи уверенным в том, что машина не «повиснет» из-за ошибок при работе с динамически выделенной памятью.

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

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

    Переносимость. Архитектурная независимость — лишь составная часть переносимости. В отличие от С или С++ в Java не существует понятия «зависимости от реализации», когда речь идет о размерности базовых типов. Форматы типов данных и операции над ними четко определены. Тем самым, программы остаются неизменными на любой платформе — не существует несовместимости типов данных на аппаратных и программных архитектурах. Архитектурная независимость и переносимость программного обеспечения Java обеспечивается виртуальной машиной Java (Java Virtual Mashine — JVM) — абстрактной машиной, для которой компилятор Java генерирует код. Специальные реализации JVM для конкретных аппаратных и программных платформ предоставляют уже конкретную виртуальную машину. JVM базируется на стандарте интерфейса переносимых операционных систем (POSIX).

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

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

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

    Динамичность. По ряду соображений Java более динамичный язык, чем С++. Он был разработан специально для подстройки под изменяющееся окружение. В то время как компилятор Java на этапе компиляции и статических проверок не допускает никаких отклонений, процесс сборки и выполнения сугубо динамический. Классы связываются только тогда, когда в этом есть необходимость. Новые программные модули могут подключаться из любых источников, в том числе, поставляться по сети. В случае с браузером HotJava и другими подобными приложениями интерактивный выполняемый код может быть загружен откуда угодно, что позволяет производить прозрачные модификации приложений. В результате возможно создание интерактивных служб, безболезненно модифицируемых, обслуживающих большое количество клиентов и обеспечивающих развитие электронного бизнеса через Internet.

    Веб-программисты: описание профессии, плюсы и минусы

    Веб-программист – это одна из самых трендовых ИТ-специальностей. По прогнозам сайта CareerCast, к 2024 году популярность профессии вырастет еще на 24 %. В России за свой труд разработчик сайтов получает от 90 тысяч рублей, а верхний порог зарплат может достигать 600 тысяч. Но деньги — далеко не все преимущества. Чем занимается специалист и каково это – быть программистом Всемирной паутины, читайте дальше.

    Описание профессии

    Кто такой веб-программист? Это человек, занимающийся созданием технической части сайтов и приложений. Чтобы было понятнее, откройте в браузере любую страницу. Все, что вы перед собой видите, создано совместными усилиями веб-мастеров.

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

    Чтобы посетители могли взаимодействовать с web-ресурсом, регистрироваться в гостевых книгах или подписываться на обновления, сайт должен быть динамическим. Это как раз то, чем занимается веб-программист.

    Благодаря усилиям разработчика контент не отражается в статических HTML-страницах, а генерируется в процессе. Содержимое формируется в зависимости от HTTP-запроса и URL пользователя. Сайт фактически «узнает» своих посетителей и общается с ними. Значит, суть профессии веб-программист заключается в разработке интерактивных интернет-сайтов и приложений.

    Фронтенд vs бэкенд

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

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

    Что должен знать веб-программист клиентской стороны приложения:

    • язык разметки HTML;
    • каскадные таблицы стилей CSS;
    • JavaScript.

    Back End-разработка заключается в написании скрытой от пользователя части приложения, располагающейся на сервере. Web-программирование бэкенда гораздо сложнее. Включает работу не только с самим приложением, но также с базой данных и сервером.

    Для написания кода программист использует уже не клиентские HTML и JS, а серверные языки Python, PHP, Ruby. Также разработка бэкенда подразумевает использование следующих технологий:

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

    Инструменты разработчика

    Разработка приложений – сложный и кропотливый процесс. Чтобы его контролировать, программисты определили для себя набор основных инструментов.

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

    У текстовых редакторов есть свои критерии. Разработчик одновременно работает с несколькими файлами. Поэтому редактор должен обеспечивать комфортное и быстрое использование файловой системы и корректировку кода.

    Также редакторы бывают с графическим интерфейсом и терминальные, работающие через командную строку. Первые, конечно, удобней, у них есть подсказки и подсветка синтаксиса. Среди редакторов с GIU наибольшей популярностью пользуются Coda, Text Mate и Sublime Text.

    Существуют интегрированные среды разработки, наподобие Eclipse или Visual Studio. Они обеспечивают быстрое редактирование и управление кодом, но сложны для начинающих и включают много инструментов для разработки промышленного ПО, а не веб-приложений.

    Программисты используют систему контроля версий для создания контрольных точек в коде, которые видит вся команда разработчиков. При этом каждый участник проекта работает над своим фрагментом, не мешая другим. Наибольшей популярностью пользуются Git, SVN, Mercurial.

    Браузер — незаменимый помощник программиста. Чаще всего для веб-разработки используют браузеры FireFox, Google на движке Chromium и Safari на движке WebKit.

    Преимущества профессии

    У каждого рода деятельности есть свои положительные и отрицательные стороны, и web-программирование не исключение. Очевидное преимущество профессии — ее востребованность. Безработица веб-программистам не грозит. У каждой уважающей себя фирмы или компании есть свой сайт, с которым нужно работать и управлять им.

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

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

    • Codecademy;
    • Udemy;
    • курсы от Google;
    • Coursera;
    • Stepic.

    Для начинающих веб-программистов написано огромное количество книг, которые находятся в свободном доступе. Лучшим издательством для изучения основ кодинга считается «Орейли». На YouTube энтузиастами выложена масса обучающих роликов любого уровня сложности.

    Почему сложно быть веб-разработчиком

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

    В процессе разработки web-программист взаимодействует с членами команды, и не всегда удается достичь консенсуса. Иногда возникают трудности с заказчиками, которые порой далеки от программирования и не всегда четко объясняют свои требования. Еще один недостаток – ненормированный рабочий день. Когда требуется срочная доработка и редактирование проекта, программисты сутками сидят над кодом.

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

    Кому подходит эта профессия

    Вы хотите стать веб-программистом, мечтаете создавать интерактивные приложения и жить в Кремниевой долине. Но где гарантия, что профессия вам подходит? Есть риск, что, потратив тысячи рублей и часов на обучение, вы в конечном счете разочаруетесь. Вам подходит эта профессия, если:

    1. Вы любите интернет и все, что с ним связано, подмечаете тонкости оформления страниц, знаете о том, что такое прогрессивные приложения и интересуетесь новостями мира www.
    2. Готовы работать в команде, сотрудничать с дизайнерами, проектным менеджером, адекватно принимать требования заказчика и руководства.
    3. Вы усидчивы и можете в течение длительного времени выполнять монотонную работу, потому что именно так и выглядит написание кода.
    4. У вас богатое воображение, творческий вкус и вы любите придумывать что-то новое.

    Если эти утверждения полностью вас описывают и вы не боитесь предстоящих трудностей, тогда профессия действительно для вас.

    Как стать веб-программистом

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

    Следующий шаг состоит в изучении HTML, CSS и JS. Есть два способа это сделать:

    • Самостоятельно, через книги, видеоролики и онлайн-платформы.
    • С помощью преподавателя, записавшись на платные курсы.

    В процессе обучения пишите простые приложения, сайты-одностраничники. Обязательно занимайтесь практикой и постепенно знакомьтесь с Node.js для реализации скриптов на сервере. Освоив фронтенд, переходите к бэкенду, библиотекам и базе данных.

    Выбор серверного языка

    Веб-программисту недостаточно знать один язык. Для написания полноценных приложений помимо JS вам понадобятся другие серверные языки. Согласно индексу TIOBE хедлайнерами на сегодняшний день являются:

    • Java;
    • Python;
    • C#;
    • JavaScript;
    • PHP, но его рейтинги постепенно падают.

    Мы рекомендуем остановиться на Python. Это объектно-ориентированный язык с большими возможностями. Под него написано множество библиотек и модулей. У языка очень простой и понятный синтаксис, который легко выучить за короткий срок. На Python пишутся не только веб-приложения, но настольные программы и даже видеоигры.

    Выбрав язык, учите под него фреймворки. Они значительно повышают производительность приложений и облегчают процесс разработки. Для Python это Django, самый популярный в США фреймворк Laravel для PHP. Если вы твердо решили работать с JS, то вам пригодятся Angular.js.

    Продвижение своих услуг

    Первое, что вам понадобится, – это портфолио. Собирайте в него свои работы, рекламируйте их в социальных сетях и stackOverflow. Обязательно создайте аккаунт на GitHub с красочными примерами ваших творений. Потенциальные работодатели должны видеть, на что вы способны. Также вы будете сравнивать свое портфолио с другими и лучше понимать свои недостатки и то, к чему стремиться.

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

    X Международная студенческая научная конференция Студенческий научный форум — 2020

    ИСПОЛЬЗОВАНИЕ WEB – СЕРВИСОВ В JAVA STANDARD EDITION 8

    К моменту появления понятия «веб-сервисов» в мире уже существовали технологии, позволяющие приложениям взаимодействовать на расстоянии, где одна программа могла вызвать какой-нибудь метод в другой программе, которая при этом могла быть запущена на компьютере, расположенном в другом городе или даже стране. Все этого сокращенно называется RPC (Remote Procedure Calling – удаленный вызов процедур) [1].

    В качестве примеров можно привести технологии CORBA, а для Java – RMI (Remote Method Invoking – удаленный вызов методов). И все вроде в них хорошо, особенно в CORBA, так как с ней можно работать на любом языке программирования, но чего-то все же не хватало. Вероятней всего, минусом CORBA является то, что она работает через какие-то свои сетевые протоколы вместо простого HTTP, который пролезет через любой firewall [1].

    Идея веб-сервиса заключалась в создании такого RPC, который будет засовываться в HTTP пакеты. Так началась разработка стандарта. Базовые понятия этого стандарта:

    SOAP. Прежде чем вызвать удаленную процедуру, нужно этот вызов описать в XML файле формата SOAP. SOAP – это просто одна из многочисленных XML разметок, которая используется в веб-сервисах. Все, что мы хотим куда-то отправить через HTTP, сначала превращается в XML описание SOAP, потом засовывается в HTTP пакет и посылается на другой компьютер в сети по TCP/IP [1].

    WSDL. Есть веб-сервис, то есть программа, методы которой можно удаленно вызывать. Но стандарт требует, чтобы к этой программе прилагалось описание, в котором сказано, что «да, вы не ошиблись — это действительно веб-сервис и можно у него вызвать такие-то такие — то методы». Такое описание представляется еще одним файлом XML, который имеет другой формат, а именно WSDL. То есть, WSDL – это просто XML файл описания веб-сервиса и больше ничего [1].

    Так вот, в Java появился такой API, как JAX-RPC. Это означает, что есть пакет с набором классов, которые инкапсулируют рассматриваемую технологию. JAX-RPC долго развивался от версии к версии и в конечном итоге превратился в JAX-WS. WS, очевидно, означает WebService. Далее появился еще JAX-RS для RESTful веб-сервисов.

    Веб-служба — это программа, к которой могут обращаться другие программы через Интернет (http). Например, есть функция, которая предоставляет текст в формате HTML. Цель приложения — это веб-браузер, который отображает результаты, и человек сможет легко прочитать этот текст на странице [2].

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

    Основным преимуществом веб-службы является то, что приложения могут быть написаны на любом языке, но они могут обмениваться данными и обмениваться данными друг с другом через веб-службу. Программные приложения, написанные на разных языках программирования и работающие на различных платформах, могут использовать веб-службы для обмена данными через Интернет (HTTP). Это взаимодействие (например, между Java и Python, или приложениями Windows и Linux) связано с использованием открытых стандартов (XML, SOAP, HTTP) [2].

    SOAP (простой протокол доступа к объектам);

    UDDI (универсальное описание, обнаружение и интеграция);

    WSDL (язык описания веб-сервисов).

    Рассмотрим виды веб-служб, в первую очередь, существуют два типа веб-служб, простой протокол доступа к объектам (SOAP) и репрезентативный перенос состояний (REST).

    Веб-служба SOAP принимает запрос в формате XML и генерирует вывод в формате XML.

    Веб-служба REST более универсальна и может принимать XML, а также JSON в качестве запроса и генерирует вывод в XML, а также в JSON или даже HTML [2].

    2. Java Standard Edition

    Java Platform, Standard Edition, сокращенно Java SE (ранее Java 2 Standard Edition или J2SE) — стандартная версия платформы Java 2, предназначенная для создания и исполнения апплетов и приложений, рассчитанных на индивидуальное пользование или на использование в масштабах малого предприятия. Не включает в себя многие возможности, предоставляемые более мощной и расширенной платформой Java 2 Enterprise Edition (J2EE), рассчитанной на создание коммерческих приложений масштаба крупных и средних предприятий [3].

    Пакет java.lang содержит фундаментальные классы и интерфейсы, близко привязанные к языку и системе во время выполнения. Сюда входят корневые классы, которые формируют иерархию классов, типы, привязанные к определению языка, основные исключения, математические функции, классы поддержки многопоточности, функции безопасности, а также классы, позволяющие получить информацию относительно операционной системы, на которой выполняется программа [3].

    Основные классы в java.lang:

    Object — этот класс является корнем иерархии классов в Java;

    Enum — базовый класс для перечислимого типа (с версии J2SE 5.0);

    Class — класс является основным в подсистеме интроспекции Java;

    ClassLoader — абстрактный класс, определяет, как загружаются классы. Приложение может создавать подклассы, расширяющие ClassLoader, реализуя его методы. Это позволяет загружать классы другими способами, нежели тот, которым выполняется обычная загрузка в системе времени выполнения Java;

    Throwable — класс является базовым для иерархии классов исключений;

    Error, Exception, RuntimeException — базовые классы для каждого подтипа исключений;

    Thread — класс, содержащий операции над потоками исполнения;

    String — класс для представления строк и их значений;

    StringBuffer и StringBuilder — классы для работы со строками (StringBuilder с версии J2SE 5.0);

    Comparable — интерфейс для поддержки обобщённого сравнения и упорядочения объектов (с версии J2SE 1.2);

    Iterable — интерфейс для поддержки улучшенного цикла for (с версии J2SE 5.0);

    Process, Runtime, SecurityManager, System — выполняют «системные операции». Управляют динамической загрузкой классов, созданием внешних процессов, получением информации об окружающей среде (например, времени суток), и следят за выполнением политик безопасности;

    Math и StrictMath — содержат основные математические функции, такие, как вычисление синуса, косинуса и квадратного корня (StrictMath с версии J2SE 1.3);

    Классы-обёртки над примитивными типами, которые превращают их в объекты;

    Классы исключений для основных исключительных ситуаций языка и среды исполнения.

    Все классы из пакета java.lang автоматически подключаются в каждый исходный файл программы. Явное подключение не требуется [3].

    java.lang.annotation — в этом пакете определен интерфейс Annotation, а также перечисления ElementType и RetentionPolicy.

    java.lang.instrument — пакет определяет средства, которые могут быть использованы для добавления инструментария для разных аспектов выполнения программ. Он определяет интерфейсы Instrumentation и ClassFileTransformer, а также класс ClassDefinition.

    java.lang.management — пакет предоставляет поддержку управления виртуальной Машиной Java и исполняющим окружением. Используя средства пакета, вы можете просматривать и управлять различными аспектами выполнения программы.

    java.lang.ref — предоставляет возможность взаимодействия со сборщиком мусора, благодаря чему программа может быть предупреждена об изменении числа ссылок на объект или о действиях, производимых сборщиком мусора над объектом.

    java.lang.reflect — пакет java.lang.reflect обеспечивает механизм отражения — способность программного обеспечения к самоанализу (то есть получению информации об имеющихся в системе классах, их методах, полях и связях). Отражение — важная возможность, необходимая при использовании компонентов, называемых Java Beans [3].

    3. Java Standard Edition 8

    Выпуск релиза версии Java 8 состоялся в марте 2014 года. По сравнению с версией Java SE 7 вышедшей в 2011 году, в Java 8 добавлены новые возможности — полная поддержка специального синтаксиса — лямбда выражений, stream — потоки, ключевое слово default, новое API, JavaScript — движок и другие обновления [5].

    Интеграция поддержки Lisp-подобных лямбда-выражений («замыкания»), развиваемых в рамках проекта Lambda. Расширений стандартных библиотек средствами для параллельного выполнения операций над потоками данных, нацеленных на упрощение написания кода для многоядерных процессоров;

    Поддержка компактных профилей для развёртывания на оборудовании с ограниченными ресурсами приложений, которым не требуются все компоненты платформы;

    Новая система сборки на основе Autoconf;

    Интеграция Nashorn, легковесного и высокопроизводительного движка JavaScript, работающий поверх виртуальной машины Java (JVM);

    Новый API для работы с датами и временем. Новые Calendar и Locale API;

    Повторяющиеся аннотации (Repeating Annotations), позволяющие применить один и тот же тип аннотации более одного раза в одном объявлении или применении типа;

    Тип аннотаций, предоставляющий возможность применения аннотаций везде, где используются типы, а не только при объявлении;

    Новый пакет с классами java.util.stream, предоставляющий Stream API с поддержкой операций в стиле функционального программирования над потоками элементов;

    Увеличение производительности HashMaps в условиях возникновения коллизий;

    Улучшение средств шифрования: Включение по умолчанию TLS 1.2 на стороне клиента. Усиление алгоритмов для шифрования с использованием паролей. Поддержка SNI (Server Name Indication) в JSSE Server для обеспечения доступа через шифрованное соединение к виртуальным хостам на одном IP. Поддержка хэширования SHA-224 и блочного шифра AEAD (Authenticated Encryption with Associated Data). Новый класс java.security.cert.PKIXRevocationChecker для настройки проверки отзыва сертификатов X.509. Поддержка аппаратного ускорения шифрования AES на процессорах Intel;

    Многочисленные улучшения в JavaFX, включая новые элементы управления DatePicker и TreeTableView, класс SwingNode для встраивания контента Swing, новая тема оформления Modena, пакет javafx.print с API для вывода на печать, класс WebView, класс ScheduledService, поддержка архитектуры ARM, существенное расширение средств для работы с 3D-графикой (3D-формы, камера, освещение, субсцены, материалы, сглаживание);

    Включение в состав Java DB 10.10;

    В пакеты java.lang и java.util добавлены средства для параллельной сортировки массивов и функции кодирования/декодирования Base64 [5].

    Oracle выпустила JDK 8, готовой к использованию реализации Java SE 8 Platform Specification. Эта версия включает самое крупное обновление модели программирования Java со времени выхода платформы в 1996 году. Пакет JDK 8 разрабатывался при активном участии сообщества OpenJDK Community.

    Корпорация Oracle также анонсировала выход комплекса продуктов Oracle Java SE Embedded 8, использующих новые функции Java SE 8 и оптимизированных для встраиваемых систем категории от среднего до высшего класса. Новые версии Java SE 8 и Java ME 8 находятся на прямом пути сближения друг с другом.

    Используя единую платформу Java 8 для встраиваемых устройств, настольных систем, серверов центра обработки данных и инфраструктуры облачных вычислений, клиенты смогут разворачивать приложения быстрее, обрабатывать и анализировать данные «на лету» и максимально оперативно реагировать на события [5].

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

    Версия Java SE 8 является результатом совместной разработки инженеров Oracle и членов мирового сообщества разработчиков Java через OpenJDK Community и JCP.

    Java SE 8 позволяет повысить эффективность труда разработчиков и значительно улучшить производительность приложений за счет уменьшения повторяющихся типовых частей программного кода (boilerplate code), улучшения функций коллекций и аннотаций, упрощения моделей параллельного программирования и оптимизации использования возможностей современных многоядерных процессоров [5].

    Главными новинками комплекта средств разработки JDK 8 являются: поддержка лямбда — выражений, развиваемых в рамках проекта Project Lambda (JSR 335); механизм Nashorn JavaScript Engine; набор «компактных профилей» Compact Profiles; а также удаление области памяти «permanent generation» из виртуальной машины HotSpot JVM. А полный список новых функций и возможностей JDK 8 весьма широк.

    Платформа разработки Oracle JDK 8 уже продемонстрировала рекордную производительность для четырехсокетных систем на Intel-серверах NEC и двухсокетных систем на серверах Oracle SPARC T5, показав выигрыш в производительности от 12% до 41% по сравнению с JDK 7 на той же конфигурации Oracle (результаты теста NEC; результаты теста Oracle) [5].

    Новые функции и усовершенствования клиента Java также доступны как часть новейшей версии JavaFX в составе JDK 8. Нововведения и улучшения в JavaFX включают: встраиваемый стек специализированной графики; новые элементы управления пользовательским интерфейсом; новую тему оформления Modena; функции, позволяющие разработчикам встраивать контент Swing в приложения JavaFX; новые функции 3D-графики; и дополнительную поддержку HTML 5 [5].

    Обратная совместимость Java SE 8 с предыдущими версиями платформы позволяет сохранить наработанные приемы разработки программного обеспечения Java и защитить инвестиции в технологии Java [5].

    4. Web — сервис в Java SE 8

    XML (расширяемый язык разметки) — это мета — язык разметки, широко используемый в настоящее время. XML разработан консорциумом World Wide Web в комитете, возглавляемом Джоном Босаком (Jon Bosak). В настоящее время XML широко используется для передачи данных между программами [4].

    Модель обработки XML описывает шаги-операции, которые должно выполнить приложение для обработки полной XML; приложения, которые реализуют такую модель, принято называть XML-парсерами. Можно достаточно просто интегрировать любой XML-парсер в любые Java-приложения с помощью Java API for XML Processing (JAXP). JAXP позволяет приложениям разбирать и преобразовывать XML-документы с помощью API, который не зависит от определенной реализации XML-процессора. Благодаря plug-in- подобному механизму разработчики могут менять реализацию XML-процессора (XML-парсер) на другую без необходимости изменять код самого приложения [4].

    Спецификация API Java Standard Edition 8:

    java.applet — обеспечивает классы, необходимые, чтобы создать апплет и классы, которые апплет использует, чтобы связаться с его контекстом апплета.

    java.awt — содержит все классы для того, чтобы создать пользовательские интерфейсы и для рисования графики и изображений.

    java.awt.color — обеспечивает классы для цветовых пространств.

    java.awt.datatransfer — обеспечивает интерфейсы и классы для того, чтобы передать данные между и в пределах приложений.

    java.awt.dnd — перетащите и Отбрасывание является жестом непосредственного управления, найденным во многих системах графического интерфейса пользователя, который обеспечивает механизм, чтобы передать информацию между двумя объектами, логически связанными с элементами представления в GUI.

    java.awt.event — обеспечивает интерфейсы и классы для того, чтобы иметь дело с различными типами событий, запущенных компонентами AWT.

    java.awt.font — обеспечивает классы и интерфейс, касающийся шрифтов.

    java.awt.geom — обеспечивает Java 2-D классы для определения и выполнения операций на объектах, связанных с двумерной геометрией.

    java.awt.im — обеспечивает классы и интерфейсы для входной платформы метода.

    java.awt.im.spi — обеспечивает интерфейсы, которые включают разработке входных методов, которые могут использоваться с любой средой выполнения Java.

    java.awt.image — обеспечивает классы для создания и изменения изображений. И другие.

    В версии Java SE 8 внедрены значительные усовершенствования, оказывающие влияние на технологии и прикладные программные интерфейсы API, образующие ядро платформы Java. Многие из прежних принципов и приемов программирования на Java больше не нужны, а такие новые средства, как лямбда – выражения, ссылки на методы, повторяемые аннотации, аннотации на типы данных и другие повышают производительность труда программистов.

    Платформы и средства создания Web-сервисов

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

    BEA Systems

    омпания BEA предлагает создание Web-сервисов на платформе J2EE с использованием протокола SOAP. J2EE-приложения реализуют EJB и JMS как Web-сервисы. Сервисы используют WSDL как язык описания сервисов и обеспечивают доступ к компонентам посредством протокола SOAP 1.1 и транспортного уровня на основе HTTP. Для интеграции с партнерами применяются реестры на основе UDDI. В отличие от других компаний, BEA (и Borland) для управления бизнес-транзакциями между предприятиями использует Business Transaction Protocol (BTP). Этот протокол не зависит от стека и может быть реализован с использованием таких стандартов, как ebXML или SOAP.

    Компания BEA четко выделяет два типа Web-сервисов — сервисы удаленного вызова процедур (RPC-based Web Services) для поддержки простых Web-сервисов и сервисы сообщений (Message-based Web Services) для поддержки асинхронных моделей коммуникаций, которые требуются для создания корпоративных Web-сервисов. Поддержка обоих типов Web-сервисов реализуется на платформе BEA WebLogic Enterprise Platform — это показано на рис. 1.

    Сервисы удаленного вызова процедур

    К этому типу Web-сервисов относятся сервисы, основанные на удаленном вызове процедур и реализуемые с использованием EJB без сохранения состояния (Stateless EJB). В этом случае клиентское приложение получает доступ к удаленному объекту. Взаимодействие между клиентом и Web-сервисом осуществляется на основе специфичных для сервиса интерфейсов. Вызывая Web-сервис, клиент посылает ему параметры, которые вызывают соответствующие методы сервиса, а сервис возвращает клиенту определенные данные. Поскольку такое взаимодействие предполагает осуществление синхронных операций между клиентом и сервером (клиент посылает запрос и ожидает ответа, прежде чем перейти к выполнению каких-либо других действий), сервисы удаленного вызова процедур напоминают традиционные распределенные объектные модели типа RMI или DCOM.

    Сервисы сообщений

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

    Платформа для создания и выполнения Web-сервисов, предлагаемая фирмой BEA, называется BEA WebLogic E-Business Platform и содержит следующие ключевые компоненты:

    • BEA WebLogic Server — сервер приложений, входящий в лидирующую тройку продуктов на рынке. Представляет собой основу платформы BEA WebLogic E-Business Platform и обеспечивает доступ и внедрение простых Web-сервисов. В настоящее время предусмотрена поддержка таких стандартов, как XML, SOAP, UDDI и WSDL;
    • BEA WebLogic Integration — открытый и расширяемый продукт, позволяющий интегрировать партнеров через Web и создавать комплексные Web-сервисы с поддержкой транзакций и защиты информации, работающие на основе стандартов ebXML и BTP;
    • BEA WebLogic Personalization Server — обеспечивает настройку Web-сервисов под конкретных клиентов в зависимости от пользовательских настроек, бизнес-правил или других критериев;
    • BEA WebLogic Workshop — средство разработки Web-сервисов на платформе BEA WebLogic E-Business Platform.

    Создание Web-сервисов с помощью интегрированной среды WebLogic Workshop облегчается тем, что данная среда предоставляет обширный набор визуальных средств для разработки дизайна сервисов. Использование специальных компонентов обеспечивает доступ к таким ресурсам, как базы данных, компоненты EJB, а также к другим Web-сервисам и существующим приложениям. В состав продукта входят следующие компоненты: ServiceControl, TimerControl, EJBControl и JMSControl. Логика работы сервиса сохраняется в JWS-файле, содержимое которого графически отображается в режиме дизайна (рис. 2).

    Приложения, создаваемые с помощью WebLogic Workshop, полностью соответствуют спецификации J2EE и не требуют внедрения на сервер приложений BEA WebLogic Server — достаточно любого сервера приложений, поддерживающего стандарт JWS. В состав WebLogic Workshop входит версия BEA WebLogic Server, поэтому Web-сервисы безо всяких проблем внедряются как файлы Enterprise Archive (EAR).

    Завершая рассмотрение продуктов фирмы BEA Systems, отметим, что компания хорошо позиционирована на рынке, предлагает один из ведущих серверов приложений, имеет четкую стратегию по поддержке Web-сервисов и связанных с ними технологий и следует ей, разумно подходя к приобретению продуктов сторонних компаний и развивая собственные продукты.

    Дополнительную информацию по продуктам фирмы BEA можно получить по адресу: http://www.beasys.com/products/index.shtml.

    Borland

    ирму Borland можно смело назвать пионером в области разработки средств создания Web-сервисов для различных платформ. Так, Delphi 6 позволяет создавать и использовать SOAP и WSDL на платформе Windows, Borland Kylix — на платформе Linux, а JBuilder — на платформе Java.

    Продукты компании Borland можно разделить на три категории: разработка, развертывание и управление. К первой категории относятся:

    • Borland Enterprise Studio — это полная платформа для моделирования, разработки и внедрения решений для бизнеса и электронной коммерции. Продукт выпускается в двух вариантах: Borland Enterprise Studio for Java (включает JBuilder) и Borland Enterprise Studio for Windows (включает Delphi);
    • C++Builder — популярное средство для разработки Windows-приложений на языке C++; в версии 6 позволяет разрабатывать Web-сервисы и приложения на их основе. C++Builder 6 обеспечивает поддержку клиентов Web-сервисов, использующих как SOAP encoding, так и Document Literal style. Последний входит в состав Microsoft .NET Web Services. Предоставляя набор высокоуровневых компонентов и визардов, в том числе автоматическую публикацию WSDL-документов для Web-сервисов в режиме исполнения и генерацию кода на основе WSDL (WSDL Importer), C++Builder 6 позволяет разработчикам легко адаптировать существующие приложения для работы в режиме Web-сервисов и доступа к ним как во внутрикорпоративной сети, так и через Web;
    • Delphi 6 — обеспечивает быструю разработку приложений с использованием технологий CORBA и Web Services для платформы Windows. Необычайная легкость создания Web-сервисов позволяет быстро трансформировать существующие приложения в Web-систему. Интегрированная поддержка Apache дает возможность быстро создавать динамические Web-приложения с доступом к базам данных. Совместимость с Borland Kylix 2 обеспечивает кросс-платформенную разработку (в том числе многозвенных систем на основе CORBA IIOP и SOAP) без ущерба функциональности. Возможность доступа к компонентам Enterprise JavaBeans, развернутым на Borland AppServer, и наличие высокоуровневых средств работы с XML позволяют создавать решения корпоративного уровня;
    • JBuilder — включает наиболее полный набор средств визуальной разработки для создания приложений на платформе Java 2/J2EE 1.3. JBuilder 6 удовлетворяет практически всем возможным требованиям разработчиков конечных решений, позволяя интегрировать Web- и корпоративные приложения и обеспечивая группы разработчиков удобной и масштабируемой средой разработки. Визуальные инструменты и мастера упрощают и ускоряют разработку приложений. JBuilder 6 позволяет вести разработку на нескольких платформах, включая Windows, Linux, Solaris и Mac OS X. В настоящее время JBuilder занимает более 60% рынка коммерческих средств разработки на платформе Java;
    • Kylix — обеспечивает быструю разработку приложений с применением технологий CORBA и Web Services для платформы Linux. Уникальная легкость создания Web-сервисов дает возможность оперативно трансформировать существующие приложения в Web-систему. Интегрированная поддержка Apache позволяет быстро создавать динамические Web-приложения с доступом к базам данных. Совместимость с Borland Delphi 6 обеспечивает кросс-платформенную разработку без ущерба функциональности, включая разработку многозвенных систем на основе CORBA IIOP и SOAP. Возможность доступа к компонентам Enterprise JavaBeans, развернутым на Borland AppServer, и наличие высокоуровневых средств работы с XML позволяют создавать решения корпоративного уровня.

    Для развертывания приложений Borland предлагает Borland e-business platform — основу для создания полноценной информационной инфраструктуры современного предприятия. Ориентированность на стандарты, уникальная гибкость и масштабируемость — залог успеха проектов, построенных на базе данных технологий. К этой категории относятся следующие продукты:

    • Borland Enterprise Server — первый интегрированный комплекс средств на основе новейших промышленных стандартов CORBA 2.4 и J2EE 1.3. Borland Enterprise Server, развивающий функциональность AppServer и VisiBroker, занимает ведущие позиции в области инфраструктурного программного обеспечения для телекоммуникационного и банковско-финансового секторов, в которых масштабируемость, высокая скорость обработки транзакций и доступность в режиме 24Ѕ7 являются критически важными требованиями;
    • Borland Enterprise Server AppServer Edition позволяет разработчикам сконцентрировать свои усилия на создании прикладной логики в виде компонентов EJB (Enterprise JavaBeans). Лежащее в основе AppServer инфраструктурное ядро VisiBroker добавляет к богатству функциональности J2EE мощь коммуникативных средств CORBA IIOP (Internet Inter-ORB Protocol), удовлетворяющих требованиям таких новых и актуальных стандартов, как CORBA Portable Object Adapter (POA), Object-by-value (OBV — передача объектов по значению) и RMI-over-IIOP;
    • Borland Enterprise Server Web Edition включает Web-сервер Apache и Web-контейнер Tomcat, которые были усовершенствованы Borland (в Apache встроен IIOP plug-in, конвертирующий HTTP-запросы в IIOP). Также в поставку BES Web Edition включена база данных JDataStore, которая не только удовлетворяет стандартные потребности разработчиков в области СУБД, но и позволяет осуществлять кэширование сессий. Borland Web Engine, интегрирующий Borland Web Server и Borland Web Container, построен на базе ядра VisiBroker, при помощи которого происходит управление балансом загрузки, а также обеспечивается отказоустойчивость среды развертывания сервлетов/JSP, Web-приложений и Web-сервисов, созданных с использованием Delphi;
    • Borland InterBase 6 — SQL-сервер баз данных, объединяет простоту использования, низкие затраты на сопровождение и мощность систем корпоративного уровня. Компания Borland гарантирует, что InterBase 6 совмещает силу мощной, апробированной архитектуры с развитыми технологиями, необходимыми для успеха прикладных систем.

    И наконец, для управления и мониторинга прикладной инфраструктуры предприятия Borland предлагает AppCenter — уникальное средство управления и мониторинга объектных распределенных систем. Borland AppCenter 4.1 включает развитые инструменты управления объектами CORBA и компонентами Enterprise Java Beans (EJB), что делает его незаменимым средством для обеспечения жизненного цикла современных информационных систем. Интеграция AppCenter 4 с VisiBroker 4.x и Borland AppServer 4.x (включая версию 4.5.1) обеспечивает создание единой высоконадежной информационной среды предприятия.

    Разработка Web-сервисов средствами Delphi 6, C++ Builder и Kylix базируется на трех основных компонентах:

    • BizSnap — для создания Web-сервисов на основе XML и SOAP. BizSnap упрощает обмен, трансформацию и манипуляцию XML-документами, обеспечивая гибкость и расширяемость бизнес-приложений, приводя их в готовность к использованию в электронном бизнесе новой волны;
    • WebSnap — для создания и отладки Web-приложений. Инструменты, входящие в состав WebSnap, например отладочный Web-сервер, упрощают отладку и тестирование приложений. Возможность плотной интеграции приложений WebSnap в корпоративные Web-сайты и порталы, разработанные с использованием таких известных средств, как DreamWeaver и FrontPage, а также поддержка серверных сценариев на JavaScript, VBScript и других языках позволяют вам задействовать существующие наработки в области Web-приложений;
    • DataSnap — для создания соединений с базами данных для приложений и сервисов через XML, DCOM или CORBA. DataSnap оптимизирует число соединений и потоки данных между клиентами и серверами баз данных за счет централизации доступа к данным и их обновления во всех процессах и приложениях электронного бизнеса, а также позволяет масштабировать приложения в зависимости от изменения объемов обрабатываемых данных.

    Дополнительную информацию о продуктах фирмы Borland можно получить по адресу: http://www.borland.com/.

    Hewlett-Packard

    ewlett-Packard была первой компанией, которая стала заниматься исследованиями в области Web-сервисов еще в 1995 году. В 1999 году компания объявила о платформе E-speak, ставшей прообразом современной линейки продуктов фирмы, но до марта 2001 года никакой видимой активности в этом направлении не проявляла. В настоящее время объявлено о большом наборе программных продуктов под общим названием NetAction. Этот набор можно разделить на следующие основные компоненты:

    • HP Netaction Internet Operating Environment (IOE) — интегрированная платформа для построения и внедрения решений, позволяющая сконцентрироваться на бизнес-проблемах, а не на разработке программ;
    • HP Opencall — платформа для разработки сервисов, связанных с доставкой данных, голосовой информации и т.п.;
    • HP Chai — полная платформа для доставки Web-сервисов на различные устройства. Представляет собой настраиваемую Java-среду для доступа к Web, а также модульные блоки Embedded Linux.

    Взаимодействие этих компонентов, а также ряда других продуктов фирмы показано на диаграмме (рис. 3).

    Рассмотрим основные компоненты HP Netaction IOE более подробно:

    • HP Application Server — сервер приложений «нового поколения» с сервис-ориентированной архитектурой и поддержкой подключаемых сервисов;
    • HP Application Server Resilient Edition — версия сервера приложения для поддержки непрерывной работы, сообщений, транзакций и других технологий для обеспечения работоспособности Web-сервисов;
    • HP Process Manager — средство управления процессами, позволяющее графически определять бизнес-процессы и автоматизировать их выполнение;
    • HP Process Manager, Interactive Edition — средство быстрой (посредством графических средств моделирования) разработки композитных приложений для основанных на базе Web или мобильных сервисов;
    • HP Total-e-Transactions — средство управления транзакциями для J2EE-приложений;
    • HP Message Service — средство поддержки J2EE Java Message Service;
    • HP Web Services Registry — позволяет потребителям создавать и управлять корпоративными реестрами и доступом к Web-сервисам. Включает HP Registry Composer — графическое средство для регистрации и поиска сервисов как в Web-, так и в корпоративных реестрах;
    • HP Total-e-Syndication — средство автоматизации доставки наполнения Web-сервисов, интегрирующееся с другими продуктами фирмы;
    • HP Mobile Portal Solution — средство для доставки сервисов и наполнения на мобильные устройства;
    • HP Web Services Transactions — средство для управления транзакциями, состоящее из трех компонентов: координатора транзакций, сервера транзакций и клиентских библиотек, используемых для инициализации транзакций;
    • HP Web Services Platform — основанная на стандартах открытая архитектура для разработки, внедрения, регистрации, поиска и потребления Web-сервисов, в том числе программных средств и утилит для реализации Java-объектов в виде Web-сервисов. Архитектура HP Web Services Platform показана на рис. 4.

    Для разработки сервисов предлагается использование средства HP Service Composer, которое предоставляет графический интерфейс для создания WSDL-интерфейсов для Java-объектов и поддерживает автоматическое внедрение Web-сервисов на сервер приложений HP Application Server.

    Hewlett-Packard занимает собственную нишу на рынке средств создания Web-сервисов, сравнимую, может быть, с нишами, занимаемыми IBM и Sun, — компания обладает и аппаратными платформами для выполнения Web-сервисов, и программными платформами для внедрения и управления сервисами, а при успешном слиянии с Compaq у Hewlett-Packard появятся и консалтинговые сервисы.

    отя IBM и не была в числе первых компаний, сформулировавших свое видение Web-сервисов, она фактически является лидером (как и с Microsoft) по продвижению стандартов и технологий, связанных с Web-сервисами. В настоящее время компания IBM не только предлагает широкий спектр продуктов для создания и внедрения Web-сервисов (от WebSphere Suite до средств хостинга Web-сервисов, поддержки Web-сервисов на уровне СУБД DB2 — в семействе продуктов Tivoli и Lotus), но и имеет определенную политику в отношении развития самой концепции Web-сервисов и активно участвует в ее продвижении, сотрудничая с другим лидером — Microsoft.

    Говоря о предлагаемых IBM продуктах для создания и внедрения Web-сервисов, следует в первую очередь отметить такие средства, как WebSphere Studio для создания сервисов на языке Java, сервер приложений WebSphere Application Server, MQ Series для управления сообщениями для объединения систем, включая поддержку SOAP и Web-сервисов на уровне СУБД DB2.

    Основные продукты

    Из обширного семейства продуктов фирмы IBM можно выделить две линейки, представляющие прежде всего интерес для тех, кто собирается создавать Web-сервисы: семейство продуктов WebSphere Studio и семейство продуктов WebSphere Application Server:

    • WebSphere Studio — это набор средств для создания Web-сервисов. Существенно то, что данный продукт рассчитан не только на разработчиков, но и на Web-дизайнеров, художников и Web-мастеров, которые могут принимать участие в создании сервисов. WebSphere Studio включает такие средства, как Applet Designer — визуальное средство для создания Java-аплетов, WebArt Designer — для создания графических элементов и Animated Gif Designer — для создания анимированных GIF-изображений. Помимо этого отметим наиболее важные компоненты, входящие в состав WebSphere Studio: WebSphere Studio Site Developer — средство для создания и публикации Web-сервисов с поддержкой основных Web-стандартов, WebSphere Studio Application Developer — полный набор средств, включенных в WebSphere Studio Site Developer, а также средства мониторинга и тестирования сервисов;
    • WebSphere Application Server — этот серверный продукт обеспечивает поддержку всех основных стандартов Web-сервисов, интегрируется с WebSphere Studio, облегчая таким образом создание и внедрение Web-сервисов. Кроме того, в состав WebSphere Application Server включены средства интеграции с другими продуктами фирмы IBM — например Lotus Domino и WebSphere Commerce Suite. WebSphere Application Server — один из первых серверов приложений, совместимый со спецификацией J2EE 1.3.

    По данным Giga Information Group, платформа WebSphere является наиболее важной для создания Web-сервисов — ее указали 33% опрошенных. Второй по значимости оказалась Microsoft .NET, а третьей — J2EE с дополнительными технологиями поддержки Web-сервисов (рис. 5).

    Другие продукты

    Среди огромного числа продуктов, предлагаемых IBM, есть такие, которые так или иначе связаны с Web-сервисами. Наиболее важными из них являются следующие:

    • VisualAge for Java — визуальное средство разработки на языке Java, интегрируемое с семейством продуктов WebSphere Studio;
    • DB2 — реляционная база данных, поддерживающая основные стандарты Web-сервисов, в том числе XML, UDDI и SOAP. DB2 при использовании совместно с DB2 XML Extender позволяет извлекать и хранить данные через Web-сервисы;
    • Web Services Hosting Technology — семейство продуктов для управления Web-сервисами, позволяющее анализировать использование сервисов и использовать различные модели оплаты;
    • Web Services Gateway — набор различных функций защиты доступа, включая поддержку аутентификации пользователей;
    • Web Services Toolkit — набор средств для разработки Web-сервисов.

    Web Services Toolkit, бесплатно распространяемый IBM набор средств для разработки Web-сервисов, представляет собой реализацию архитектуры Web-сервисов, описанную в документе «Web Services Architecture Overview», доступном на Web-сайте фирмы IBM. Этот набор содержит следующие компоненты:

    • клиентская часть:
      • UDDI4J API для управления UDDI-реестрами (как корпоративными, так и расположенными в Internet) через функции Save, Delete, Find и Get;
      • Services Registry API для управления UDDI-реестрами через функции Publish, Unpublish и Find;
    • спецификации WSDL 1.1, Web Services Flow Language (WSFL), WS-Inspection и HTTPR (Reliable HTTP);
    • набор средств для разработки Web-сервисов:
      • утилиты на базе AXIS, включая утилиту Java2WSDL для генерации WSDL-документов на основе Java-кода и утилиту WSDL2Java для генерации Java-прокси-кода на основе WSDL-документа;
      • Web Services Toolkit Configuration Tool для настройки и конфигурации Web Services Toolkit;
      • Utility Web Services Portal Tool для управления пользователями Web-сервисов, включенными в состав Utility Web Services;
    • набор Web-сервисов (Utility Web Services), предоставляющих набор функций, которые можно использовать при создании бизнес-приложений:
      • Notification;
      • Common Data;
      • User Identity;
      • Metering;
      • Accounting;
      • Contract.
    • примеры использования Utility Web Services;
    • набор программных средств для развертывания Web-сервисов, включая WebSphere Application Server Micro Edition и UDDI-реестр;
    • утилита WSDLdoc для автоматической генерации документации на основе WSDL-файлов;
    • набор Java-классов для программного управления WSDL-документами (WSDL4J);
    • SOAPConnect for LotusScript — средство, позволяющее приложениям Lotus Domino и Lotus Notes использовать Web-сервисы;
    • UDDI4J для управления UDDI-реестрами из Java-приложений.

    Архитектура Web Services Toolkit представлена на рис. 6. Здесь показаны основные компоненты Web Services Toolkit. Средства создания Web-сервисов, расположенные в нижней части справа, включают утилиты для обнаружения и публикации сервисов, а также для создания сервисов на основе существующих Java-приложений. Компоненты времени исполнения разделяются на серверные и клиентские компоненты. К серверным компонентам относятся UDDI-реестр для создаваемых Web-сервисов, набор Utility Web Services и примеры использования сервисов. Клиентские компоненты расположены в приложениях, которые обращаются к серверным компонентам, и поддерживают Java-интерфейсы, позволяющие приложениям осуществлять следующие операции:

    • публиковать и находить Web-сервисы, непосредственно обращаясь к UDDI (UDDI4J);
    • публиковать и находить Web-сервисы через WSDL-документы (WSDL-прокси);
    • обращаться к Web-сервисам через SOAP.

    Отметим, что Web Services Toolkit не является коммерческим и его задача заключается в предоставлении набора технологий для широкого использования разработчиками. Ряд этих технологий впоследствии может войти в новые версии коммерческих продуктов типа WebSphere Studio Application Developer, WebSphere Application Server или в другие продукты IBM, Tivoli или Lotus (см. http://www.lotus.com/developer/).

    В будущих версиях Web Services Toolkit планируется реализовать следующие компоненты: дополнительная поддержка защиты, расширения для управления сервисами, поддержка WorkFlow, поддержка новых версий Apache AXIS, предоставление среды для создания, публикации и поиска сервисов, улучшение интеграции с UDDI-реестрами.

    Дополнительная информация о Web Services Toolkit доступна на Web-сайте по адресу: http://www.alphaworks.ibm.com/tech/webservicestoolkit/.

    Microsoft

    icrosoft играет активную роль на рынке средств создания и потребления Web-сервисов и совместно с IBM участвует практически во всех связанных с этой технологиях новациях. Практически нет ни одного стандарта (начиная со стандарта языка XML), в принятии которого не была бы заметна роль Microsoft. Примером заинтересованности Microsoft в лидерстве на рынке Web-сервисов может служить факт создания совместно с IBM в феврале 2002 года ассоциации Web Services Interoperability Organization (WS-I, http://www.ws-i.org/), которая к настоящему времени насчитывает более 100 членов.

    В качестве платформы для Web-сервисов Microsoft предлагает .NET Framework и набор корпоративных серверных приложений (семейство .NET Enterprise Servers). На сегодняшний день .NET представляет собой наиболее полную реализацию технологий Web-сервисов. Для разработки и потребления Web-сервисов Microsoft предлагает Visual Studio .NET — визуальную среду, поддерживающую все языки программирования и интегрирующуюся с существующими серверами компании.

    Полнота реализации фирмой Microsoft технологий Web-сервисов подтверждается данными исследований, проведенных компанией Gartner, Inc. (см. «Web Services Major Vendors», D. Smith, August 2001 — рис. 7).

    Продукты Microsoft для создания Web-сервисов подразделяются на пять основных категорий — .NET Experiences, клиенты, XML Web-сервисы, утилиты и серверы:

    • XML Web-сервисы — представляют собой строительные блоки компонентов, основанные на стандартах Web-сервисов: SOAP, WSDL, UDDI и XML. Первой, но неудачной попыткой создания подобных блоков стал набор сервисов, известных как .NET My Services, для хранения различной персональной информации. К этой категории также относятся такие сервисы, как .NET Passport и .NET Alerts;
    • .NET Experiences — Microsoft описывает .NET Experiences как набор Web-сервисов, которые позволяют «обращаться к информации через Internet или из обычных приложений». Пока различия между XML Web-сервисами и .NET Experiences определены недостаточно четко, но первыми продуктами в категории .NET Experiences стали: MSN — пользовательский Web-узел, поддерживаемый Microsoft, bCentral — Web-узел для малого бизнеса и Microsoft Visual Studio .NET — средство разработки приложений для .NET;
    • клиенты — к этой категории относятся как аппаратные, так и программные компоненты. Аппаратным компонентом может быть любое устройство, способное обращаться к Web-сервисам и поддерживающее TCP/IP-коммуникации, в том числе персональные компьютеры, телефоны, «ручные» компьютеры, игровые консоли и т.п. С точки зрения Microsoft, тип аппаратного компонента не имеет значения — главное, чтобы он базировался на каком-либо варианте платформы Windows; будь то Windows XP или Windows CE;
    • серверы — к данной категории относятся продукты семейства .NET Enterprise Servers, в том числе Microsoft Windows 2000 и др.;
    • утилиты — Microsoft предлагает большой набор программных средств для создания .NET Web-cервисов, в том числе Microsoft Visual Studio .NET и .NET Framework.

    Архитектура платформы Microsoft .NET показана на рис. 8.

    Семейство продуктов Microsoft

    Семейство продуктов Microsoft .NET пополняется практически каждый месяц, но для нашего обзора достаточно уже существующих серверных продуктов, средств разработки, операционных систем и Web-сервисов:

    • серверные продукты базируются на серверной операционной системе Windows 2000, на смену которой в скором времени придет ОС Windows .NET Server. Среди различных серверных продуктов следует выделить: Windows 2000 Server — серверную операционную систему, включающую поддержку каталогов, Web, приложений, коммуникаций, файловые сервисы и сервисы печати, Application Center для управления группами серверов; Mobile Information Server — сервер, позволяющий доставлять информацию и .NET-сервисы на мобильные устройства; BizTalk Server — сервер для поддержки обмена XML-информацией и документами между приложениями и бизнесами; Commerce Server — сервер для создания приложений электронной коммерции; Content Management Server — сервер для управления наполнением Web-сайтов и доставки этого наполнения различным клиентам;
    • средства разработки. Основным продуктом здесь является Microsoft Visual Studio .NET — средство для создания .NET-сервисов, поддерживающее такие языки программирования, как Visual Basic, C# и J#. Последний, однако, формально поддерживая синтаксис языка Java, не позволяет создавать стандартные Java-приложения — написанный код будет работать только под управлением Microsoft .NET;
    • операционные системы и прикладное ПО. Операционные системы являются ядром стратегии Microsoft .NET. Сюда входят все версии Windows, включая Windows CE для PDA, Windows Embedded и версии Windows, работающие на консоли Microsoft Xbox. Из прикладного программного обеспечения фирмы Microsoft отметим пакет Microsoft Office, для последней версии которого существует поддержка .NET;
    • Web-сервисы. Сервисы — это XML-компоненты и строительные блоки, которые могут использоваться Microsoft и другими компаниями для построения Web-сервисов.

    Некоторые вопросы использования Microsoft Visual Studio .NET для создания Web-сервисов рассматривались в статье «Web нового поколения — Web-сервисы», опубликованной в КомпьютерПресс № 6’2001.

    Дополнительную информацию о поддержке Web-сервисов можно найти на Web-сайте фирмы по адресу: http://www.microsoft.com/webservices/.

    Oracle

    есмотря на то что фирма Oracle давно обсуждала проблемы, связанные с Web-сервисами, вполне четкая концепция поддержки этой технологии сформировалась относительно недавно. Теперь поддержка Web-сервисов сопровождается широкомасштабной кампанией, лозунг которой можно сформулировать следующим образом: «С использованием продуктов Oracle разработка Web-сервисов будет в десять раз быстрее, в десять раз менее ресурсоемкой, а сами сервисы будут в десять раз надежнее».

    Oracle имеет два подхода к созданию и использованию Web-сервисов: во-первых, фирма предлагает программную инфраструктуру, которую разработчики могут использовать для создания Web-сервисов, а во-вторых, разрабатывает и продает программные продукты как Web-сервисы.

    Более того, Oracle использует Web-сервисы для того, чтобы расширить сферу влияния за пределы рынка баз данных. Началом этому послужило появление E-Business Suite — набора корпоративных продуктов, которые могут работать через Internet.

    Для разработки Web-сервисов Oracle предлагает J2EE-совместимую среду Oracle 9i JDeveloper (этот продукт доступен в виде бесплатной версии). Для выполнения Web-сервисов применяется сервер приложений Oracle 9i Application Server, а для создания приложений, использующих данные, СУБД Oracle 9i Database.

    Кроме того, Oracle предлагает E-Business Suite — серверное программное обеспечение, работающее через Internet и включающее такие компоненты, как CRM, B2B, управление финансами, проектами, ресурсами, а также компоненты Business Intelligence. Набор Oracle Small Business Suite также работает через Internet и содержит модули для ведения счетов, создания отчетов, управления заказчиками и ряд других.

    На рис. 9 показана инфраструктура Web-сервисов, предлагаемая Oracle.

    Ниже мы рассмотрим основные продукты фирмы Oracle более подробно. Как мы упоминали выше, Oracle предлагает две линейки продуктов. К первой относятся продукты, предназначенные для разработчиков Web-сервисов, ко второй — продукты для потребителей готовых Web-сервисов.

    Средства разработки Oracle 9i

    Семейство средств разработки Oracle 9i представляет собой набор интегрированных программных продуктов, используемых для создания и внедрения Web-сервисов. Еще раз отметим, что это семейство состоит из трех основных компонентов: Oracle 9i JDeveloper для разработки Web-сервисов, Oracle 9i Application Server для выполнения Web-сервисов и Oracle 9i Database для создания приложений, работающих с данными, которые могут использоваться совместно с Web-сервисами:

      Oracle 9i JDeveloper — это J2EE-совместимая платформа для разработки Web-сервисов на языке Java. Oracle 9i JDeveloper может работать под управлением Windows, Linux и Solaris. Существенным здесь является то, что созданные с использованием Oracle 9i JDeveloper решения легко внедряются на сервер приложений Oracle 9i Application Server (Oracle утверждает, что для этого достаточно одного щелчка кнопки мыши — sigle click delpoyment). В состав Oracle 9i JDeveloper входят и средства для работы с базами данных, что не удивительно для компании, в арсенале которой имеется Oracle 9i Database. Продукт поддерживает создание Web-сервисов и их внедрение как Java-сервисов, а также внедрение на платформе Microsoft .NET. Таким образом, разработчики получают единую среду для создания и внедрения Web-сервисов на обеих платформах. Для работы с XML предлагается XML Developer’s Toolkit (XDK), в состав которого входят: XML Parsers (Java, C, C++, PL/SQL), XSLT Processors, XML >

    Oracle Web Services Business Suites

    Семейство Oracle Web Services Business Suites — это набор программных продуктов, функционирующих как Web-сервисы. E-Business Suite содержит полный комплект корпоративных средств, работающих через Internet, куда входят средства для управления клиентами, средства интеграции бизнесов, финансовые средства, средства управления проектами, ресурсами и набор модулей для аналитической обработки информации. В состав Small Business Suite (ближайший аналог — bCentral фирмы Microsoft) включены средства для управления счетами, платежами, средства создания Web-магазинов, онлайновой оплаты счетов, управления отчетами и т.п. Использование Small Business Suite обходится в 99 долл. в месяц. Помимо этого Oracle предлагает дополнительные программные продукты, выполненные в виде Web-сервисов. Сюда относятся средства для управления продажами, средства поддержки клиентов, средства для создания порталов и т.п.

    Демонстрируя свою приверженность Web-сервисам, Oracle использует эту технологию для управления своими внутренними операциями. Oracle показала потенциальную модель и доказала, что программное обеспечение может распространяться как набор сервисов.

    Завершая рассмотрение средств для создания Web-сервисов, а также предлагаемых Oracle Web-сервисов, отметим, что несомненным преимуществом продуктов данной фирмы является широкий набор программных продуктов, легко интегрирующихся между собой, не последнюю роль в котором играет Oracle 9i Database, широко используемая при создании различных корпоративных решений. Еще одним преимуществом является то, что продукты компании не связаны с какой-либо конкретной аппаратной платформой.

    Более подробную информацию об Oracle Web Services Business Suites можно получить по адресу: http://www.oracle.com/applications/index.html.

    Sun Microsystems

    ирма Sun давно приводила аргументы в пользу того, что сервисы, доступные через Web, в один прекрасный момент заменят традиционные приложения. Тем не менее у Sun ушло достаточно много времени на то, чтобы ее видение проблемы сформировалось в четкую концепцию, поэтому планы фирмы по отношению к Web-сервисам оформились сравнительно недавно.

    Sun объявила инициативу Sun ONE (Open Net Environment) в октябре 2001 года (рис. 10). Необходимость появления этой платформы была обусловлена следующим обстоятельством: несмотря на то что J2EE обеспечивает надежную, масштабируемую, переносимую платформу для создания корпоративных решений, она до недавнего времени не имела стандартизованной поддержки Web-сервисов.

    Sun ONE — это и архитектура, и платформа, и набор средств для создания и внедрения основанных на открытых стандартах (XML, UDDI, WSDL, SOAP) Web-сервисов, называемых в терминах Sun сервисами по запросу — Services on Demand (рис. 11).

    Платформа Sun ONE базируется на следующих основных компонентах: на операционной системе Solaris, платформе Java 2 Platform, наборе серверов семейства iPlanet и средствах разработки Forte Development Tools. Ниже мы рассмотрим эти компоненты более подробно и перечислим их основные характеристики и назначение.

    Solaris

    Solaris — это операционная система на базе UNIX, функционирующая на системах на основе SPARC и на основе Intel. Она разработана с учетом мультипроцессорной поддержки и 64-битной архитектуры. Вместе с операционной системой поставляются Forte for Java, Forte Developer 6 Tools, iPlanet Web Server, iPlanet Directory Server, набор офисных продуктов StarOffice и СУБД Oracle8i Enterprise Edition.

    В семейство Solaris входят следующие продукты:

    • Solaris Operating Environment — основа систем фирмы Sun. Это вычислительная среда для серверов любого уровня — от серверов отделов до массивных, объединенных в кластеры серверов, насчитывающих более 100 процессоров, — разработанная для мультипроцессорных 64-битных систем;
    • Trusted Solaris Operating Environment — расширяет возможности Solaris Operating Environment, защищая вычислительную среду от внутренних и внешних проникновений;
    • Solaris WBEM Services — используется для создания и модификации информации, хранимой в стандартном CIM-формате, облегчает администрирование Solaris Operating Environment и обеспечивает взаимодействие управляющих сервисов;
    • Solaris Bandwidth Manager — управляет сетевым трафиком;
    • Solaris Resource Manager — управляет системными ресурсами, обеспечивая их доступность и лучшее использование;
    • Solaris Easy Access Server — используется для включения систем на базе Solaris в сети на базе Windows NT;
    • Solaris PC NetLink — переносит сетевые сервисы типа Windows NT, файловые сервисы, сервисы печати, управление каталогами и аутентификацией с PC-серверов в среду Solaris Operating Environment;
    • Solaris Data Encryption — обеспечивает поддержку технологий шифрования для Solaris Operating Environment;
    • Solaris PDASync — синхронизует настольные приложения Solaris с устройствами на базе Palm OS и приложениями, выполняющимися на персональных компьютерах;
    • Sun Cluster — позволяет использовать базовые сервисы Solaris в рамках кластеров, обеспечивая полную совместимость с существующими приложениями для Solaris Operating Environment;
    • Sun Management Center — обеспечивает функции управления для Solaris Operating Environment, включая сервисы для управления аппаратными и программными конфигурациями. В дополнение к Sun Management Center предлагается Service Availability Manager, который увеличивает доступность сетевых серверов, выполняющихся локально или удаленно на системах Sun, осуществляет мониторинг и подтверждает доступность сетевых сервисов — Web-серверов, FTP-, Mail-, Calendar-сервисов и т.п. Дополнительным продуктом для Sun Management Center также является System Reliability Manager, который увеличивает надежность платформы и содержит ряд модулей для внедрения обновлений, слежения за файловой системой, запуска скриптовых программ и анализа протоколов сбоев операционной системы.

    Более подробную информацию об операционной системе Solaris можно получить по адресу: http://wwws.sun.com/software/solaris/.

    Java 2 Platform

    Java является ключевой технологией фирмы Sun, на которой базируется большинство предлагаемых ею продуктов и сервисов. С момента появления технологии Java базовая философия фирмы не изменилась: вы один раз пишете приложение на языке Java и оно способно работать на любой платформе, независимо от операционной системы. Для этого необходимо использование соответствующей виртуальной машины Java — Java VM. Самая новая версия платформы для разработки на языке Java — Java 2 Platform, Enterprise Edition (J2EE). С точки зрения фирмы Sun, приложения, которые будут выполнять функции Web-сервисов, должны быть написаны на языке Java. Java-приложения могут работать на любом устройстве, содержащем Java VM, включая персональные компьютеры, мобильные компьютеры, сотовые телефоны и беспроводные устройства.

    Более подробную информацию о Java можно получить по адресу: http://wwws.sun.com/software/java/index.html.

    В задачи данного обзора не входит рассмотрение всех интерфейсов и технологий, основанных на платформе J2EE. Здесь мы остановимся лишь на интерфейсах, обеспечивающих работу с XML-документами и создание и потребление Web-сервисов, — Java XML Pack и Java Web Services Developer Pack.

    Java XML Pack

    Пакет Java XML Pack — это набор интерфейсов и средств для разработки, публикации, обнаружения и потребления XML Web-сервисов для платформы Java 2 Platform. Входящие в состав Java XML Pack технологии можно разделить на две большие категории — средства для работы с XML-документами и средства для использования XML-технологий. К первой категории относятся:

    • Java API for XML Processing (JAXP) — набор интерфейсов для обработки XML-документов с использованием JAXP-совместимого парсера. Обеспечивается поддержка как событийной модели (SAX), так и древовидной модели (DOM) обработки XML-документов;
    • Java Architecture for XML Binding (JAXB) — средства для отображения между XML-документами и Java-классами, позволяющие использовать XML-документы как обычные Java-объекты.
    • К средствам использования XML-технологий, входящим в состав Java XML Pack, относятся:
    • Java API for XML Messaging (JAXM) — поддержка передачи XML-сообщений с использованием языка Java. JAXM базируется на спецификациях SOAP 1.1 и SOAP with Attachments, но при необходимости возможно расширение функциональности для поддержки высокоуровневых протоколов типа ebXML или bizTalk;
    • Java API for XML Registries (JAXR) — унифицированный механизм доступа к реестрам из языка Java. JAXR не связан с конкретной реализацией реестров и может использоваться как с XML-реестрами на базе стандарта ebXML Registry and Repository, так и с реестрами на основе спецификации Universal Description, Discovery and Integration (UDDI)
    • Java API for XML-based RPC (JAX-RPC) — средства поддержки вызова удаленных методов на базе языка XML через Internet.

    Java Web Services Developer Pack

    Недавно фирма Sun выпустила пакет Java Web Services Developer Pack (Java WSDP), в состав которого входит и Java XML Pack. Java Web Services Developer Pack — это набор средств, облегчающих создание Web-сервисов на платформе Java 2. Этот набор включает, помимо Java XML Pack, следующие компоненты:

    • JavaServer Pages Standard Tag Library (JSTL) 1.0 Beta 1;
    • Ant Build Tool 1.4.1;
    • Java WSDP Registry Server 1.0 EA2;
    • Web Application Deployment Tool;
    • Apache Tomcat 4.1-dev Container.

    Java WSDP поддерживается на следующих платформах: Solaris 2.8, Windows 2000, Professional Edition, Windows XP, Professional Edition, RedHat Linux 7.2.

    В состав Java Web Services Developer Pack входит более чем 600-страничное методическое пособие «The Java Web Services Tutorial», в котором рассматриваются все аспекты создания Web-сервисов с использованием перечисленных выше интерфейсов, библиотек и технологий.

    iPlanet

    iPlanet — это семейство серверных продуктов фирмы Sun. В его состав входят Web-сервер, сервер каталогов, а также другие серверы, которые мы кратко рассмотрим ниже. Следует отметить, что появление в составе iPlanet средств обмена сообщениями является прямым ответом на Microsoft .NET Alerts. Однако в отличие от Microsoft .NET Alerts средства обмена сообщениями и нотификациями фирмы Sun базируются не на Microsoft Passport, а на альтернативном решении, известном как Liberty Alliance.

    В семейство iPlanet входят следующие продукты:

    • iPlanet Directory Server — предназначен для хранения и управления профилями, привилегиями доступа, приложениями и сетевыми ресурсами. Кроме того, существуют версии iPlanet Directory Server Access Management Edition и iPlanet Directory Server Integration Edition;
    • iPlanet LDAP Proxy Server — обеспечивает сервисы безопасности для iPlanet Directory Server;
    • iPlanet Certificate Management System — обеспечивает корпоративные сервисы аутентификации сотрудников, клиентов и партнеров, управляет сертификатами на базе X.509;
    • iPlanet Web Proxy Server — служит в роли управляющего трафиком, собирая данные из сети, определяя механизмы перенаправления и выполняя соответствующие сервисы;
    • iPlanet Portal Server — используется для внедрения коммерческих порталов и включает сервисы управления членством, персонализации, интеграции и поиска информации;
    • iPlanet Web Server Enterprise Edition — Web-сервер с поддержкой Java Servlets и Java Server Pages;
    • iPlanet Biller Xpert — облегчает подготовку и публикацию счетов, оплату через Internet;
    • iPlanet Market Maker — управляет каталогами, ценовыми моделями, онлайновыми переговорами, аукционами и т.п.;
    • iPlanet BuyerXpert — используется для контроля закупок с Web-интерфейсом;
    • iPlanet SellerXpert — используется для автоматизации работы каналов продажи;
    • iPlanet Trustbase Transaction Manager — обеспечивает защищенные коммуникации между организациями и клиентами;
    • iPlanet Messaging Server — обеспечивает сервисы для обмена информацией, отсылки и приема сообщений с поддержкой Web-интерфейса;
    • iPlanet Calendar Server — управляет календарями, разделением ресурсов, расписанием событий и групповой работой;
    • iPlanet Application Server — используется для разработки, внедрения и управления основанными на Java 2 Platform Enterprise Edition (J2EE) приложениями на различных серверах, клиентах и устройствах. Также существуют версии iPlanet Application Server EAI Edition и iPlanet Application Server B2B Edition;
    • iPlanet Message Queue for Java — используется для интеграции унаследованных систем и данных с новыми приложениями и ERP-решениями;
    • iPlanet Unified Development Server — служит для быстрого создания, внедрения и управления сетевыми приложениями.

    Более подробную информацию о семействе продуктов iPlanet можно получить по адресу: http://wwws.sun.com/software/iplanet/products/.

    Forte Development Tools

    Для разработки Web-сервисов используется Forte for Java — интегрированная среда разработчика на языке Java (рис. 12). Forte for Java базируется на платформе NetBeans Tools Platform и позволяет разработчикам создавать J2EE-приложения, разрабатывать и публиковать Web-сервисы, включать Web-сервисы в состав Web-сайтов и т.п.

    Forte for Java поставляется для различных платформ, в том числе для Windows, Linux и Solaris. Среда разработчика имеет открытый интерфейс и расширяема — в настоящее время существуют дополнительные продукты от более чем 75 сторонних компаний. Для коллективной разработки приложений используется Forte Code Management Software.

    Более подробную информацию о Forte for Java можно получить по адресу: http://wwws.sun.com/software/Developer-products/ffj/index.html.

    Помимо всего прочего фирма Sun занимается разработкой набора Web-сервисов, включающего Sun ONE WebTop — набор офисных продуктов (текстовый процессор, электронная таблица, графический пакет и т.п), доступных как Web-сервисы, а также набора Web-сервисов для поддержки посылки/получения сообщений и управления расписаниями событий. Кроме того, в документе, озаглавленном «Sun ONE Architecture Guide», можно найти раздел, посвященный базовым Web-сервисам, в котором упоминаются такие сервисы, как Location Web Service, Presence Web Service, Notification Web Service, Usage Web Service, Search Web Service, File Web Service, а также набор Web-сервисов, делающих доступной функциональность продуктов семейства iPlanet.

    Одним из примеров Web-сервисов является myServices.ONE, который реализует корзину покупателя, используемую в нескольких магазинах. Созданный с помощью iNsight for Forte for Java, этот Web-сервис позволяет покупателям просматривать и обновлять свои покупки в одной корзине. В сервис myServices.ONE входят: myIdentity (поддержка идентификации между Web-узлами), myBasket (поддержка централизованной корзинки покупателя для нескольких магазинов), myJeeves (централизованная автоматизация оплаты).

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

    Sybase

    феврале нынешнего года компания Sybase объявила о стратегической инициативе, направленной на то, чтобы помочь клиентам перенести существующие инфраструктуры на Web-сервисы. Sybase планирует активно участвовать в поддержке стандартов, участвует в работе таких организаций, как Web Services Interoperability Organization (WS-I) и Organization for Structured Information Standards (OASIS).

    Поддержка Web-сервисов будет осуществляться по четырем ключевым направлениям: разработка, внедрение, доступ и управление. Ниже мы рассмотрим продукты, которые будут выполнять каждую из перечисленных функций.

    Разработка

    EAServer Web Service Toolkit — набор средств для создания, тестирования, автоматизации и внедрения приложений с использованием Web-сервисов и соединения таких приложений с существующими бизнес-процессами. Эти средства также позволяют публиковать Web-сервисы через UDDI-реестры.

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

    PowerBuilder будет поддерживать все стандарты, связанные с Web-сервисами, включая SOAP, XML, WSDL, UDDI и XSL, а также стандарты, которые появятся в будущем. Разработчики смогут публиковать и редактировать данные, а также обмениваться XML-информацией через протоколы, связанные с Web-сервисами на платформах J2EE и Microsoft .NET. Web-сервисы будут доступны клиентам PowerBuilder и другим клиентам, поддерживающим стандарты Web-сервисов. В настоящее время партнерская стратегия Sybase в области PowerBuilder дает разработчикам доступ к Web-сервисам через невизуальные объекты (Non-Visual Objects, NVO). PowerBuilder и Web Services Toolkit, поставляемый в составе Sybase EAServer, облегчают разработчикам на PowerBuilder создание и внедрение NVO как Web-сервисов прямо на сервер приложений EAServer.

    Внедрение

    EAServer 4.1 — сервер приложений с поддержкой открытых стандартов и технологий, необходимых для разработки, потребления и внедрения приложений на основе Web-сервисов, включая поддержку UDDI, SOAP, J2EE, WSDL и возможности управления UDDI-реестрами.

    Business Process Integrator позволяет бизнесам интегрировать и управлять «потоком» Web-сервисов и приложений; таким образом компании могут управлять внешними и внутренними бизнес-процессами. Этот продукт позволяет доставлять SOAP-сообщения от одного приложения на основе Web-сервисов к другому, а кроме того, поддерживает приложения в стандартах ebXML и RosettaNet.

    СУБД Sybase, в том числе Adaptive Server Enterprise, Sybase Adaptive Server IQ и SQL Anywhere, дают возможность приложениям на основе Web-сервисов обращаться к данным, хранимым в СУБД Sybase, а также в СУБД от IBM, Microsoft и Oracle, посредством хранимых процедур.

    Доступ

    В Sybase Enterprise Portal расширены возможности Portlet Framework для поддержки компонентов порталов (Portlets) с использованием Web-сервисов. Расширение существующей структуры позволяет разработчикам реализовать бизнес-логику в виде Web-сервисов и разделять такие сервисы между компонентами порталов (Portlets) и приложениями. Подобный подход позволяет существенно снизить время, необходимое для разработки и тестирования. Помимо этого такие Web-сервисы становятся доступными другим порталам и приложениям.

    iAnywhere Solutions m-Business Platform поддерживает Web-сервисы для расширения доступа к корпоративной информации через мобильные и беспроводные устройства. Встроенная поддержка мобильных коммуникаций, включая возможность посылки сообщений на различные устройства с помощью различных сетевых протоколов, может быть использована как Web-сервис другими корпоративными приложениями. Компания также планирует создание набора средств для разработчиков, который позволит создавать дополнительные Web-сервисы.

    Управление

    BizTracker следит за производительностью среды, в которой выполняются Web-сервисы.

    Open Bizs Interchange координирует и управляет Web-сервисами, а также различными гетерогенными технологиями на одном логическом уровне, который располагается над другими сервисами и может рассматриваться как единый элемент управления. Выступая в виде сервиса хостинга, Open Bizs позволяет пользователям быстро соединяться с партнерами с помощью выбираемой технологии и не требует установки и настройки различных связующих компонентов.

    Топ-пост этого месяца:  Facebook будет проверять достоверность фото и видео
  • Добавить комментарий