Разработка под Android. Delphi (C++ Builder) или Java

Перед многими разработчиками встаёт вопрос выбора. Какую технологическую платформу использовать для написания программ под Android? И довольно часто выбор представляет собой дилемму Delphi (C++ Builder) или всё-таки Java.

Почему в качестве альтернативы Java в данной статье рассматривается именно продукция компании Embarcadero? Ведь она далеко не единственная. Под Android также можно писать на Qt, Lazarus, C# (Xamarin), различных фреймворках на основе HTML5 и JavaScript.

Причины этого выбора не случайны:

  • Несмотря на растущую популярность Lazarus и, особенно, Qt им по ряду причин пока ещё трудно конкурировать с коммерческими разработками уровня Delphi и C++ Builder соответственно;
  • Embarcadero, если не единственный, то один из немногих производителей коммерческих средств разработки, которые имеют достаточно серьёзные амбиции в данной области и активно продвигают свою продукцию в этом направлении.
    Также необходимо отметить, что Embarcadero добилась в этом отношении весьма значительных успехов.

Поэтому, что бы ни говорили противники Delphi и C++ Builder, эти решения представляют, и в ближайшее время ещё будут представлять достаточно привлекательную альтернативу традиционной разработке на Java.

Преимущества и недостатки Delphi (C++ Builder)

Первое преимущество использования Delphi и C++ Builder состоит в возможности использования единой кодовой базы для всех платформ, для которых предназначено приложение. Включая код реализующий функционал пользовательского интерфейса.

В случае Java это невозможно. Для Android – Android SDK, для остальных платформ – Swing или другая аналогичная библиотека.

Используемая при разработке под Android библиотека FireMonkey позволяет работать с более удобной объектной моделью компонентов, которая предоставляет доступ ко всем свойствам и событиям.

В Android SDK для описания элементов управления служит XML словарь, а само описание размещается в ресурсах приложения. Для реализации обработки событий в программном коде необходимо вручную инициализировать нужный элемент управления с помощью поиска по ресурсам. А, после этого также вручную инициализировать нужный обработчик (Listener).

Таким образом, разработка с использованием Android SDK требует знания не только Java и объектной модели, но и XML словаря.

При работе с FireMonkey всё гораздо проще. Для того чтобы выполнять весь спектр задач по работе с компонентами достаточно знать тот язык программирования который используется в разработке, то есть Delphi или C++.

Кроме того в FireMonkey есть целый набор готовых компонентов, которые значительно упрощают работу со многими функциями Android. Например, GPS или фотокамера.

Развитый интерфейс самой IDE избавляет программиста от ручного редактирования служебной информации (включая манифест) и т.д.

Следует особо отметить, что Delphi и C++ Builder использует огромное число программистов. Несмотря на то, что библиотека FireMonkey имеет свои особенности и достаточно сильно отличается от VCL, она избавляет от необходимости полного переобучения при освоении новой платформы.

Однако FireMonkey имеет и ряд недостатков.

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

Компилятор под Android поддерживает только архитектуру ARM. Поэтому, если в прошивке устройства нет эмулятора для неё, пользователь не сможет запустить приложение.

В Delphi и C++ Builder поддерживаются далеко не все возможности Android. Так с их помощью, например, нельзя написать виджет или службу.

Также не нужно забывать о стоимости. Цены на Delphi и C++ Builder, как по отдельности, так и вместе (RAD Studio), отобьют желание у многих.

В качестве бесплатной альтернативы Embarcadero предлагает AppMethod. Однако она пока оставляет желать лучшего (подробнее можно почитать на Хабрахабре).

Что касается востребованности на рынке труда. Компании, которые использует Delphi или C++ Builder для своих разработок под Android пока исключение. Поэтому спроса на специалистов соответствующего профиля, как такового нет. Возможно, в будущем ситуация изменится.

Преимущества и недостатки Java (работа с Android SDK напрямую)

Язык Java является «родным» для Android SDK и, как следствие, позволяет использовать все предоставляемые им возможности.

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

Возможность полной настройки пользовательского интерфейса с помощью стилей и тем. В Android SDK они реализованы с помощью XML, а не скинов в специальном формате, как это сделано в Delphi и C++ Builder. Поэтому отсутствует необходимость в специальных программных средствах наподобие, Bitmap Style Designer (с помощью неё создаются стили для VCL и FireMonkey).

