Виды разработки мобильных приложений для 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 лет после многих лет разработки нативных приложений