Виды разработки мобильных приложений для iOS и Android

Расскажем об основных видах разработки мобильных приложения, об их преимуществах и недостатках.

А также о том, почему мы начинали с разработки нативных мобильных приложений и пришли к разработке кроссплатформенных приложений на Flutter.

Нативная (native) разработка мобильных приложений iOS / Android

Классический вариант разработки.
  • Вопрос:
    Какие языки и технологии используются?
    Ответ:
    iOS:
    • на Swift
    • на Objective-C - устаревший вариант
    Android:
    • на Kotlin
    • на Java - почти устаревший вариант
  • Вопрос:
    Какие преимущества?
    Ответ:
    • Возможно реализовать любые функции приложения
    • Имеется доступ к любым возможностям, которые в принципе предоставляет iOS / Android
    • Можно сделать качественный и максимально удобный для конечных пользователей интерфейс приложения
  • Вопрос:
    Какие недостатки?
    Ответ:
    • Высокие трудозатраты:
      • нужно писать одно и то же приложение на двух разных языках программирования
      • поэтому приложение пишут удвоенное количество разработчиков
      • поэтому трудозатраты на разработку и поддержку удваиваются
      • а также сроки разработки, отладки и тестирования могут быть больше в 1,5 - 2 раза.
    • Тяжело поддерживать интерфейс приложения одинаковым на разных версиях iOS / Android
      • Так как протоколы взаимодействия приложения с iOS / Android часто меняются и/или улучшаются с выходом каждой новой версии
      • А также после выхода новых версии iOS / Android может некорректно отображаться интерфейс и может потребоваться обновление приложения
    • Реализация и поддержка нестандартных элементов интерфейса, навигации, анимаций затруднена
      • Так как операционные системы предоставляют мало готовых и удобных инструментов для их реализации
  • Вопрос:
    Рекомендуется для использования?
    Ответ:
    Как правило, используется для поддержки и развития старых приложений или при запуске разработки нового приложения с неограниченным бюджетом и сроками разработки.

Гибридная разработка мобильных приложений iOS / Android

Неактуальный вариант разработки, применяемый до появления первых серьезных кроссплатформенных решений.
  • Вопрос:
    Какие языки и технологии используются?
    Ответ:
    PhoneGap (iOS / Android):
    • JavaScript
    • HTML
    • CSS
    Cordova (iOS / Android):
    • JavaScript
    • HTML
    • CSS
    Ionic (iOS / Android):
    • JavaScript (Angular, React, Vue.js)
    • HTML
    • CSS, Saas
  • Вопрос:
    Какие особенности?
    Ответ:
    Итоговое приложение представляет из себя:
    • окно веб - браузера, запущенного внутри приложения
    • внутри веб-браузера запущен набор веб-страниц, имитирующий внешний мобильного приложения
    • веб-страницы взаимодействует с нативными возможностями через браузер
  • Вопрос:
    Какие преимущества?
    Ответ:
    • Одно написанное приложение можно запустить на двух платформах: как на iOS, так и Android
    • Небольшая экономия трудозатрат и сроков разработки, по сравнению с нативной разработкой
  • Вопрос:
    Какие недостатки?
    Ответ:
    • Низкое качество приложения для конечных пользователей
      • Неудобный и неприятный интерфейс
      • Так как пользователи видят невооруженным взглядом, что вместо нативного приложения запущен набор веб-страниц
      • Видны различные визуальные дефекты от веб-страниц
      • А поведение приложения похоже именно на веб-страницы, а не настоящее мобильное приложение
    • Из-за этого низкая производительность приложения в целом
    • Тяжело отлаживать и поддерживать приложение
      • Так как кроме отладки и поддержки приложения на разных версиях iOS / Android, приходится отлаживать html + css + js код веб-страниц на разных версиях браузеров, встроенных в iOS / Android
    • Реализация и поддержка нестандартных элементов интерфейса, навигации, анимаций затруднена
    • Может потребоваться некоторое время, когда после выхода новых версий iOS / Android добавят поддержку новых возможностей после обновления
    • И в итоге разработка мобильных приложений на данных платформах трансформируется в веб-разработку
  • Вопрос:
    Рекомендуется для использования?
    Ответ:
    Не рекомендуется
    • так как необходимость делать веб-содержимое внутри приложения нивелирует потенциальный выигрыш по трудозатратам и срокам разработки
    • а также неприемлемое итоговое качество приложения делает использование данной технологии бессмысленным

Кроссплатформенная разработка мобильных приложений iOS / Android

Современный бережливый вариант разработки.
  • Вопрос:
    Какие языки и технологии используются?
    Ответ:
    Xamarin (iOS / Android) от Microsoft:
    • C#
    • Мало распространенная и не очень удобная технология
    React Native (iOS / Android) от Facebook:
    • JavaScript
    • Широко используемая и удобная технология
  • Вопрос:
    Какие особенности?
    Ответ:
    Итоговое приложение:
    • Обычно представляет из себя неотличимое от нативного мобильного приложения по качеству интерфейса мобильное приложение
  • Вопрос:
    Какие преимущества?
    Ответ:
    • Одно написанное приложение можно запустить на двух платформах: как на iOS, так и Android
    • Значительная экономия трудозатрат и сроков разработки, по сравнению с нативной разработкой (от 1,5 до 2 раз)
    • Высокое качество приложения для конечных пользователей
      • Удобный и приятный интерфейс
      • Нестандартные элементы интерфейса, анимации и навигация могут быть реализованы
  • Вопрос:
    Какие недостатки?
    Ответ:
    • Могут быть проблемы с производительностью приложения
      • Что может вызвать либо неудобство для конечных пользователей
      • Либо повышенные трудозатраты во время разработки для отладки проблем
    • Не всегда удобно отлаживать и устранять ошибки и проблемы
      • Что также может повысить трудозатраты во время разработки
    • Может потребоваться некоторое время, когда после выхода новых версий iOS / Android добавят поддержку новых возможностей после обновления
  • Вопрос:
    Рекомендуется для использования?
    Ответ:
    Рекомендуется React Native

Кроссплатформенная разработка мобильных приложений на Flutter iOS / Android

Наиболее современная, бережливая и быстро растущая технология от Google для разработки кроссплатформенных приложений.
  • Вопрос:
    Какие языки и технологии используются?
    Ответ:
    Flutter (iOS / Android) от Google:
    • Наиболее быстро растущая, распространенная и удобная технология
  • Вопрос:
    Какие особенности?
    Ответ:
    Итоговое приложение:
    • Неотличимое от нативного приложения по качеству интерфейса и производительности
  • Вопрос:
    Какие преимущества?
    Ответ:
    • Одно написанное приложение можно запустить на двух платформах: как на iOS, так и Android
    • Значительная экономия трудозатрат и сроков разработки, по сравнению с нативной разработкой (от 1,5 до 2 раз)
    • Высокое качество приложения для конечных пользователей
      • Удобный и приятный интерфейс
      • Нестандартные элементы интерфейса, анимации и навигация могут быть реализованы
    • Высокая производительность приложения в целом
    • Удобно отлаживать и поддерживать
    • Вопрос:
      Какие недостатки?
      Ответ:
      • Может потребоваться некоторое время, когда после выхода новых версий iOS / Android добавят поддержку новых возможностей после обновления
    • Вопрос:
      Рекомендуется для использования?
      Ответ:
      Рекомендуется. Практикуется в нашей компании уже более 2 лет после многих лет разработки нативных приложений