И снова о многоплатформенной разработке…
Полгода назад Дэвид Интерсимоне, вице-президент по связям с разработчиками и главный евангелист компании Embarcadero Technologies, рассказал нам о том, что было создано в подразделении CodeGear этой компании, отвечающем за создание таких всемирно известных инструментов, как Delphi и C++Builder, а также ряда других продуктов для разработчиков, с того момента, как оно вошло в состав компании Embarcadero (вы можете найти это интервью по адресу: http://compress.ru/article.aspx?id=22500&iid=1033). В нынешний же приезд Дэвида в Москву мы попросили его рассказать, что нового было создано данной компанией за последние полгода из инструментов для разработчиков и какие новшества в этой области ожидаются в ближайшее время.
КомпьютерПресс: Дэвид, полгода назад вы рассказали нам много интересного о планах вашей компании по созданию новых платформ для разработки приложений. Что нового вы и ваши коллеги успели сделать за эти полгода?
Дэвид Интерсимоне: За последние полгода для платформы FireMonkey для создания бизнес-приложений мы выпустили много обновлений с добавлением нужных разработчикам возможностей.
При создании абстрактного слоя поверх имеющейся платформы очень важно постоянно обновлять его, в том числе с учетом отзывов клиентов. Поэтому за шесть месяцев мы выпустили четыре крупных обновления и много небольших исправлений. Мы поддерживаем кроссплатформенную разработку для Windows, Mac OS и iOS, что влечет за собой огромный объем исследовательской работы. Существенная часть данной работы также выполняется с прицелом на будущее, чтобы дополнить этот абстрактный слой новой функциональностью (например, расширенной поддержкой аудио и видеоданных). И к нынешнему дню мы уже многому научились.
Если говорить о платформе iOS, то эта операционная система постоянно меняется, для нее выпускается очень много обновлений, что вполне естественно для новой платформы. Вспомните, когда появились платформы Java и .NET, было очень много их релизов — Java 1.1.1, 1.1.2, 1.1.3 и т.д. Со временем новые платформы становятся стабильными, и обновления начинают появляться раз в года-два, как, например, крупные обновления Windows. Но пока мы должны непрерывно отслеживать изменения в платформе iOS и обновлять нашу платформу для разработки FireMonkey в соответствии с ними. Это очень важно — ведь с iOS происходит много изменений низкоуровневых интерфейсов, в том числе изменений в архитектуре, влияющих непосредственно на разработку.
КП: Означает ли это, что обновления FireMonkey доступны свободно?
Д.И.: Да, пользователи, которые приобрели продукт, могут свободно получить его или выбрать конкретное обновление.
КП: Каков способ получения этих обновлений? Осуществляется ли уведомление пользователей об их наличии?
Д.И.: Существует два способа получения обновлений. Можно включить при установке продукта опцию Сheck for updates, и тогда при появлении очередного обновления появится соответствующее уведомление в панели задач. А можно просто зайти на сайт Embarcadero Developer Network, пройти процедуру аутентификации и посмотреть, что из обновлений сейчас доступно. А заодно почитать статьи, воспользоваться ссылками на блоги, прочесть, что данное обновление исправляет и добавляет. И клиент может решить, нужно ли ему это обновление.
КП: А можно ли «откатить» такое обновление?
Д.И.: Это не так просто — в основном обновления деинсталлируют какието компоненты продукта и устанавливают заново их новые версии. Легко удалять обновления, которые не затрагивают архитектуру. Мы же вносим изменения в компиляторы, в структуру платформы. Но в целом большинство разработчиков предпочитают иметь последние версии обновлений.
КП: Есть ли какието изменения в планах поддержки других платформ (Android, Windows Phone, Linux)?
Д.И.: Для поддержки Windows 7 Phone у нас имеется продукт Embarcadero Prism. Его версия XE2 поддерживает Windows Phone 7, которая, в сущности, основана на платформе .NET. Решение Embarcadero Prism доступно как в составе RAD Studio, так и отдельно. Фактически разработка для Windows 7 Phone — это разработка для платформы .NET.
Когда мы выпустили версию RAD Studio XE2 с поддержкой платформы iOS в Delphi, то объявили о своем намерении поддерживать много платформ, и это было сделано на базе технологии для разработки приложений FireMonkey с использованием компилятора Free Pascal. Данный компилятор используется временно — до тех пор, пока мы не создадим свой собственный компилятор для процессора ARM.
КП: Каковы ваши планы по созданию новых компиляторов? Что уже удалось сделать к настоящему моменту?
Д.И.: Наши команды сейчас работают над новыми компиляторами Delphi и C++ для платформы iOS, есть в планах и создание компилятора для Linux, но в первую очередь будут разработаны компиляторы для платформ iOS и Android.
Компилятор для C++ мы создаем поверх компилятора с открытым кодом Clang (именно его использует компания Apple), добавляя к нему расширения для событийной модели, необходимые для полноценного компилятора C++Builder. Это позволит полностью поддерживать стандарт ISO С++ 2011 и соответствующие библиотеки. Поддержка 64-разрядных версий Windows в C++ уже есть, а поддержку 64-разрядных версий Windows в Delphi мы планируем осуществить, равно как и поддержку процессоров ARM 7 для iOS.
КП: Известны ли сроки выпуска упомянутых вами компиляторов?
Д.И.: Ориентировочно они появятся через 12-18 месяцев. Первый приоритет — это компилятор С++ для 64-разрядных версий Windows, не исключено, что он появится раньше (напомним, что 64-разрядный компилятор для Delphi доступен с августа 2011 года, начиная с последнего релиза ХЕ2. — Прим. ред.). Компиляторы для процессоров ARM потребуют больше времени — ведь до этого мы создавали компиляторы только для процессоров Intel. Но наша конечная цель — за следующие 18 месяцев создать полный набор компиляторов Delphi и C++, поддерживающий 32- и 64-разрядные платформы Windows, Mac OS, iOS и Android.
Что касается поддержки Linux, то она стоит в наших планах, но самый высокий приоритет пока у более распространенных клиентских платформ — Windows, iOS, Android и Windows 8. Поскольку платформа Android основана на ядре Linux, при наличии компилятора, генерирующего код для Android, в целом будет проще обеспечить поддержку Linux для генерации двоичного кода плюс создать версию платформы FireMonkey. Тогда можно будет компилировать одни и те же приложения для разных платформ.
Пример многоплатформенного приложения
КП: Будет ли нужна графическая оболочка для работы приложения FireMonkey, например Gnome или KDE?
Д.И.: Раньше мы использовали среду разработки и для создания приложения, и для его отладки, и для его компиляции. Сейчас же применяются кроссплатформенные компиляторы и удаленные отладчики, которые позволяют компилировать и отлаживать приложения независимо от платформы. В этом случае для двух- или трехмерной графики высокого разрешения мы используем графические библиотеки, доступные непосредственно в операционной системе, например Direct3D или OpenGL, а это означает, что для работы приложения никакие графические оболочки не нужны.
Конечно, при разработке вы можете выбрать, к примеру, какую систему меню вы хотите использовать — меню Windows или FireMonkey. В Mac OS вы можете выбрать систему меню Mac OS или FireMonkey. Во втором случае меню будет отображаться с помощью графической подсистемы операционной системы.
КП: То есть разработчик может выбирать, полагаться ли ему на сервисы операционной системы?
Д.И.: Да, но только для некоторых конкретных элементов, таких как диалоговые панели или меню. Всё остальное в приложении FireMonkey — это векторная графика, рендеринг которой осуществляется в реальном времени с помощью графической подсистемы устройства. С точки зрения программирования разработчик создает код с помощью FireMonkey для отображения полей редактирования, выпадающих списков, использования стилей и графики. При этом он может не думать о Windows API, Mac OS API и GDI. Тем не менее в FireMonkey по-прежнему можно создавать код, зависящий от платформы, и вызывать функции API операционной системы. Например, можно по-прежнему применять элементы ActiveX в приложениях для Windows. Это означает, что приложение будет предназначено только для данной платформы.
Конечно, приложение для iPhone, применяющее камеру, будет не точно таким же, как аналогичное приложение для Android. К тому же вы можете захотеть использовать камеру какимто особым способом, характерным только для выбранной платформы — для этого в коде можно применять специальные конструкции для проверки того, на какой платформе выполняется приложение, и выполнения кода, характерного для данной платформы. Платформа FireMonkey не запрещает использования прямых обращений к аппаратному обеспечению и функциям операционной системы, но при этом она содержит абстрактный слой поверх меню, диалогов, средств печати и средств управления камерами, видео и аудиоподсистемой и другим аппаратным обеспечением, позволяющий писать общий код для разных платформ. Ведь у большинства современных мобильных устройств есть сходное аппаратное обеспечение, например те же камеры, а вот операционные системы довольно разнообразны даже у одного и того же производителя. Например, много различий между платформами Mac OS и iOS. Тем не менее Microsoft сейчас пытается создать общую платформу для настольных и планшетных компьютеров, и операционные системы Microsoft предоставляют абстрактный слой поверх базовых сервисов нескольких платформ. Мы делаем то же самое для того, чтобы разработчикам было проще, в нашем случае — создавать бизнес-приложения для разных операционных систем. Ведь в реальном мире у пользователей есть набор различных платформ — Windows, Mac OS, iOS.
КП: Что нового было сделано вашей компанией в области поддержки трехмерной графики?
Д.И.: Я готов продемонстрировать вам несколько приложений с трехмерной графикой (см. рисунок). Это приложение генерирует трехмерную поверхность, вычисляя ее точки с помощью введенной пользователем формулы, осуществляет рендеринг, строя соответствующие треугольники, генерирует на основании этого растровое изображение и передает его графическому процессору. Оно также может перемещать камеру вокруг созданной поверхности. Данное приложение можно скомпилировать для iOS, Mac OS и Windows.
КП: Насколько мне известно, продемонстрированное вами приложение доступно в AppStore. А если разработчику нужно отладить приложение для iOS, есть ли у него возможность перенести его на соответствующее устройство без применения AppStore?
Д.И.: Можно отладить приложение в среде разработки в Windows. Но можно перекомпилировать его с помощью средства разработки для Mac OS Xсode и компилятора FreePascal и сгенерировать код для процессора ARM. Можно осуществить отладку и непосредственно в Xсode и перенести приложение на устройство с помощью среды разработки Xсode. Также можно преобразовать проект FireMonkey в проект Xсode и, таким образом, осуществить часть работ по отладке в Windows, а затем часть работ по отладке — в Xсode. В будущем мы планируем сделать возможной отладку приложений, запущенных на других платформах, непосредственно из среды разработки Windows и с помощью инструмента Platform Assistant, подключившись отладчиком к выполняющемуся удаленно приложению, но пока для этой цели мы используем Xсode. А поместить приложение в AppStore можно, когда его разработка и отладка будут полностью завершены.
КП: Какие форматы трехмерных моделей поддерживаются сейчас вашими средствами разработки?
Д.И.: Наш компонент TModel3D (наследник класса TMesh), который можно поместить на форму приложения для отображения трехмерных моделей, сейчас поддерживает форматы DAE (Digital Asset Exchange. — Прим. ред.) и OBJ. У нас уже есть пример программы, которая читает файлы формата 3DS, но этим компонентом он пока не поддерживается. Модели других форматов следует конвертировать в доступные этому компоненту форматы, в дальнейшем список поддерживаемых форматов будет расширен.
КП: Что нового делается вашей компанией в области создания серверных частей бизнес-приложений?
Д.И.: Наша технология DataSnap для создания серверных частей приложений, доступ к которым осуществляется с помощью протоколов TCP/IP или HTTP, по-прежнему доступна. За последние годы к ней была добавлена новая функциональность, в частности шифрование, аутентификация, поддержка различных каналов, которые можно открывать для передачи данных, мониторинг и контроль выполнения. Мы также поддерживаем протокол SOAP — вы можете создавать SOAP-серверы и SOAP-клиенты.
Мы также создали компоненты для поддержки подключения к Microsoft Windows Azure, Amazon EC2, к таблицам, очередям сообщений и хранилищам. В такое «облако» можно перенести любое приложение, созданное с помощью Delphi или C++Builder. Поставщики «облачных» технологий предоставляют соответствующий прикладной программный интерфейс, а мы — созданные поверх него компоненты. Если нужно отладить приложение в «облаке», можно использовать Platform Assistant.
КП: Поддержка частных «облаков» вашими инструментами, надо полагать, тоже доступна?
Д.И.: Безусловно. Частные «облака» используют те же архитектуры, что и публичные. С технологической точки зрения это всё те же серверы Windows, или SAP, или даже DataSnap, которые создаются с помощью Delphi либо C++Builder.
КП: А что сейчас происходит с поддержкой баз данных?
Д.И.: Мы выпустили обновления для драйверов Oracle, Informix, DB2 и Firebird, MySQL с целью поддержки последних версий этой СУБД. Для Windows у нас есть технология доступа к данным dbExpress, позволяющая подключаться в том числе и к ODBC-источникам. В будущем мы планируем поддерживать и нереляционные базы данных.
КП: Было ли за прошедшие полгода сделано чтото в области инструментов для разработчиков и администраторов баз данных?
Д.И.: Да, мы выпустили новые версии продукта RapidSQL для создания и отладки запросов, хранимых процедур и триггеров и инструмента DB Change Management для управления изменениями в базах данных как на уровне хранимой информации, так и метаданных — этот инструмент с визуальным интерфейсом для сравнения метаданных позволяет проверять, например, все ли скрипты обновления применены на всех экземплярах одной и той же базы данных. Мы также выпустили обновления для средства моделирования данных ER/Studio и для средства профилирования SQL-кода DB Optimizer, которое с помощью анализа SQL-кода и производительности операций в базе данных предлагает изменения, способствующие повышению производительности (например, создание индексов), а также для DBArtizan — средства администрирования СУБД Oracle, Sybase, Microsoft и DB2 «из одного окна».
КП: Каковы ваши планы по дальнейшему развитию средств разработки для PHP?
Д.И.: Сейчас мы работаем над новыми версиями продукта RadPHP. Основное внимание уделяется поддержке технологий JQuery и JQuery Mobile, инструментам разработки мобильных приложений и «упаковке» приложений в пакеты, которые получает и устанавливает клиентское устройство. Мы планируем добавлять поддержку всё новых и новых мобильных устройств и HTML 5, расширять использование клиентского JavaScript-кода. Язык и среда исполнения PHP для Linux или Windows сами по себе меняются не очень быстро, поэтому именно клиентская часть, которая соединяется с сервером PHP с помощью AJAX, является предметом нашего пристального внимания.
КП: Какие, на ваш взгляд, изменения произошли в сообществе разработчиков?
Д.И.: Поскольку наши инструменты поддерживают мобильные устройства и Mac OS, сообщество пополнилось разработчиками для этих платформ. Ну и наряду с программистами старшего возраста к сообществу присоединяется молодежь.
КП: Какова ситуация с книгами о ваших инструментах? Кто из известных авторов по-прежнему с вами?
Д.И.: Марко Канту и Кэри Дженсен пишут книги о FireMonkey, Боб Сворт — о разработке для платформы iOS для начинающих и о программировании для Windows и Mac OS с помощью FireMonkey. Я тоже создаю уроки для начинающих (по 30-70 страниц) — их планируется около десятка, они содержат не только описание, но и примеры, скриншоты, задания, контрольные вопросы, ссылки на полезные ресурсы, например на курсы по языку программирования. Эти документы размещены на нашем сайте.
Книжный рынок сейчас невелик, многие разработчики просто ищут статьи и видеокурсы в Интернете. Книги, конечно, не исчезли совсем, но их стало существенно меньше, причем независимо от тематики — книг о Windows 7 тоже было выпущено не очень много. Сегодня меньше пишут книг и создают больше технических документов, доступных для свободной загрузки. Потому мы проводим много вебинаров, помещаем в Интернете много видеоматериалов, демонстрирующих, как использовать наши технологии и создавать приложения, размещаем учебные материалы и статьи о том, как разрабатывать многозвенные приложения, мобильные приложения, вебприложения с применением HTML, JavaScript, приложения для платформы .NET и кроссплатформенные приложения.
КП: Как вы считаете, не окажется ли со временем, что в связи с уменьшением рынка книг только производитель инструмента сможет предоставить о нем сведения разработчикам?
Д.И.: Не думаю. Издательство O’Reilly, к примеру, по-прежнему издает книги. Я полагаю, если будет написана хорошая книга на интересную тему, то ее издадут. Крупнейший интернет-магазин Amazon сейчас издает много электронных книг для своего устройства Kindle. Можно приобрести электронную копию и напечатать ее, если это необходимо. Когда я закончу свой курс, он составит 500-600 страниц, и его тоже можно будет напечатать.
КП: Или загрузить на планшетное устройство…
Д.И.: Конечно. При этом электронная книга может обновляться и изменяться по мере необходимости, а вот бумажную книгу нужно написать сразу без ошибок и недочетов, что намного сложнее. Цель моего курса — помочь начинающим разработчикам, поэтому я сознательно избегаю описания сложных технологий. Если такие технологии тоже интересны — ждите продолжения. Или можно воспользоваться книгами Марко Канту, в которых рассказывается о сложных вещах типа многопоточности и многозвенных приложений.
КП: Произошли ли какието изменения в составе клиентов? В каких отраслях появляются новые клиенты?
Д.И.: Когда мы выпустили FireMonkey, к нам пришло довольно много клиентов из компаний, специализирующихся на инженерных разработках, научных исследованиях, создании медицинских приложений, которые проявляли интерес к трехмерной графике, а также из компаний, имеющих компьютеры Apple. Но такие компьютеры есть и в инфраструктуре существующих клиентов. А разработчики в компаниях — это в первую очередь разработчики для платформы Windows, и с нашими инструментами они могут воспользоваться имеющимися навыками и перекомпилировать ранее разработанные приложения для Mac OS. Еще нашими клиентами стали многие молодые разработчики, которых интересует поддержка iOS.
Существуют отрасли, где требуется поддержка мобильных платформ и Mac OS. Если раньше компьютеры с Mac OS применялись в корпоративном секторе для ограниченного числа приложений, то с нашими средствами разработки они могут выступать в качестве настольных рабочих станций. Но есть и клиенты, которые традиционно используют наши инструменты только для одной платформы. Довольно много среди наших клиентов и начинающих компаний.
КП: Дэвид, большое спасибо за интересное интервью, а вашей компании — за великолепные инструменты, пользующиеся заслуженной любовью разработчиков не первый десяток лет. Мы с нетерпением будем ждать новых версий ваших инструментов!
Вопросы задавала Наталия Елманова