Бұл жазба автоматты түрде аударылған. Бастапқы тіл: Орысша
Біз туралы аздап
Біз troubleshooting Technology компаниясымыз, 6 жылдан астам уақыт бойы бизнес, білім және мемлекеттік құрылымдар үшін IT-шешімдерді жобалаумен және әзірлеумен айналысып келеміз. Осы уақыт ішінде мобильді қосымшалар мен web-сервистерден бастап интеграциялық платформалар мен аналитика және автоматтандыру жүйелеріне дейінгі ондаған жобалар іске асырылды.
Біз не туралы сөйлесеміз
Өткен жазбаның жалғасында мобильді қосымшаны әзірлеу кезінде қандай тәсілдер бар екенін талдаймыз. Бұл жазбада біз жергілікті тәсіл туралы сөйлесетін боламыз (әр түрлі тілдерде iOS және Android үшін әр түрлі қосымшалар, iOS - та бұл Objective-C немесе Swift, Android-де бұл Java немесе Kotlin)
Жергілікті даму
Жергілікті даму-бұл белгілі бір платформаға тікелей қосымшалар жасау: iOS немесе Android. Әр ОЖ үшін әр түрлі тіл мен құралдар жиынтығы қолданылады. IOS жүйесінде бұл Swift немесе Objective-C, Android — де-Kotlin немесе Java.
Бұл мобильді қосымшаларды құрудың алғашқы және айқын әдісі. App Store және Google Play пайда болғаннан бастап, әзірлеушілер нақты құрылғылар мен жүйелерге жазды.
Жақсы нәрсе береді:
- құрылғының мүмкіндіктеріне барынша терең қол жеткізу;
- жоғары жылдамдық және оңтайландыру;
- үздік пайдаланушы тәжірибесі (UI / UX платформаның "жергілікті" құралдарымен жасалады);
- сенімділік және қолдау тікелей Apple және Google.
PWA мен кросс платформадан айырмашылығы неде
1. Сәулет және орындау ортасы
- Жергілікті: код платформа тілдерінде жазылады (Android үшін Kotlin/Java, iOS үшін Swift/Obj-C), байткодқа құрастырылады және жүйелік API көмегімен ОЖ ортасында тікелей жұмыс істейді.
- PWA: TWA-да "оралған" және дүкенде жарияланған болса да, браузер қозғалтқышында (WebView немесе Chrome Custom Tabs) жұмыс істейді. Яғни, браузер қабаты әрқашан қалады.
- Кросс-платформа (React Native, Flutter және т.б.): код жалпы, бірақ жергілікті виджеттерге (Bridge арқылы React Native) немесе жергілікті рендерингке (Skia арқылы Flutter) құрастырылады. Қалай болғанда да, код пен ОЖ арасында қабат бар.
2. Құрылғының функцияларына қол жеткізу
- Native: шығарылған күні барлық API және жаңа ОЖ фичтеріне тікелей қол жеткізу (NFC, ARKit, HealthKit, UWB және т.б.).
- PWA: кіру браузерде жүзеге асырылатындармен шектеледі (Web Bluetooth, web NFC, Web Push және т.б.). Ол біртіндеп кеңейеді, бірақ қозғалтқыш пен платформаға өте тәуелді. Мысалы, iOS-та Safari ұзақ уақыт бойы push және background sync-ті кесіп тастады.
- Кросс-платформа: жергілікті мүмкіндіктерге толық дерлік қол жетімділік, бірақ плагиндер немесе көпір арқылы. Жаңа API-лер оралғанша күтуі керек. Кейде сіз өзіңіздің жергілікті модуліңізді жазуыңыз керек.
3. UX және UI
- Жергілікті: нұсқаулықтарға толық сәйкес келеді (material, Human Interface Guidelines). Ең сезімтал интерфейс, жергілікті анимациялар, толық бақылау.
- PWA: UI веб арқылы сызылады. Туған жерге жақын жасауға болады, бірақ әрқашан айырмашылықтар қаупі бар (қимылдар, әлсіз құрылғылардағы қойылым, жүйелік үлгілермен интеграция).
- Кросс-платформа: React Native нақты Жергілікті компоненттерді пайдаланады, Flutter бәрін өзі көрсетеді. Төменгі жол: жергілікті UX-ге өте жақын, бірақ нюанстар болуы мүмкін (әр түрлі ОЖ-дегі әр түрлі қателіктер, ұсақ-түйектердегі "стандартты емес" сезімдер).
4. Өнімділік
- Native: Max - тікелей аралар мен темірмен жұмыс істейді.
- PWA: браузерге байланысты. Ауыр сценарийлерде (ойындар, 3D, күрделі анимациялар) өте төмен болуы мүмкін.
- Кросс-платформа: өнімділік жергілікті, бірақ қозғалтқышқа байланысты. Flutter UI-де жылдамырақ, React Native көптеген Оқиғалармен көпірде тұра алады.
5. Жаңарту және жеткізу
- Жергілікті: тек дүкендер арқылы жаңартулар(Google Play, App Store). Бұл плюс (бақылау, Пайдаланушылардың сенімі) және минус (депло жылдамдығы).
- PWA: сайт ретінде бірден жаңартылады-пайдаланушы әрқашан жаңа нұсқасын алады.
- Кросс-платформа: әдетте дүкендер арқылы, бірақ hot reload қызметін қызметтер (CodePush және аналогтар) арқылы жүзеге асыруға болады.
6. Әзірлеу және қолдау
- Native: iOS және Android үшін бөлек кодтық база, әр түрлі командалар, жоғары құны.
- PWA: веб пен "қолданбаға"арналған бір кодтық база. Арзан, жылдам, бірақ шектеулі.
- Кросс-платформа: бір код, бірақ сіз әлі де платформалық айырмашылықтарды ескеріп, кейде жергілікті модульдерді жазуыңыз керек. Жылдамдық пен мүмкіндік арасындағы тепе-теңдік.
Жергілікті даму құралдары
iOS
- Тілдер: Swift (негізгі) және Objective-C (ескірген, бірақ әлі де қолданылады).
- IDE: Xcode.
- Артықшылықтары: жоғары өнімділік, қатаң нұсқаулықтар, ыңғайлы стек.
- Кемшіліктері: жабық экожүйе, тек Apple құрылғыларымен жұмыс.
Android
- Тілдер: Котлин (ұсынылған) және Java (ескірген стандарт).
- IDE: Android Studio.
- Артықшылықтары: икемділік, кез-келген темірмен жұмыс, үлкен қауымдастық.
- Кемшіліктері: көптеген құрылғылар мен ОЖ нұсқалары, күрделі тестілеу және қолдау.
Пайдаланушының қабылдауы
Пайдаланушы үшін жергілікті қолданба анықтамалық тәжірибе болып табылады. Интерфейс әдеттегі iOS немесе Android үлгілеріне сәйкес келеді, Тегіс жұмыс істейді, "туған"көрінеді. PWA және Кросс-платформадан айырмашылығы, іс жүзінде ешқандайиссаға келу жоқ: UX толығымен платформаның өзі ойлағандай. Әр платформа үшін бөлек жасалған бірнеше қосымшаларды салыстыруға болады, айырмашылық өте маңызды.
Функционалдылық Жергілікті қолданбалар құрылғының барлық мүмкіндіктеріне толық және тікелей қол жеткізе алады: Камера, GPS, Bluetooth, NFC, Биометрия, ARKit/ARCore, фондық тапсырмалар, push қызметтері және кез келген жүйелік API. Бұл жергілікті тәсілді максималды интеграция мен өнімділік маңызды жобалар үшін міндетті таңдау жасайды.
Даму тұрғысынан
- Ресурстар: iOS және Android үшін бөлек әзірлеушілер немесе екі команда қажет.
- Мерзімдері: кросс-платформаға қарағанда ұзағырақ, өйткені екі жобаны қатар жүргізу керек.
- Құны: жоғары, кросс-платформадан немесе PWA-дан екі есе қымбат.
- Қолдау: болжамды, өйткені ОЖ және SDK жаңартулары тікелей Apple және Google-дан келеді.
Жалпы қорытынды
Жергілікті даму-бұл жылдамдық, тұрақтылық және құрылғының мүмкіндіктеріне толық қол жетімділік маңызды жобалар үшін таңдау, яғни "қымбат-бай"қажет болғанда.
Ол үшін қолайлы:
- банктік және мемлекеттік қызметтер;
- ауыр графикасы бар ойындар;
- AR/VR және күрделі анимациялары бар қосымшалар;
- қауіпсіздікті қажет ететін шешімдер.
Егер сіз MVP-ді тез босатып, аз бюджетке түсуіңіз керек болса немесе команданың минималды күшімен жұмыс жасасаңыз, бұл жұмыс істемейді.
Немного о нас
Мы — компания Troubleshooting Technology, уже более 6 лет занимаемся проектированием и разработкой IT-решений для бизнеса, образования и государственных структур. За это время реализовали десятки проектов: от мобильных приложений и web-сервисов до интеграционных платформ и систем аналитики и автоматизации.
О чем поговорим
В продолжении прошлого поста разберем какие подходы есть при разработке мобильного приложения. И в этом посте поговорим про нативный подход (разные приложения для iOS и Android на разных языках, на iOS это Objective-c или Swift, на Android это Java или Kotlin)
Нативная разработка
Нативная разработка — это создание приложений напрямую под конкретную платформу: iOS или Android. Для каждой ОС используется свой язык и набор инструментов. На iOS это Swift или Objective-C, на Android — Kotlin или Java.
Это исторически первый и самый очевидный способ создавать мобильные приложения. С самого появления App Store и Google Play разработчики писали под конкретные устройства и системы.
Хороша тем, что дает:
- максимально глубокий доступ к возможностям устройства;
- высокую скорость и оптимизацию;
- лучший пользовательский опыт (UI/UX создаётся «родными» средствами платформы);
- надёжность и поддержку напрямую от Apple и Google.
Чем отличается от PWA и кроссплатформы
1. Архитектура и среда исполнения
- Натив: код пишется на языках платформы (Kotlin/Java для Android, Swift/Obj-C для iOS), компилируется в байткод и работает напрямую в среде ОС, используя системные API.
- PWA: работает в браузерном движке (WebView или Chrome Custom Tabs), даже если «упакована» в TWA и опубликована в магазине. То есть слой браузера остаётся всегда.
- Кроссплатформа (React Native, Flutter и др.): код общий, но либо компилируется в нативные виджеты (React Native через bridge), либо в собственный рендеринг (Flutter через Skia). В любом случае есть прослойка между кодом и ОС.
2. Доступ к функциям устройства
- Натив: прямой доступ ко всем API и новым фичам ОС в день релиза (NFC, ARKit, HealthKit, UWB и т.д.).
- PWA: доступ ограничен тем, что реализовано в браузере (Web Bluetooth, Web NFC, Web Push и пр.). Постепенно расширяется, но сильно зависит от движка и платформы. На iOS, например, Safari долгое время резал push и background sync.
- Кроссплатформа: почти полный доступ к нативным функциям, но через плагины или bridge. Новые API приходится ждать, пока их обернут. Иногда нужно писать свой нативный модуль.
3. UX и UI
- Натив: полностью соответствует гайдам (Material, Human Interface Guidelines). Максимально отзывчивый интерфейс, нативные анимации, полный контроль.
- PWA: UI рисуется средствами веба. Можно сделать близко к нативному, но всегда есть риск отличий (жесты, перформанс на слабых устройствах, интеграция с системными паттернами).
- Кроссплатформа: React Native использует настоящие нативные компоненты, Flutter рендерит всё сам. Итог: очень близко к нативному UX, но могут быть нюансы (разные баги на разных ОС, «нестандартные» ощущения в мелочах).
4. Производительность
- Натив: максимум — работает напрямую с ОС и железом.
- PWA: зависит от браузера. В тяжёлых сценариях (игры, 3D, сложные анимации) может сильно уступать.
- Кроссплатформа: производительность близка к нативу, но зависит от движка. Flutter быстрее в UI за счёт своего рендера, React Native может упираться в bridge при большом количестве событий.
5. Апдейты и доставка
- Натив: обновления только через магазины (Google Play, App Store). Это и плюс (контроль, доверие пользователей), и минус (скорость деплоя).
- PWA: обновляется мгновенно как сайт — пользователь всегда получает свежую версию.
- Кроссплатформа: обычно через магазины, но можно внедрить hot reload через сервисы (CodePush и аналоги).
6. Разработка и поддержка
- Натив: отдельная кодовая база для iOS и Android, разные команды, выше стоимость.
- PWA: одна кодовая база для веба и «приложения». Дёшево, быстро, но ограничено.
- Кроссплатформа: единый код, но всё равно приходится учитывать платформенные отличия и иногда писать нативные модули. Баланс между скоростью и возможностями.
Инструменты нативной разработки
iOS
- Языки: Swift (основной) и Objective-C (устаревающий, но всё ещё используется).
- IDE: Xcode.
- Плюсы: высокая производительность, строгие гайдлайны, удобный стек.
- Минусы: закрытая экосистема, работа только с Apple-устройствами.
Android
- Языки: Kotlin (рекомендуемый) и Java (устаревающий стандарт).
- IDE: Android Studio.
- Плюсы: гибкость, работа с любым железом, огромное сообщество.
- Минусы: большое количество устройств и версий ОС, усложнённое тестирование и поддержка.
Восприятие пользователем
Для пользователя нативное приложение — это эталонный опыт. Интерфейс соответствует привычным паттернам iOS или Android, работает плавно, выглядит «родным». В отличие от PWA и кроссплатформы, здесь практически нет компромиссов: UX полностью такой, каким его задумала сама платформа. Можете сравнить несколько приложений, которые разработаны отдельно для каждой платформы, разница довольно существенная.
Функциональные возможностиНативные приложения имеют полный и прямой доступ ко всем функциям устройства: камере, GPS, Bluetooth, NFC, биометрии, ARKit/ARCore, фоновым задачам, push-сервисам и любым системным API. Это делает нативный подход обязательным выбором для проектов, где важны максимальная интеграция и производительность.
С точки зрения разработки
- Ресурсы: нужны отдельные разработчики под iOS и Android, или две команды.
- Сроки: дольше, чем у кроссплатформы, так как приходится вести два проекта параллельно.
- Стоимость: выше, почти вдвое дороже кроссплатформы или PWA.
- Поддержка: более предсказуемая, так как обновления ОС и SDK приходят напрямую от Apple и Google.
Общий вывод
Нативная разработка — это выбор для проектов, где критичны скорость, стабильность и полный доступ к возможностям устройства, т.е. когда нужно "дорого-богато".
Она подходит для:
- банковских и государственных сервисов;
- игр с тяжёлой графикой;
- приложений с AR/VR и сложными анимациями;
- решений, требующих повышенной безопасности.
Не подойдёт, если нужно быстро выпустить MVP, уложиться в небольшой бюджет или обойтись минимальными силами команды.