О вышедшей этой весной четвёртой версии среды разработки Embarcadero RAD Studio XE4 наверняка слышал каждый Delphi-программист. Любое обновление этой многострадальной системы уже не один десяток лет сопровождается организационными метаниями и технологическими шараханьями, в которых при всём желании довольно трудно разглядеть стратегическую линию развития. Можно, конечно, списать эти трудности роста на гибкость менеджерского подхода, однако непрестанная смена владельцев (Borland, Inprise, CodeGear, Embarcadero) говорит об обратном. А самое удивительное, что, несмотря на многолетние помехи, фреймворки Delphi и C++Builder прекрасно себя чувствуют и продолжают развиваться в наиболее востребованных рынком направлениях. Это верный признак удачности и жизнеспособности первоначальной идеи визуального корпоративного программирования, которую, на мой взгляд, пока никому не удаётся превзойти.
Данная статья посвящена особенностям новой версии, которые необходимо знать всем разработчикам корпоративных и мобильных систем, намеренных серьёзно использовать RAD Studio XE4.
Теперь и для iOS
RAD Studio XE 4 — это среда кроссплатформенной разработки, поддерживающая Windows, .NET, Mac OS X и iOS на основе единого кода. Важно, что проект компилируется в полноценный “родной” код, без каких-либо промежуточных виртуальных прослоек или скрипт-интерпретации. Преимущество этого подхода, во-первых, в высоком быстродействии результирующих приложений, а во-вторых, в их высокой безопасности (хорошо известно о непрекращающемся латании виртуальной машины Java и интерпретаторов JavaScript, на которых строятся многие современные кроссплатформенные движки).
В новой версии наконец организована полноценная поддержка iOS, айфонов и айпадов, которая временно появилась в XE2, а потом отпочковалась в XE3 Mobile, но так и не появилась на свет. Удобен визуальный проектировщик пользовательских интерфейсов для iOS с поддержкой множества типов гаджетов и разных экранных разрешений. Набор визуальных компонентов FireMonkey, идеологический наследник библиотеки VCL, только кроссплатформенный, добрался до третьей версии. Включение в программу GPS-навигации, обработки данных от видеокамеры и акселерометра выполняется несколькими щелчками мыши. Разработка и отладка может вестись как напрямую на конкретном гаджете, так и в эмуляторе.
iOS-эмулятора под Windows, к сожалению, нет — разработку для айфонов придётся вести на Mac’е. Для этого, впрочем, достаточно купить MacMini за 300 долл. или воспользоваться облачным сервисом наподобие MacInCloud.com. Кроме того, обещано, что уже в нынешнем году в Windows-версии RAD Studio можно будет собирать программы для Android. А лицензировать продукт можно по частям: например, совсем не обязательно приобретать средства разработки для мобильных платформ.
Тяжёлые технологии
RAD Studio XE 4 — это среда прежде всего для создания корпоративных приложений. По этой причине в ней отсутствует поддержка скоростной графики, однако предлагается обширный набор компонентов, из которых можно сформировать самые разные мультимедийные эффекты, включая анимацию. А вот создателям мобильных корпоративных систем наверняка придётся по вкусу работа с локальными СУБД SQLite и InterBase через dbExpress и FireDAC. Доступна бесплатная версия IBLite для iOS (облегчённая версия встраиваемой СУБД InterBase ToGo для Windows, Mac и iOS). Фактически Embarcadero стала единственным независимым вендором, поставляющим СУБД бизнес-класса (развитая транзакционная модель, шифрование) для платформы iOS. На компонентном уровне программирование под iOS можно вести с помощью наборов SQLite, IBExpress и MIDAS.
В новой версии внушительно представлена технология FireDAC, анонсированная Embarcadero этой зимой. Она обеспечивает скоростной доступ из приложений Delphi и C++Builder к большому перечню СУБД: Advantage DB, Firebird, IBM DB2, Informix, InterBase, MS Access, MS SQL Server, MySQL, Oracle, PostgreSQL, SQL Anywhere, SQLite, Sybase, протоколу ODBC и др. Программисты, использующие старый движок баз данных BDE, смогут перенести свои приложения на FireDAC без особых проблем.
Многоуровневые архитектуры проектируются с помощью известного набора компонентов DataSnap. Добавлена поддержка облачной инфраструктуры Amazon и облачных сервисов Windows Azure.
Delphi снова войдёт в реку Linux
Кроссплатформенность RAD Studio не ограничивается Windows и iOS: в нынешнем году появится поддержка мобильной платформы Android, а в следующем — ОС Linux! Напомню, что Borland уже выпускала Kylix (Delphi и C++Builder для Linux), но на то время коммерческие результаты оказались разочаровывающими, и поддержка Kylix быстро завершилась в 2002 г. Однако сама технология работала отлично: Kylix-программы и сегодня успешно работают под управлением большинства современных Linux-дистрибутивов.
Как реализуется кроссплатформенность на уровне компиляторов? Этот достаточно важный вопрос надо рассмотреть подробнее, потому что с данным моментом связаны стратегические вещи, затрагивающие процесс кодирования. Похоже, что Embarcadero наконец решила минимизировать “зоопарк” используемых компиляторов. Первым шагом в этом направлении стало исключение технологии Prism (компиляция для .NET и Mono). Оригинальный компилятор удалён и из C++Bulder для x64. Для сборки Windows-программ теперь задействован clang — свободный компилятор Си-подобных языков, использующий, в частности, виртуальную машину LLVM и позиционирующийся как альтернатива семейству GCC. Он, кстати, с апреля 2013 г. соответствует стандарту C++11. В этой связи не очень понятна пока перспектива поддержки 32-разрядных платформ — в C++Builder она обещана только в конце текущего года, а полноценный перевод C++Builder и Delphi на LLVM назначен на 2014-й. На этой же основе, видимо, появится всесторонняя поддержка всех версий Windows, включая и “восьмёрку”, а также Mac OS X и Linux всех разрядностей.
Однако линейка действующих компиляторов с новыми обновлениями, возможно, даже ещё временно расширится, дабы охватить Linux и Android на разных аппаратных платформах. Пока в RAD Studio XE4 задействовано пять разных трансляторов: для Windows 32/64, для Mac OS X, для iOS ARM и для iOS x86 (эмулятор). Из них iOS/ARM и C++/64 уже основаны на LLVM.
Платформа LLVM, судя по всему, выбрана стратегической, поэтому желательно как можно раньше переходить на языковую версию Delphi “нового поколения”. В частности, надо использовать вариант Next Generation Delphi, основы которого уже были заложены в Delphi XE3, однако задавались директивой условной компиляции NEXTGEN, которая не всегда была включена по умолчанию. Теперь же программирование для iOS (а в перспективе и под Android) будет вестись целиком на Next Generation Delphi. К счастью, изменения в языке Delphi не слишком масштабны и прежде всего затрагивают строки: вводится единый неизменяемый строковый тип с индексацией с нуля. Серьёзно ужесточены требования к использованию указателей, которые в Delphi, скорее всего, будут удалены полностью. В силу кроссплатформенности по понятным причинам придётся забыть про ассемблерные вставки, динамические вызовы DLL и прямые обращения к Windows API. Будут также ликвидированы оператор with и тип object.
Резюме
Среда разработки от Embarcadero сегодня, как, впрочем, и десять лет назад, поставляется с солидным набором дополнительных библиотек, которые сами по себе достаточно внушительны и сложны. Это, например, Boost (фактический стандарт на программирование сетевых взаимодействий). По этой причине с установкой и настройкой среды придётся повозиться: в каких-то версиях Windows может потребоваться запуск с административными правами. Да и после установки надо будет почистить и перенастроить систему под конкретное использование: например, сервис ibserver (Interbase) без спроса настраивается на автоматический запуск, не всегда корректно определяется текущая версия Java SDK.
Однако эти усилия окупятся сторицей: технологии Delphi и C++Builder развиваются интенсивно и в правильном направлении, и хотя уже традиционно не обходится без шараханий, RAD Studio XE4 демонстрирует отличные кроссплатформенные технологии на базе LLVM, эффективную и разностороннюю поддержку корпоративных проектов: самые разные СУБД, многозвенность (с возможностью создавать сложные системы вообще без программирования), облачные технологии, UML-моделирование и множество других полезных возможностей. А главной фирменной особенностью RAD Studio по-прежнему остаётся важнейшая концепция единой среды, единого проекта и единого дизайнера пользовательского интерфейса для всех типов платформ и всех видов приложений.