Немного размышлений о кроссплатформенной разработке

В последнее время IT сообщество уделяет достаточно большое внимание кроссплатформенной разработке. Что вполне естественно. Имея инфраструктуру, которая включает в себя несколько платформ, мало кому хочется писать для каждой из них по сути одно и то же.

Но, всё имеет как свои «плюсы», так и «минусы».

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

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

Ключевая проблема при поддержке различных платформ состоит именно в том, что эти платформы действительно разные. Даже при некотором внешнем сходстве в основе их работы лежат как минимум разные принципы. Как максимум, ещё и различное аппаратное обеспечение.

Поэтому если не любая, то почти любая кроссплатформенная технология представляет собой «среднее арифметическое» тех платформ, которые она поддерживает.

Эта особенность кроссплатформенных решений хорошо проиллюстрирована на инфографике неизвестного автора.

Кроссплатформа Инфографика

Чтобы не быть голословным приведу пару примеров.

FireMonkey не поддерживает виджеты для Android. На других платформах поддерживаемых этой библиотекой для них нет аналогов.

В Qt есть нюансы связанные со значком приложения. В Windows это ресурс внутри исполняемого файла. В Linux всё несколько иначе.

Поэтому нередко приходится отказываться от универсальности и обращаться к условной компиляции и платформозависимым API. Что совсем не упрощает работу над проектом. И это в лучшем случае. Потому, что, если возникнет необходимость, например, портировать программу на Java с desktop на Android, её придётся переписать не менее чем на половину.

С бесплатностью кроссплатформенных технологий тоже не всё так гладко, как возможно хотелось бы. Тот же Qt доступен бесплатно только для open source проектов. В остальных случаях требуется приобретение коммерческой лицензии.

Так что, если кто-то считает, что кроссплатформенные технологии разработки решает всего проблемы, он вероятнее всего будет крайне разочарован.

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

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

Работы в этом направлении ведутся. Microsoft достигнуты даже существенные результаты (как известно, Windows 8 и выше работает на PC, смартфонах и планшетах). Но, в целом те же компьютеры и мобильные устройства — это пока ещё две разные вселенные, внутри которых также существуют отдельные миры (Widows, Linux, Android и т.д.).

Что будет дальше покажет время.

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

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