НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Кросс-платформная разработка заходит в тупик?

Как поживают Delphi, Xamarin, AngularJS и другие.

[spoiler]Экс-Борланд представила очередную кросс-платформную IDE Appmethod ("Delphi минус VCL"), которая на базе единого кода сгенерирует родные бинарники для iOS и Android и ПК под Windows и Mac OS. Программирование ведется, конечно, на Object Pascal, летом добавится поддержка C++. Поддерживаются СУБД Oracle, Microsoft SQL Server, IBM DB2, Informix, интерфейсы SOAP, REST, JSON, а также быстро набирающие популярность BaaS-сервисы App42 Kinvey (я лично им пользуюсь, рекомендую:) ) и Parse API. Поддерживается концепция Enterprise Mobility as a Service.

Визуально это все та же Delphi, и зачем ее понадобилось переименовывать, непонятно. Вроде бы будет бесплатная версия для программирования под Android.

Вот крик души Delphi-программиста: http://habrahabr.ru/post/216433/

Xamarin после многих лет самостоятельного плавания плавно становится одним из ведущих поставщиков кросс-платформных технологий на базе C#/.NET. В феврале SAP заключила с ней партнерство по развитию SAP Mobile Platform 3.0, а в марте CRN сообщил, что Microsoft готовится Xamarin купить (уже выпускаются соответствующие расширения для Visual Studio 2013). Может, это все же признак корректировки курса развития Микрософта? Вроде уже почти закрыли DirectX, и вот 12-я версия выходит. Теперь возможно и .NET продолжит развиваться. По большому счету, для развития .NET компания Xamarin делает сегодня больше, нежели сама Микрософт, двинувшая в HTML и JavaScript.

Но на веб-поле полно мощнейших конкурентов.

Так, Google AngularJS уверенно движется к версии 2.0. Этот фреймворк создания мобильных приложений на JavaScript пополнится и поддержкой ПК, и важно, что для него ведется роадмап: http://blog.angularjs.org/2014/03/angular-20.html

Из важных фич -- совместимость со стандартом ECMAScript 6 и зоопарком браузеров, и модульная архитектура. Для исполнения EC6-кода в действующих браузерах будет задействован компилятор Traceur https://github.com/google/traceur-compiler
Работать js-код будет конечно и в обычных браузерах, но акцент делается на мобильности: Chrome на Android, Firefox все платформы, и родные браузеры iOS 6 и Windows Phone 8.
На основе AngularJS даже развиваются другие платформы -- например, http://ionicframework.com/ , позволяющий создавать native-приложения на HTML5.

Не исключено, что выход Microsoft DirectX 12 -- это реакция на новую версию Google Play Game Services, которая теперь предлагает кросс-платформный мультиплеер для iOS и Android. Ранее поддерживались только айфоны через движок Unity, а теперь еще вышел Play Games C++ SDK, а также статистика-аналитика, облачное хранилище, разные специализированные фичи.

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

Причины здесь примерно такие:

- качество кросс-платформных систем так и не приблизилось к родным IDE (Android/iOS/...): что расширения для Visual Studio, что собственные оболочки могут быть весьма развитыми, однако настройки, сборка и особенно отладка, весьма и весьма сложны и неудобны -- например из-за существенных проблем в стыковке с Android SDK (который и сам по себе весьма суров :) );

- JavaScript смотрится хорошей альтернативой (генерацию HTML5 в APK предлагают многие сервисы, хотя при этом получится конечно не native, а интерпретируемый код), однако для нее пока сложно найти хотя бы один полноценный интегрированный фреймворк с пошаговой отладкой! Да и сам этот язык пока смотрится для корпоративных нужд несколько странновато.

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

В итоге же оказывается, что для более-менее крупных проектов гораздо выигрышнее в плане времени оказывается вести разработку для каждой платформы полностью раздельно,с применением удобных и знакомых оригинальных средств, заточенных на одну ОС (например, Eclipse и Android Studio, Apple XCode). Когда архитектура приложения понятна, повторно кодировать для другой платформы значительно легче, и в итоге отказ от кросс-платформной разработки на основе единой кодовой базы подчас парадоксально дает суммарный выигрыш времени в разы! Исключения -- в основном тонкие клиенты со слабой функциональностью и простым кнопочным UI.