Единственная специализированная программа, которая необходима для работы с дизайном — графический редактор Draw 9-patch уже входит в состав SDK. Но и она используется только в определённых случаях.

При работе напрямую с Android SDK программист избавлен от технических издержек, которые присутствуют в FireMonkey.

Android SDK и большинство популярных IDE для работы с ним бесплатны. Это даёт преимущества как для компаний (снижение затрат), так и для независимых разработчиков. Особенно, если речь идёт о разработке бесплатных приложений.

Помимо этого, популярность языка Java, доступность как самого SDK, так и IDE, а также отсутствие как таковых ограничений в плане возможностей по разработке положительно сказываются на перспективах трудоустройства. В настоящее время, на подавляющем большинстве сайтов по поиску работы 100% вакансий разработчиков под Android ориентированы на Java. Комментарии, как говорится, излишни.

Работа напрямую с Android SDK, к сожалению, также имеет свои слабые стороны.

Как уже говорилось выше, для работы непосредственно с Android SDK используется Java и очень многое описывается с помощью XML словаря. Поэтому, прежде чем написать своё первое приложение («Hello, World!» не считается), разработчику необходимо освоить как минимум «азы» Java, а также получить базовые сведения о XML словаре.

Также имеются издержки и у используемой объектной модели.

Вследствие вышеупомянутых особенностей, разработка приложений для Android на Java сложнее, чем с использованием FireMonkey.

Удобство и трудоёмкость процесса разработки во многом зависят от возможностей конкретной IDE и её качества.

Резюме

В качестве обобщения того что было сказано выше преимущества и недостатки обеих программных платформ сведены в две таблицы. Для Delphi и C++ Bulder и Java соответственно.

Разработка под Android с использованием Delphi и C++ Builder

Преимущества Недостатки
·         Единая кодовая база для всех платформ;·         Удобная объектная модель компонентов;

·         Достаточно знаний только используемого языка программирования;

·         Меньше трудоёмкость разработки;

·         Для программистов, которые уже использовали в своей работе Delphi и C++ Builder, нет необходимости переучиваться.

·         Обилие ошибок и недоработок в библиотеке FireMonkey;·         Поддерживается только архитектура ARM;

·         Ограниченные возможности разработки;

·         Выcокая стоимость;

·         Данное направление практически не востребовано на рынке труда.

Разработка под Android с использованием Java

Преимущества Недостатки
·         Возможности разработки ограничены только возможностями используемой версии API;·         Поддерживаются все аппаратные платформы;

·         Более широкие возможности по разработке интерфейса пользователя;

·         Нет проблем, вызванных ошибками и недоработками FireMonkey;

·         Android SDK и большинство популярных IDE бесплатны;

·         Широкая востребованность на рынке труда.

·         Невозможно обеспечить полностью единую кодовую базу;·         Неудобная объектная модель;·         Необходимо знание XML словаря;·         Выше трудоёмкость разработки;·         Трудоёмкость разработки во многом зависит от IDE;·         Для программистов, которые не использовали Java необходимо переобучение;

Можно сделать следующие выводы.

Использование Delphi и C++ Builder имеет смысл если:

  • Обязательно необходимо обеспечить полностью единую кодовую базу;
  • Проект не предусматривает использование целого ряда возможностей Android;
  • Нет желания или возможности пройти или организовать переобучение на Java, а также разбираться в тонкостях объектной модели и XML словаря, либо нанять компетентного специалиста;
  • Вы работаете в компании, которая использует FireMonkey для разработки под Android или планируете трудоустройство в такую компанию;
  • Проект разрабатывается «для себя»;
  • Имеются достаточные финансовые средства.

Также разработку под Android с помощью Delphi и C++ Builder можно рассматривать в качестве, своего рода, «переходного этапа». Когда требуется (или просто хочется) писать приложения под Android, но Java и работа напрямую с Android SDK ещё не освоены, но за то освоены вышеназванные продукты компании Embarcadero.

Во всех остальных случаях лучше выбрать Java или, в худшем случае, другую альтернативу этому языку.

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

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