На страницах "Компьютерных вестей" я рассказывал о множестве разных технологий программирования, о разных языках и средах разработки. Как-то так вышло, что Adobe Flex пока оставался за рамками этих рассказов. Спеша исправить ситуацию, я расскажу вам сегодня об этой замечательной технологии и о связанных с ней программных продуктах.
Flex и Flash
Люди, незнакомые с Adobe Flex, любят первым делом спрашивать, чем Flex отличается от Flash'а. С последним, надеюсь, большая часть наших читателей знакома - ему, как я недавно узнал, теперь учат даже в школах. Что ж, вопрос довольно логичный - и фирма-производитель у этих двух продуктов одна и та же, и названия их звучат похоже... И, понятное дело, если бы между ними не было никаких различий, то вряд ли было бы возможно их совместное существование.
На самом деле, все различия между Flex и Flash определяются предназначением каждого из этих программных продуктов (или, как сказали бы маркетологи, их рыночной ориентацией). Flash ориентирован на создание сравнительно небольших приложений и мультипликационных роликов, работающих как на настольных платформах, так и "внутри" web-страниц. Flex - это средство для создания RIA, Rich Internet Applications. При этом Flash является своеобразной платформой для Flex.
Конечно, для того, чтобы понять глубже отличия Flex от Flash, необходимо представлять себе, в чём именно состоит концепция Rich Internet Applications - ведь, фактически, именно вокруг неё строится и весь Flex. Поэтому мы с вами сейчас немного поговорим о RIA.
RIA
Сама концепция Rich Internet Applications весьма тесным образом связана с Flash, Flex и фирмой Macromedia, их некогда породившей. Да и термин RIA впервые в 2002 году употребила именно она. Сегодня, конечно, RIA уже не те, какими были тогда, почти семь лет назад, но идея своей актуальности совсем не растеряла.
Итак, что же Macromedia завещала понимать нам под Rich Internet Application'ом? Это такие приложения, которые в качестве своей рабочей платформы используют World Wide Web, но при этом обладают многими чертами и функциональностью настольных приложений. Основная черта RIA заключается в том, что вся бизнес-логика приложений вынесена на сервер, в то время как пользовательская часть представляет собой "тонкий клиент", предназначенный для передачи всех нужных серверу данных через браузер пользователя. Если вы представляете себе, что такое Software as a Service (SaaS), то наверняка уловили уже определённую схожесть между SaaS и RIA. Впрочем, RIA также предполагает исполнение кода пользовательской части в специальной защищённой среде, так называемой "песочнице". В качестве такой "песочницы" компания Macromedia подразумевала, конечно же, Flash Player.
Сегодня мы можем видеть множество примеров RIA-приложений, что свидетельствует о восстребованности этой идеи. Справедливости ради стоит сказать, конечно, что и Macromedia тоже не первой предложила идею подобных приложений. Существует множество синонимов для термина RIA. Но, коль скоро в отношении Flex-приложений принято использовать именно его, то и мы не будем нарушать эту традицию.
Итак, Flex
Конечно, наиболее полную информацию о Flex и обо всех сопутствующих этому программному продукту вещах можно найти на сайте компании Adobe, а если более конкретно, то по следующему адресу: www.adobe.com/ru/products/flex. Однако эта статья задумывалась как обзорная, а потому, думаю, если вы хотите для начала представить себе Flex в общих чертах, то она очень даже пригодится вам.
Итак, Flex - это технология создания RIA-приложений. Работают RIA-приложения благодаря Adobe Flash Palyer'у, который установлен практически на всех компьютерах тех людей, кому нужны RIA-приложения, а создаются в Adobe Flex Builder'е, который создан на платформе Eclipse.
Несмотря на то, что платформой для Flex'а фактически является Adobe Flash, и использоваться повсеместно, по идее, должен ActionScript, во Flex'е для работы с интерфейсом применяется специальный язык MXML. Как видно из его названия, это диалект XML, предназначенный для описания интерфейса RIA-приложений, создаваемых во Flex'е. В стандартный набор элементов управления, которые предлагает платформа, входят кнопки, флажки, списки, таблицы, контейнеры данных - словом, всё то, что и должно входить в стандартный набор компонентов. Впрочем, XML-файлы всё равно потом компилируются во всё тот же ActionScript, так что введены они во Flex не из-за какой-то суровой необходимости, а исключительно для удобства разработчика, чтобы не было такой путаницы кода и интерфейса, какой грешит .NET. Кстати, как и в случае с AJAX, страница не требует перезагрузки для того, чтобы отображать в себе какие-то изменения. Это, безусловно, очень удобно, и, в общем-то, во многом именно на этой возможности зиждется сама идея RIA-приложений.
"А как же AJAX?", - можете спросить вы. Дело в том, что AJAX и Flex - это, фактически, конкурирующие друг с другом технологии, применяемые при построении web-приложений. Ими используются для обеспечения одних и тех же возможностей несколько различные механизмы. В AJAX всё возлагается на JavaScript - его поддержка давно тому назад появилась в каждом уважающем себя браузере, однако во многих она по умолчанию отключена (как это было в Internet Explorer 6 - этим браузером пользуется до сих пор очень много народу). Во Flex'е интерактивность достигается путём использования другого скриптового языка - ActionScript'а, "родного" языка Adobe Flash. Сложно сказать, какая из этих технологий удобнее - AJAX распространён, по моим наблюдениям, больше, однако, вероятно, здесь особых заслуг самой технологии нет, просто в силу закрытости Flex многие идейные сторонники открытого программного обеспечения (а их в последнее время почему-то стало очень уж много) отдают предпочтение именно AJAX'у. Ну и тот факт, что за удобство разработки приложений на Flex нужно платить деньги Adobe, тоже явно не воодушевляет экономных сторонников софтверного коммунизма.
Средства разработки для Adobe Flex
Какой бы хорошей и удобной ни была технология, современного программиста не заставишь ею пользоваться, если нет хороших средств разработки. Особенно в условиях довольно-таки жёсткой конкуренции со стороны других технологий для создания web-приложений.
Вообще говоря, для разработки Flex-приложений вам нужен только Flex SDK. На сайте компании Adobe про этот самый SDK написано следующее: "Комплект для разработки (SDK) ПО Adobe® Flex™ 3 включает в себя среду разработки Flex (библиотека класса компонента) и компилятор Flex, позволяющие свободно создавать и развертывать приложения Flex с использованием интегрированной среды разработки (IDE) на ваш выбор". На самом деле, вот это красивое "на ваш выбор" означает, что вам предоставят возможность самостоятельно мучиться, пытаясь "подружить" Flex SDK с вашей любимой интегрированной средой. В качестве альтернативы предлагается продукт под названием Adobe Flex Builder. Этот продукт, в общем-то, всем хорош, кроме, разве что, цены - $250. На самом деле, если вы делаете Flex-приложения на заказ, то Builder окупится довольно быстро, но, что называется, жаба всё равно не может не душить.
Думается, что решение построить Flex Builder на базе Eclipse было довольно-таки дальновидным. Eclipse - это замечательно зарекомендовавшая себя среда разработки для множества языков, динамично развивающаяся и постоянно совершенствуемая своими создателями, и при этом хорошо знакомая множеству программистов. Функциональность Flex Builder'а, таким образом, - это во многом функциональность самого Eclipse, хотя, конечно, со своей спецификой. Поддерживается визуальное проектирование интерфейса RIA-приложений (всё-таки набирать вручную XML-файлы, а затем подгонять всё "напильником", чтобы смотрелось красиво, - занятие на любителя), есть возможность отладки приложений. Благодаря надстройкам, предлагаемым Adobe, можно ещё больше расширить возможности программы.
Flex и AIR
Хотя об Adobe AIR не столь давно не писал только ленивый, я всё-таки расскажу немного о том, каким образом AIR и Flex связаны друг с другом.
Давайте ещё раз взглянем на концепцию RIA. Если эти приложения ведут себя как настольные, значит, может быть, есть лёгкий способ создать быстро и настольные, и web-версии таких приложений одновременно? Действительно: достаточно сделать эмулируемый программно сервер, который будет общаться с клиентской частью RIA-приложения, и мы получим среду для выполнения RIA-приложений на десктопе. Именно такими идеями, вероятно, руководствовались инженеры Adobe, создававшие Adobe Integrated Runtime - AIR. RIA-приложения, созданные с помощью Flex, можно запускать автономно на настольных компьютерах (ну и на лэптопах, конечно) с помощью AIR. Возможности AIR, конечно, шире, чем просто запуск Flex-приложений в автономном режиме: эта среда поддерживает с тем же успехом и AJAX и предоставляет приложениям такие типично десктоповые черты, как многооконность, доступ к файловой системе, и многое другое. Но сейчас речь не об AIR, а о Flex, и нам с вами будет полезно знать, что потенциально любое RIA-приложение на Flex'е можно сравнительно малой кровью сделать десктоповым.
Резюме
Ну вот, разговор о технологии Flex и о том, что с ней связано, подошёл к концу. Отдавая себе отчёт в том, что он получился достаточно расплывчатым, хочу отметить, что как только вы начнёте вникать в практические аспекты Flex'а, от расплывчатости не останется и следа. Это вполне конкретная технология, предназначенная для решения вполне конкретных задач. Я же старался рассказать вам о ней как раз в общих чертах, чтобы вы могли получить о ней максимально полное представление.
Если же подытожить разговор, то получится следующее. Flex - это технология web-приложений, которые во многом схожи с настольными и которые называются Rich Internet Applications. В качестве собственной рабочей платформы Flex использует весьма широко известный Flash. Компания Adobe Systems предлагает ряд инструментов для разработки приложений с использованием этой технологии, в том числе и такие, которые позволили бы запускать созданные web-приложения без существенных переделок на десктоповых системах. Вот, пожалуй, и всё.
Если вы заинтересуетесь дальнейшим изучением Flex'а, начинать лучше с чтения книги "Программирование c использованием Adobe Flex", авторы Чефик Кейзоун и Джой Лотт. Также неплохо было бы почитать какую-нибудь книгу по ActionScript'у. Ну и не стоит забывать о ресурсе www.adobe.com/devnet/flex.
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by
Комментарии