Как мы «дрессировали огненную обезьяну» или наш опыт работы с FMX

a3fe5955c20240b68a9d49854d8b9336.jpgДоброго времени суток, уважаемые Хабрапользователи!

Мы — компания «Сфера системс», и сегодня мы открываем корпоративный блог на Хабре, в котором хотим познакомить вас с нашим проектом «Sphere Live». И, хотя наш проект пока находится в стадии бета тестирования, сейчас уже можно с уверенностью говорить о том, что он состоялся.

Мы планируем поделиться своим опытом создания стартапа, рассказать как об успешных решениях, так и об ошибках. И, конечно же, нам бы хотелось получить ответную реакцию. Мы отнюдь не претендуем на «историю успеха», по крайней мере пока, тем не менее, искренне надеемся, что наш опыт разработки окажется интересным нашим читателям, а их отзывы будут полезны для нас.

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

Проект «Sphere Live» — это мультиплатформенная система организации видеоконференцсвязи с неограниченным количеством участников в форме симметричных и ассиметричных лекций с интегрированной биллинговой системой, функциями файлообмена и облачного хранилища, а также защитой информации о пользователе (переписка, отправленные и переданные файлы, видео- и аудиообщение).

На данный момент Sphere Live имеет единую кодовую базу для Windows, Mac OS, Android и iOS (последняя пока еще находится в разработке, т.к. требуется оптимизация интерфейса). Сейчас доступна бета-версия для устройств под управлением ОС Windows и альфа-версия для Android, поддержку остальных ОС мы планируем реализовать в течение августа 2014 г.

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

Сразу оговоримся, что мы не имеем никакого отношения к компании Embarcadero и не получаем от них никаких денежных вознаграждений. Более того, продуктами данной компании мы пользуемся на общих основаниях, т.е. покупаем без каких либо скидок. Delphi XE6 (FireMonkey) — это наш объективный, никем не навязанный выбор.

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

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

В итоге ситуация сложилась таким образом, что на тот момент у нас и выбора особого не было, т.к. нашим требованиям отвечал только Delphi XE2 — единый код, единая среда и компилятор для Windows и Mac OS. К настоящему моменту код Sphere Live переведен на Delphi XE6 (FireMonkey). Нам удалось реализовать практически идеальную с точки зрения архитектуры систему, в которой используется единая кодовая база. Более того, нам удалось добиться и схожести интерфейсов, хотя безусловно, отличия имеются.

Да простит нас Embarcadero, но сказать, что все идеально, мы не можем, т.к. в более ранних версиях среды разработки RAD Studio, были и существенные недоработки, и откровенные баги. Очень много пришлось создавать самим и решать проблемы самостоятельно. Были разработаны десятки уникальных компонентов. Однако, мы прекрасно понимали, что рано или поздно они достигнут стадии «правильного» продукта, и мы сможем использовать наш, уже приличный, опыт работы с Firemonkey.

На наш взгляд, большая часть сложностей, с которыми столкнулись или сталкиваются Delphi-программисты (RAD Studio в целом) — это практически полное отсутствие описания архитектуры и механизмов Firemonkey. Все, что присутствует в Интернете, либо не имеет практического применения, либо информация настолько скупа, что не позволит вам выявить элементарные ошибки (причем не только ваши, но и самой Embarcadero).

Мы потратили более года, чтобы разобраться в FMX (Firemonkey). Неоднократно «наступали на одни и те же грабли», не раз переписывали некоторые модули, работающие с GUI, мультимедиа и другие. Часто рассуждали о том —, а не зря ли мы выбрали среду разработки RAD Studio, а именно — Delphi?! Периодически у нас опускались руки, как и у тех, кто разрабатывает что-либо на Delphi. Ждали и думали: «Когда же ребята из Embarcadero обратят внимание на обилие глюков и багов в самой среде и FMX?». Мы каждый раз ожидали выхода в свет новой версии «XE…», разбирались в том, что вышло, пробовали и вновь «фиаско» (для нас), что в этот раз «опять не исправили»…

И, наконец, случилось! Если и не чудо, то почти ожидаемое! Embarcadero выпустила очередную версию RAD Studio XE6.

Мы приобрели версию XE6 сразу, как только о ее выходе объявила Embarcadero, даже на неделю раньше, чем она успела поступить в продажу в России (за что отдельное спасибо Сергею Кожевникову из представительства Embarcadero в России).

В первую очередь мы обратили внимание (буквально за первые сутки работы с ней): — среда разработки стала намного стабильнее, реально стала работать практически стабильно (не убеждайте нас в том, что не бывает абсолютно стабильного ПО, особенно имеющего такой функционал); — скорость работы с IDE выросла; — скорость работы компиляторов под Android существенно выросла; — устранено множество багов и ошибок в коде; — существенно увеличилась скорость работы самих приложений, разработанных под FMX; — появились новые, весьма полезные, функции.И еще многое другое. Не будем все перечислять, и если кому-либо станет интересно, мы с удовольствием поделимся информацией.

Исходя из всего выше сказанного, у вас наверняка возникнет вполне справедливый вопрос: «А где же «ложка дегтя в этой бочке меда?».

И действительно, Embarcadero не акцентирует внимание на одном очень важном моменте. Технология Firemonkey, в принципе, отличается от работы с VCL только под Windows. Если вы скажете, что достаточно знать Object Pascal, то будете в корне не правы. Не все так просто. Ввиду особенностей работы самой FMX, программисту, впервые начавшему писать кросс-платформенные приложения будет весьма сложно. Он будет часто натыкаться на совершенно необъяснимые баги и глюки, все списывая на «кривизну» Delphi. И отчасти окажется прав, т.к. практически отсутствуют методические пособия и нет достаточного количества примеров для работы с Delphi.

Какие-то примеры найти все же можно, но дело в том, что примеры самой Embarcadero, и ее уважаемых нами евангелистов — правильные, но не полные. В ряде случаев, они просто не предусматривают разработки сложных приложений и лишь реализуют те функции, которые требуется «показать», в случае же необходимости создания многофункционального приложения, они могут вызвать сложности у разработчиков только потому, что нет полного описания механизмов работы FMX.

Все выше сказанное относится именно к разработке приложений под различные платформы с использованием FMX.

Да, FMX еще имеет некоторые проблемы: — она пока не столь сильна, как нам с вами хотелось бы; — она пока не так насыщена компонентами, как VCL.Однако все это не значит, что используя FMX нельзя создавать хорошие и серьезные проекты.

Можно! И нужно!

У нас гораздо больше причин «обижаться» на FMX и Embarcadero, чем у большинства из вас, но мы не сдавались и в итоге пришли к тому, чего добивались долгим и упорным трудом, а Embarcadero пришла к тому, чего мы все ждали.Мы надеемся, что все их последующие релизы RAD Studio и Firemonkey, будут такими же, или даже лучше.

Все кому станет интересен наш опыт разработки на Delphi или сам проект, пишите в личку и скачивайте с сайта наше приложение. Будем рады ответить на все ваши вопросы.

© Habrahabr.ru