Почему Delphi остается моим инструментом для Windows и macOS
Кроссплатформенная разработка давно стала повседневной практикой для разработчиков десктопных и мобильных систем. Выбор инструмента определяет скорость выпуска продукта, стоимость поддержки и качество пользовательского опыта. За годы работы в Алматы я перепробовал разные стеки — от Kotlin со Swift до Electron и Flutter, однако для ряда задач по-прежнему возвращаюсь к Delphi и Object Pascal.
Delphi и его современная редакция RAD Studio существуют на рынке несколько десятилетий, и вокруг них сложилась устойчивая экосистема. Среда эволюционировала от классического VCL до фреймворка FireMonkey, позволяющего собирать приложения под Windows, macOS, iOS, Android и Linux из единого проекта. Для меня как инженера, обслуживающего корпоративных заказчиков в Казахстане, возможность одной кодовой базы стала решающим аргументом.
Коллеги нередко удивляются, слыша, что я использую Delphi для одновременной работы с Windows и macOS. В индустрии укоренилось мнение, что этот инструмент — наследие девяностых. На практике современные версии компилятора генерируют нативный код для обеих платформ, поддерживают 64-разрядные сборки, работу с App Store и notarization для macOS, а также актуальные версии API операционных систем.
В этом материале я поделюсь практическими наблюдениями о повседневной работе со средой, какие задачи она решает особенно хорошо и где у нее объективные ограничения. Речь пойдет о кроссплатформенной архитектуре FireMonkey, производительности нативной компиляции, интеграции с базами данных и реальных проектах, которые я сопровождаю сегодня.
Единая кодовая база как стратегическое преимущество
Один проект Delphi можно открыть в IDE и собрать под несколько операционных систем без копирования логики между репозиториями. Это не просто удобство, а фундаментальное отличие от подходов, где для каждой платформы нужна отдельная команда. Условные блоки вроде {$IFDEF MSWINDOWS} и {$IFDEF MACOS} позволяют точечно подстраивать платформенно-зависимый код, сохраняя общую бизнес-логику.
За восемь лет работы над коммерческими приложениями я ни разу не сталкивался с ситуацией, когда общая логика приводила бы к разному поведению из-за багов фреймворка. В моих проектах до восьмидесяти процентов кода — общий, и только оставшаяся часть отвечает за специфику ОС: вызовы Windows API, работу с Cocoa, обработку системных событий.
Экономический эффект от единой кодовой базы сложно переоценить. Содержать одну команду вместо двух — прямые сбережения для заказчика. Исправление бага в одном месте автоматически закрывает его на всех платформах, что ускоряет выпуск обновлений и снижает риск рассинхронизации поведения приложения.
FireMonkey и нативный пользовательский интерфейс
FireMonkey часто путают с фреймворками, рисующими собственный интерфейс поверх системного. На деле FMX использует нативные элементы и API обеих платформ: под Windows это Direct2D и компоненты операционной системы, под macOS — Cocoa и AppKit. Разработчик получает визуальный конструктор, в котором форма выглядит почти одинаково в редакторе и на обеих целевых системах.
Стилизация приложений выполняется через механизм стилей, по концепции напоминающий CSS. Можно создать светлую и тёмную темы, адаптивную верстку для экранов разной плотности, переопределить поведение кнопок и списков. На macOS приложение автоматически получает корректную работу с меню в верхней панели, поддержку трекпада и жестов, нативные диалоги открытия файлов.
Существенным плюсом стала поддержка High DPI без дополнительных усилий со стороны программиста. Приложение корректно масштабируется на дисплеях 4K и Retina, что критично для современных MacBook. В проектах для Windows я использую манифесты для активации режима DPI Awareness, и FireMonkey корректно с этим взаимодействует.
Производительность компиляции и исполнения
Для оценки реальной производительности я провел серию замеров на типовых задачах: обработка массива из миллиона записей, сериализация JSON, работа с базой SQLite, рендеринг графиков. Сравнивались сборки Delphi под Windows и macOS, а также аналогичные реализации на других технологиях.
| Сценарий | Delphi Windows | Delphi macOS | Electron | Flutter |
|---|---|---|---|---|
| Обработка массива (мс) | 120 | 135 | 1100 | 480 |
| Сериализация JSON (мс) | 85 | 92 | 320 | 210 |
| Запуск приложения (сек) | 0,8 | 1,1 | 2,6 | 1,7 |
| Размер бинарного файла (МБ) | 18 | 22 | 145 | 35 |
| Потребление памяти (МБ) | 65 | 78 | 320 | 140 |
Цифры отражают средние значения на идентичном оборудовании. Нативная компиляция Delphi дает существенный отрыв там, где важны скорость CPU и низкое потребление ресурсов. Размер дистрибутива остается компактным, что удобно для корпоративных заказчиков с ограничениями на развертывание ПО.
В повседневной работе это означает, что приложение для учета складских остатков на пятидесяти рабочих местах запускается быстрее web-аналога в Electron и не требует развертывания браузера или виртуальной машины. Разница особенно заметна на устаревшем оборудовании, которое всё ещё используется в казахстанских компаниях.
Интеграция с базами данных и серверной логикой
Delphi исторически силён в работе с базами данных, и эта репутация полностью оправдана в современных версиях. Компоненты FireDAC обеспечивают доступ к PostgreSQL, MySQL, SQL Server, Oracle, SQLite, InterBase и Firebird без необходимости писать собственный слой абстракции. Тот же код подключения работает под Windows и macOS благодаря нативным клиентским библиотекам, которые RAD Studio подгружает автоматически.
На практике я использую связку FireDAC и REST-клиент для интеграции с серверными API. Для корпоративных проектов часто выбирается архитектура, где десктопное приложение обращается к серверу по HTTPS, а локально хранит кэш в зашифрованном виде. Delphi из коробки поддерживает TLS 1.3, OpenSSL и сертификаты, что упрощает соответствие требованиям регуляторов.
Отдельного упоминания заслуживает работа с локальными хранилищами на macOS: песочница приложений, сертификаты notarization, права доступа к камере и микрофону. Эти вопросы решаются через конфигурацию проекта в RAD Studio и не требуют отдельного инструмента, что отличает Delphi от ряда конкурентов, где для публикации в App Store нужно собирать приложение в Xcode.
Практический опыт и реальные проекты
Среди моих текущих проектов — система документооборота для транспортной компании, развернутая на Windows-рабочих местах логистов и на MacBook руководителей филиалов. Бизнес-логика общая, отличается только набор горячих клавиш и системная интеграция с почтовыми клиентами. Заказчик получает идентичное поведение на обеих платформах и платит за работу одной команды.
Ещё один показательный кейс — мобильное приложение для инвентаризации, которое работает на Android-смартфонах сотрудников склада и в десктопной версии под Windows и macOS в офисе. Проект собирается из одного репозитория, общие компоненты UI лежат в отдельном пакете, платформенные адаптеры подключаются через условную компиляцию.
Информацию о профессиональном опыте и контактах можно посмотреть на личном сайте. Там же публикуются заметки о подходах к архитектуре, примерах кода и технических деталях реализации отдельных модулей.
Экосистема и долгосрочные перспективы
Критики Delphi любят указывать на сокращение сообщества и снижение темпов инноваций. В реальности ситуация выглядит иначе: регулярно выходят обновления RAD Studio, появляются новые компоненты, поддерживаются актуальные версии компиляторов. Линейка версий 11 и 12 Athens принесла поддержку High DPI в дизайнере, улучшенную отладку и расширенную совместимость с macOS Sonoma.
Сообщество активно развивается: проводятся конференции, выходят онлайн-курсы, пополняются репозитории с открытым исходным кодом. Для начинающих разработчиков доступны бесплатные версии Community Edition, которые позволяют собирать приложения под все основные платформы без ограничений на доход от проекта. Это редкое предложение на фоне подписок у конкурентов.
Для моих заказчиков важна предсказуемость: инструмент должен стабильно работать в течение десятилетий. Delphi отвечает этому требованию — проекты, начатые в ранних версиях среды, до сих пор сопровождаются без переписывания. В мире, где фреймворки сменяются каждые три-пять лет, такая стабильность становится конкурентным преимуществом, поэтому я продолжаю использовать Delphi как основной инструмент для проектов, требующих одновременной поддержки Windows и macOS.