Разработка на Delphi под Android. Краткие впечатления.

Почти год тому назад вышла Delphi XE5. Первая версия Delphi, которая позволяет осуществлять разработку приложений для Android.

Многие Delphi разработчики практически сразу же начали осваивать новую для себя область. Одновременно с этим в их адрес посыпались вопросы со стороны коллег, которые по тем или иным причинам ещё не были с ней знакомы. Разработка под Android на Delphi? Как это? Каково это? Стоит ли этим заниматься? И ряд других подобных вопросов. Эти вопросы периодически возникают как в публичных обсуждениях на форумах и других web ресурсах, так и в приватных разговорах.

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

В интернете в основном это официальная документация Embarcadero, а также по большей части отрывочные материалы различных блогов и форумов. В отношении литературы ситуация ещё сложнее. На момент написания этой статьи, единственной книгой по данной тематике на русском языке была книга Дмитрия Леонидовича Осипова «Delphi. Программирование для Windows, OS X, iOS и Android». Прочитав эту книгу, могу сказать, что книга просто отличная. По крайней мере, по моему личному мнению (убедительная просьба не считать это рекламой). Однако недостаток литературы всё равно ощущается.

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

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

«Плюсы»

Первая из сильных сторон разработки под Android на Delphi это само наличие такой возможности. После выхода версии XE5 Delphi окончательно перестал быть языком программирования «только для компьютеров».

Конечно, возможность создания мобильных приложений как таковая появилась значительно раньше, в версии XE2. Однако она была доступна только для операционной системы iOS компании Apple и во многом благодаря этому первое время не была особо востребована. Всё-таки, по сравнению со многими аналогичными устройствами на базе Android, iPhone и iPad стоят не дёшево. Это уже само по себе уменьшает возможный спрос и увеличивает стоимость разработки. Также, помимо этого, своё определённое влияние оказывала и продолжает оказывать политика самой Apple по отношению к разработчикам.

С появлением возможности писать программы для Android ситуация резко изменилась и разработка мобильных приложений на Delphi начала интенсивно набирать обороты.

Так же как и для iOS разработка для Android осуществляется средствами кроссплатформенной библиотеки FireMonkey. Поэтому, для тех, кто и раньше использовал эту библиотеку, даже несмотря на особенности мобильных приложений, очень многое окажется знакомым.

Необходимо отметить, что библиотека FireMonkey достаточно дружественна по отношению к разработчику. Это позволяет эффективно разрабатывать приложения иногда даже вопреки её серьёзным недостаткам. Каким именно будет описано позднее, при рассмотрении слабых сторон.

Очень обрадовало то, что многие библиотеки компонентов и технологии, которые изначально были разработаны для VCL, также имеют реализацию для FireMonkey и доступны при разработке для Android. Среди них хотелось бы отметить dbExpress, FireDAC, DataSnap. Также реализацию для FireMonkey под Android имеет и широко известная библиотека для работы с сетью Indy.

Однако тех, кто привык использовать эти компоненты и технологии в «обычных» приложениях ждут два серьёзных разочарования.

  1. Реализация FireDAC, DataSnap и Indy для Android ограничена. То есть при разработке под Android доступны не все компоненты.
  2. Операционная система Android поддерживает достаточно небольшое количество СУБД. При этом многие распространённые СУБД, к сожалению, в их число не входят.

В прочем, если СУБД имеет драйвер или хотя бы возможность его сборки под Android (как, например, MySQL), то последнее, скорее всего, будет не актуально. В противном случае, при написании клиентского приложения придётся всерьёз позаботиться о реализации его взаимодействия с сервером.

Следует отметить, что в FireMonkey очень удачно реализована возможность адаптации приложения к различным устройствам с различным разрешением экрана. Что позволяет достаточно легко разрабатывать приложения, которые предназначены как для смартфонов, так и для планшетов.

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

«Минусы»

Самое первое, что бросается в глаза это работа эмулятора. В силу своего несовершенства, эмулятор, по крайней мере, в случае RAD Studio вообще и Delphi в частности, не всегда оказывается способен запустить даже обычный «Hello, World!». Поэтому о возможности его использования лучше всего сразу забыть. Запускать и отлаживать программы для Android, вероятнее всего, придётся непосредственно на устройстве, со всеми вытекающими последствиями и рисками. Не говоря уже о том, что Android устройство придётся покупать (при его отсутствии).

Также процесс разработки существенно осложняется по причине многочисленных изъянов и недоработок в библиотеке FireMonkey. Многие из них сохранились ещё со времён версии XE2.

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

Буквально около трёх месяцев назад на одном из форумов обсуждался один из таких недостатков FireMonkey. Оказалось, что в этой библиотеке функционал для работы с массивами даже к моменту выхода версии XE5 так и не был в достаточной степени проработан. В результате решение, основанное на использовании таких функций как Low и High, в FireMonkey оказалось не работоспособным (страница с обсуждением). Полагаю, выводы о том, как подобные особенности библиотеки сказываются на процессе разработки с её использованием, напрашиваются сами собой.

«Итог»

Библиотека FireMonkey имеет достаточно большой потенциал. Хочется верить, что её недостатки, в том числе описанные в этой статье, это всего лишь на всего, так называемые «детские болезни», которые уйдут в прошлое в ходе её дальнейшего развития. Что со временем Embarcadero наконец-то начнёт уделять должное внимание не только вопросам, связанным с её расширением и продвижением на рынок, но и вопросам, связанным с работоспособностью этой библиотеки. Однако это пока только оптимистичные надежды относительно будущего.

Что касается реальной ситуации, на сегодняшний день. Разрабатывать приложения с использованием FireMonkey, в том числе под Android вполне возможно. Даже несмотря её существующие издержки. Однако до момента своего полного устранения они, так или иначе, будут работать как против разработчика, так и против самой Embarcadero.

Ссылки

1.Delphi XE5/XE6 разработка приложений для Android. Сборник материалов относящихся к разработке ПО для Android – Очень хорошая подборка материалов по разработке под Android на Delphi.

2.Разработка Qt-приложения с доступом к MySQL под Android – В этой статье помимо всего прочего приведено краткое описание процесса сборки драйвера для MySQL под Android. Поэтому данная статья может оказаться весьма полезной и для Delphi разработчиков.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *