Аппараттық және бағдарламалық қамтамасыз етуді орнату

Туған жері ме, жоқ па? Кросс-платформаны дамыту туралы төрт миф. Жергілікті немесе кросс-платформа - жаңадан келген мобильді әзірлеуші ​​нені таңдауы керек? Сарапшылар жауап береді кросс-платформалық бағдарламалар android iOS

Кросс-платформалық әзірлеу iOS және Android орталарында бір уақытта жұмыс істейтін мобильді қосымшаны жасауға мүмкіндік береді. Бұл әр операциялық жүйе үшін бөлек қолданба жасаудың бюджеттік баламасы.

Кросс-платформалық дамудың ерекшеліктері

Әртүрлі платформалар үшін бір қосымшаны әзірлеу бір уақытта жақсы және жаман. Жақсы, өйткені оны әр операциялық жүйеге арналған бірнеше қолданбаларға қарағанда тезірек және арзанырақ жасауға болады. Және бұл нашар, өйткені компромисс қолданбаның жұмысында көрінеді.

Бұл ерекшеліктер жобаны бастамас бұрын ескерілуі керек:

  • Кросс-платформалық ортада код бір рет жазылады. Қолданбаның басқа операциялық жүйеде жұмыс істеуі үшін код басқа бағдарламалау тіліне аударылады. Әзірлеуге жұмсалатын уақыт пен қаржы 1,5 есе аз.
  • Қолданбалар дұрыс жұмыс істемеуі мүмкін.Кросс-платформалық дамуда әрбір операциялық жүйенің архитектурасымен жұмыс істеудің барлық нюанстарын ескеру мүмкін емес, сондықтан қолданбалар iOS немесе Android үшін арнайы жасалғандарға қарағанда баяу жұмыс істей алады.
  • Элементтерге арналған интерфейс және дизайн талаптары операциялық жүйеден операциялық жүйеге дейін өзгереді.. Мысалы, iOS жүйесінде Android сияқты кері түйме жоқ. Бірыңғай дизайнды әзірлеу кезінде бұл тармақты ескеру қажет: iOS жүйесінде түйме қалады, бірақ жұмыс істемейді немесе оны қолмен кесуге тура келеді, және бұл қосымша жұмыскодпен.

Бір платформадан екіншісіне өту қателерінің көпшілігі қолмен түзетіледі, бірақ «жергілікті емес» операциялық жүйеге бейімделу мәселелерін толығымен шешу мүмкін емес.

Сонымен, кросс-платформаны дамыту нашар ма?

Жоқ, кросс-платформаны әзірлеу жақсы, егер сіз одан бере алатыннан көп талап етпесеңіз.

Бұл опцияны келесі жағдайларда таңдауға болады:

  • Шектеулі бюджетте барлық операциялық жүйелерді қамтиды.Егер а мақсатты аудитория iOS немесе Android қолданбасын белсендірек пайдалансаңыз, бір операциялық жүйеге арналған жергілікті қолданбадан бастай аласыз. Егер максималды қамту бірден маңызды болса, кросс-платформа опциясын таңдаған дұрыс.
  • Тауашаны тексеріңіз. Егер перспективалық идея болса, бірақ оның жүзеге асатынына сенімділік болмаса, дамуға бірден үлкен бюджетті салу тәуекелді. Кросс-платформаны әзірлеуден бастау, пайдаланушы реакцияларын зерттеу және осының негізінде стратегиялық шешімдер қабылдау мағынасы бар.
  • Қолданба күрделі анимацияны пайдаланбайды және есептеулерді орындамайды.Бұл операциялар құрылғыны айтарлықтай жүктейді, ал кросс-платформалық қолданба белгілі бір платформаның ресурстарын толық пайдалану үшін оңтайландырылмаған.
  • Қолданба құрылғының негізгі функцияларын ғана пайдаланады. Ақпаратты көрсетіңіз, файлдарды жүктеңіз, геолокацияны пайдаланыңыз, тапсырыс беріңіз - кросс-платформалық қолданба мұның бәрін шеше алады. Құрылғының мүмкіндіктерін тереңірек біріктіру қажет - сіз жергілікті әзірлеуді таңдауыңыз керек.
  • Қызметкерлерге арналған корпоративтік өтінім.Егер қолданба тар ішкі тапсырмалар үшін әзірленсе және адамдар онымен жеке гаджеттер арқылы жұмыс істейтін болса, кросс-платформалық қосымша ең жақсы нұсқа болады.

Сіздің жобаңыз үшін кросс-платформалық шешімдерді пайдалану мүмкін бе деген сұраққа әмбебап жауап жоқ. Төмендегі пішінді толтырыңыз: біз сіздің жобаңызды зерттеп, оны жүзеге асырудың ең жақсы нұсқасын таңдаймыз.

Мобильді қосымшалар біздің өміріміздің таптырмас серігіне айналды. Олардың көмегімен біз өз өмірімізді көңілді өткізіп, жеңілдетіп қана қоймай, сатып алуларды жасай аламыз немесе белгілі бір қызметтерге онлайн тапсырыс бере аламыз, сонымен қатар бизнесімізді алға жылжытып, тұтынушылар базасын ұлғайта аламыз және, тиісінше, пайдамызды еселей аламыз. Ал егер ешкім өз бизнесіне қосымша жасау қажеттілігіне күмәнданбаса, онда мобильді қосымша түрін таңдауда біраз қиындықтар туындауы мүмкін.

Барлық заманауи қолданбаларүшін мобильді құрылғыларжергілікті және кросс-платформаға бөлуге болады және осы екі топтың әрқайсысының өзіндік екеуі де бар мықты жақтарысондай-ақ оның кемшіліктері.

Жергілікті қолданбалар - бұл сәйкес бағдарламалау тілінде белгілі бір платформа үшін арнайы әзірленген қолданбалар. Сонымен, Android қолданбасын жасау кезінде Java пайдаланылады, ал IOS қосымшалары үшін Objective-c немесе Swift. Мұндай жобаларды жасау кезінде мамандар UI/UX дизайнына, операциялық жүйе әзірлеушілерінің талаптары/ұсынымдарына, сондай-ақ мобильді индустрияның соңғы трендтеріне ерекше назар аудара отырып, платформалардың барлық мүмкіндіктерін ескереді. Бір маман жоғарыда аталған тілдердің барлығын толық меңгере алмайды, сондықтан әртүрлі платформалар үшін бір отандық өнімді әзірлеу үшін әртүрлі әзірлеушілерді қосу қажет, бұл қосымша шығындар және әзірлеу уақыты әсерлі болады. Бірақ сонымен бірге қосымшалар белгілі бір платформа үшін «ұшталған» болады, құрылғының ішкі ресурстары мен функцияларына қол жеткізеді және мүмкіндігінше тиімді жұмыс істейді.

Отандық дамудың артықшылықтарының айтарлықтай тізіміне қарамастан, тұтынушылар әрқашан бірнеше шеберлерді құру процесіне байланыстырып, олардың дамуына уақыт пен ақша жұмсағысы келмейді. Мұндай жағдайларда ең жақсы нұсқа стандартты веб-технологияларды пайдалана отырып, кез келген платформаға арналған қосымшаларды жасауға мүмкіндік беретін кросс-платформалық әзірлеу болып табылады. Бұл ретте әзірлеуді HTML5, JavaScript және CSS3-пен қажетті білімі мен тәжірибесі бар бір адам жүзеге асыра алады. Кросс-платформалық әзірлемелерді Android үшін .apk файлына және IOS үшін .ipa файлына жинақтауға болады. Осылайша, бір әзірлеме негізінде танымал операциялық жүйелерге аз уақыт пен ақша жұмсай отырып, екі қосымшаны алуға болады. Дегенмен, мұндай әзірлемелердің кемшіліктері де бар, сондықтан әрбір нақты жағдайды жеке қарастырып, ең қолайлы нұсқаны - жергілікті немесе кросс-платформалық әзірлеуді таңдаған жөн.

Қолданбаның клиент және сервер бөліктері

Көбінесе маңызды қолданбалардың өз клиенттік жағы бар, ол жиі фронтон деп аталады және сервер жағы, сервер жағы. Фронт мобильді құрылғының экранында көргендеріңізге, яғни қолданбаның барлық көрнекі көрінісіне, соның ішінде терезелердің дизайнын, өлшемін және орналасуын, мәзірлерді, түймелерді, көрсеткілерді және кез келген басқа элементтерді қамтиды. Сондай-ақ, интерфейс қолданбаның әртүрлі бөлімдеріне өтуге, жаңа мәзірлерді шақыруға және т.б. бағытталған белгілі бір пайдаланушы әрекеттеріне қолданбаның реакциясына жауап береді.

Backend болып табылады сервер бөлігіқолданбасы және қашықтағы серверде орналасқан, оны кез келген жерде орналастыруға және кең ауқымды пайдалану арқылы басқаруға болады бағдарламалық құралдар. Клиент пен сервер бөліктері арасындағы байланыс API (бағдарламалық бағдарламалау интерфейсі) арқылы жүзеге асырылады. Басқаша айтқанда, API интерфейс пен сервер арасындағы делдалдың бір түрі болып табылады, ол клиент тарапынан сұрауларды серверге жібереді, пайдаланушыға қажетті деректерді қайтарады.

Frontend әзірлеу

Қолданбаның клиенттік бөлігі өте маңызды, өйткені онымен пайдаланушы өзі айналысады және пайдаланушы фронтендтің ыңғайлылығына байланысты болады. жалпы идеяқолданба туралы. Оны қолмен де әзірлеуге болады, бірақ ол үшін сіз HTML5, CSS3 және java-скриптті жақсы білуіңіз керек және фреймворк деп аталатындардың көмегімен. Бірінші жағдайда, әдетте PhoneGap деп аталатын Apache Cordova әзірлеу ортасы жиі пайдаланылады. Осы құрылымды пайдалана отырып, сіз Cordova нақты платформа үшін түсінікті кодқа түрлендіретін веб-технологияларды пайдалана отырып, кез келген платформаға арналған қолданбаларды жасай аласыз. Cordova нақты операциялық жүйелерге арналған қосымшаларды жасау үшін Objective-C немесе Swift, Java немесе Kotlin тілін үйренуді қажет етпейтін веб-әзірлеушілер үшін іс жүзінде шексіз мүмкіндіктер ашады.

Кордовада UI және логикада шектеулер болмағанымен, фреймворктар дайын үлгі шешімдерін ұсынады. Бір жағынан, бұл әзірлеу процесін айтарлықтай жылдамдатады және жеңілдетеді, өйткені маман дайын түймелерді, тізімдерді, енгізу өрістерін, карталарды және басқа UI элементтерін пайдалана алады. Екінші жағынан, маман әзірлеу үшін таңдалған құрылымда қол жетімді құралдар мен элементтерді ғана пайдалана алады. Олардың ең танымалы - Ionic, ол кез келген талғамға арналған кросс-платформалық қосымшаларды жасауға мүмкіндік береді. Бұл құрылымда жергілікті қолданбаларды көрнекі түрде еліктейтін стандартты элементтердің үлкен жиыны бар, бірақ қажет болған жағдайда олардың дизайнын өзгертуге болады. Бұл ретте әзірлеуші ​​иондық жүйенің мүмкіндіктерін кеңейтетін көптеген қосымша плагиндерді қоса алады және осы негізде жасалған жоба браузер терезесінде тікелей іске қосылып, оның қалай көрінетінін және жұмыс істейтінін бағалай алады. қолданба құрылудаэмуляторды немесе смартфонға орнатуды қажет етпей.

Backend әзірлеу

Клиент жағында HTML, CSS, JS және фреймворктарды білетін дизайнерлер мен әзірлеушілер айналысса, бэкендпен басқа профильдегі бағдарламашылар айналысады. Серверлерді конфигурациялау үшін әртүрлі бағдарламалау тілдері мен құралдарын пайдалануға болады, ең бастысы олардың жұмысын және клиент бөлігімен өзара әрекеттесуін дұрыс конфигурациялау. Бұл жерде сәйкес деректер базасын басқару жүйелерін (деректер базаларын) пайдалану қажет. Бұл дәстүрлі MySQL, Redis, PostgreSQL немесе белгілі бір жобаны жүзеге асыру үшін қолайлы және бэк-энд әзірлеушісі жақсы білетін кез келген басқа дерекқор (мысалы, MongoDB) болуы мүмкін. Қолданбаның серверлік жағын жасау үшін әзірлеушілер PHP, NodeJS, C#, Ruby, Python, Java және басқа бағдарламалау тілдерін пайдалана алады.

Бұл мәселеге KitApp мобильді студиясының мамандары жүгінеді фронтальды дамытужәне сервер бөліктерін жан-жақты және барынша жауапты түрде. Біздің әзірлеушілер сізге мүмкіндігінше тез және тиімді кез келген күрделілік пен бағыттағы кросс-платформалық қосымшаны жасайды! Бізбен байланысыңыз және біздің мамандар барлық сұрақтарыңыз бойынша сізге дереу кеңес береді!

Смартфондар мысық фотосуреттері мен xxx бейнелерін тұтыну құралы ретінде ғана емес, сонымен қатар жұмыс құралы ретінде күн астында көбірек орын алуды жалғастыруда. Сондықтан ұялы телефонды дамытуға сұраныс артып келеді. Әдетте iOS үшін Objective-C/Swift және Android үшін Java/Kotlin шынайы және керемет деп саналады. Сөз жоқ, шынайы және керемет, бірақ ол бар көп саныжергілікті құралдарға қарағанда кросс-платформалық фреймворктар таңдалатын нақты әлемдегі сценарийлер.

Кейбір әзірлеушілер кросс-платформалық фреймворктардың барлық өмірлік мәселелерін шешуін күтеді, ал басқалары оларды дұшпандықпен қабылдайды. Екі «соғысушы лагерьде» де қалай және не жұмыс істейтінін түсінбеуден туындаған өз қате түсініктері бар. Бұл отқа май құяды, өйткені техникалық дәлелдердің орнына эмоциялар қолданылады.

Сондай-ақ әзірлеушілер арасында, әсіресе жаңадан бастағандар арасында кросс-платформалық мобильді фреймворктар туралы көптеген аңыздар бар. Біздің мақалада біз олардың ең танымалдарын талдаймыз. Бірақ алдымен, барлық IT-блэкджек үшін ақша беретін бизнес көзімен мобильді дамуды қарастырайық.

Неліктен бізге кросс-платформалық құралдар қажет?

Тарихи тұрғыдан алғанда, компьютер нарығында әрқашан бәсекелестік болды және әрбір өндіруші өзінің операциялық жүйелері мен құрылғылары үшін қосымшаларды әзірлеу үшін жергілікті (жергілікті) деп аталатын құралдардың оңтайлы жиынтығын ұсынды.

Жергілікті құралдар = экожүйенің иесі қамтамасыз етеді.

Барлық басқа «туғандық» белгілері ЕКІНШІЛІК - қолданбалардың мінез-құлқы мен интерфейсі, ОЖ мүмкіндіктеріне қол жеткізу, өнімділік және т.б.

Сонымен қатар, әрқашан дерлік жергілікті құралдар тілдердің даму деңгейінде, қабылданған конвенциялар мен архитектуралар деңгейінде ғана емес, сонымен қатар олармен жұмыс істеу тетіктері деңгейінде де бір-бірімен үйлеспейді. операциялық жүйежәне кітапханалар. Нәтижесінде бірдей алгоритмдер мен интерфейстерді жүзеге асыру үшін әртүрлі бағдарламалау тілдерінде бірнеше орталар үшін қосымшаны жазу, содан кейін оны «әр платформаға бір команда» негізінде жүргізу қажет болды. Сонымен қатар, мүмкіндіктер сыртқы түріәртүрлі платформалардағы қолданбалар әрқашан дерлік 90% бірдей. Қызығушылығы үшін iOS және Android үшін сүйікті бағдарламаларыңыздың орындалуын салыстырыңыз.

Екінші маңызды нүкте- Қол жетімділік қажетті білімжәне командадағы тәжірибе: егер олар болмаса, үйрену үшін уақыт қажет.

Осы екі мәселені шешу үшін кросс-платформалық әзірлеу құралдары (тек мобильді ғана емес) нарықта бұрыннан пайда болды, олар мыналарды ұсынады:

  • өнімді әзірлеу және қолдау оңай болуы үшін бір бағдарламалау тілінде жалпы кодтық базаны барынша көбейту;
  • жаңа платформаларда қосымшаларды енгізу үшін бар құзыреттер мен мамандарды пайдалану.

Қазір көптеген бағдарламалау тілдері (және орталар) болғандықтан (және осы тілдерді білетін мамандар), кросс-платформаны әзірлеуге арналған құралдардың жеткілікті саны бар. Мысал ретінде біз аймағымыздағы танымалдарға тоқталамыз PhoneGap, Xamarin, React Native және Qt.


Енді мифтер туралы айтуға болады.

Миф 1. Сиқыр

Жаңадан келе жатқан әзірлеушілердің санасын мазалайтын ең көп тараған миф - платформалар аралық қосымшаларды сиқырлы түрде жергілікті қолданбаларға айналдыратын супер-алгоритмдерге (және оларды жасаған супер-бағдарламашыларға) сену. «JavaScript кодын Swift-ке түрлендіру, содан кейін Swift қолданбасын құрастыру» жолындағы бір нәрсе. Бұл мифті кросс-платформалық құралдарды жасаушылардың өздері тудырды, нәтижесінде «туған қолданбаларды» жасауға уәде береді. Бұл жерде біреудің айлакерлігі емес, бай қиял және негізгі механизмдерді түсінбеу кейде әзірлеушілерді шамандық трюктар туралы ойлауға итермелейді.

Кросс-платформалық шешімдердің негізінде жатқан негізгі принцип кодты екі бөлікке бөлу болып табылады:

  • кросс-платформатұратын виртуалды ортажәне арнайы көпір арқылы мақсатты платформаның мүмкіндіктеріне шектеулі қол жеткізу;
  • жергілікті, ол қолданбаны инициализациялауды, негізгі объектілердің өмірлік циклін басқаруды қамтамасыз етеді және бар толық қолжетімділікжүйелік API интерфейстеріне.


«Туған» әлем мен «кросс-платформалық» әлемді байланыстыру үшін арнайы көпір, ол кросс-платформалық фреймворктердің мүмкіндіктері мен шектеулерін анықтайды.

Көпірді пайдаланған кезде өнімділік әрқашан «әлемдер» арасындағы деректерді түрлендіру, сондай-ақ түрлендіру арқылы төмендейді API қоңырауларыжәне кітапханалар.

Сонымен, барлық кросс-платформалық қолданбалардың түпнұсқа бөлігі болуы керек, әйтпесе амалдық жүйе оларды іске қоса алмайды. Сонымен, iOS, Android және Windows жүйелері қандай API интерфейстері мен механизмдерін қамтамасыз ететінін егжей-тегжейлі қарастырайық. Келесі мифке көшейік.

Миф 2. Туған жер емес!

Сонымен, бізде виртуалды ортада тұратын және рамкалық инфрақұрылым мен көпір арқылы операциялық жүйемен әрекеттесетін қосымшаның кросс-платформалық бөлігі бар.

Барлық операциялық жүйелер: iOS, Android және Windows UWP - келесі ішкі жүйелерге (жүйелік API жиынтықтарына) қол жеткізуді қамтамасыз етеді:

  • WebView (бағдарламаға ендірілген веб-шолғыш) PhoneGap негізіндегі гибридті қолданбаларда пайдаланылады және іс жүзінде жергілікті веб-сайттың жұмыс уақыты ретінде әрекет етеді;
  • JavaScript қозғалтқыштары React Native және оның аналогтарында JS кодын жылдам орындау және Native және JS арасында деректер алмасу үшін пайдаланылады;
  • OpenGL ES (немесе DirectX) пайдаланылады ойын қозғалтқыштарыжәне интерфейсті сызу үшін Qt/QML немесе аналогтардағы қолданбалар;
  • UI ішкі жүйесі React Native және Xamarin үшін сәйкес келетін қолданбаның жергілікті пайдаланушы интерфейсіне жауап береді.


Кросс-платформалық қолданбалардың өзіндік бөлігі және жүйелік API интерфейстеріне "түпнұсқа" қолданбалар сияқты толық рұқсаты бар. Айырмашылығы мынада, жүйелік әдісті шақыру көпір және құрылымдық инфрақұрылым арқылы өтеді:

веб-көрініс- қолданба бір беттік веб-сайтқа ұқсас өзінің веб-шолғышында тұрады. Түпнұсқа басқару элементтеріне (түймелер, тізімдер және т.б.) қол жеткізу жоқ, барлығы HTML/CSS/JavaScript негізінде жасалған. Екінші жағынан, веб-әзірлеуші ​​өзін суға кеткен үйрек сияқты сезінеді.

JavaScript қозғалтқыштарысалыстырмалы түрде жақында танымал болды, өйткені ұқсас механизм iOS-қа тек 7.0 нұсқасында қосылды. Мүмкіндіктердің ішінде JavaScript және Native орталары арасында JSON ішіне тасымалданатын күрделі деректер құрылымдарын сериялау қажеттілігін ескерген жөн. Егер мұндай шешімдер класын қысқаша сипаттайтын болсақ, онда JavaScript ортасында жергілікті қолданбаны басқаратын JS коды орындалады.

OpenGL ES және DirectXтөмен деңгейлі ішкі жүйелер болып табылады және көрсету үшін пайдаланылады пайдаланушы интерфейсіойындарда және, мысалы, Qt/QML. Яғни, OpenGL / DirectX пайдаланған кезде әзірлеушілер өздері басқару элементтері мен анимацияларды салады, олар тек жергілікті құрылғыларға ұқсас болуы мүмкін. Екінші жағынан, бұл өте жоғары өнімділігі бар төмен деңгейлі ішкі жүйе, сондықтан ол кросс-платформалық ойын қозғалтқыштарында да қолданылады.

Барлық кросс-платформалық қолданбалардың жергілікті бөлігі бар, демек, жүйелік API интерфейстеріне «түпнұсқалар» сияқты бірдей толық қол жетімділік. Сондай-ақ, кросс-платформалық қосымшалар «туған» тілінде «туған» құралдармен жиналады және буылады. орнату пакеттері. Негізгі мәселе кросс-платформалық бөлік пен жергілікті бөлік арасындағы өзара әрекеттесу қалай ұйымдастырылады. Мысалы, WebView ішінде немесе Open GL ES/DirectX көмегімен пайдаланушы интерфейсін толығымен табиғи көрініспен жасау мүмкін емес, бірақ GPS, Push хабарландырулары және басқа функцияларға толық қол жетімділік бар. JavaScript немесе C# коды жергілікті қолданбаны және оның әрекетін еркін басқара алады, бұл толықтай табиғи көріністі қамтамасыз етеді.

Қорытындылай келе - иә, қолданылатын әзірлеу құралдары тұрғысынан (Apple, Google емес) «туған емес». Бірақ қолданба жүйелік API интерфейстеріне қол жеткізу тұрғысынан толығымен жергілікті болуы мүмкін және толығымен жергілікті көрініс пен сезімді қамтамасыз етеді. Ал біз келесі мифке көшеміз.

Миф 3. Балдаққа балдақ

Бұл жерде түсіну керек, жергілікті API әдепкі бойынша балдақ болып саналмайды (бұл жерде әртүрлі пікірлер бар), сондықтан барлық наразылық кросс-платформа бөлігіне бағытталған. Орындау ортасын (мысалы, WebView, JavaScript қозғалтқышы немесе Mono) ұзақ тарихы бар жетілген шешімдер деп атауға да қиын екені анық.

Балдақ кросс-платформа бөлігінің жергілікті бөлікпен біріктірілгені сияқты. Әртүрлі фреймворктардың қалай жұмыс істейтінін жақсырақ түсіну үшін кросс-платформа және жергілікті бөліктерді байланыстыру үшін пайдаланылатын операциялық жүйе механизмдерін қарау үшін PhoneGap, Xamarin, Qt және React Native мысалын қолданамыз.

Біз PhoneGap-тен бастаймыз. Төменде осы негізге негізделген қолданбаның жоғарғы деңгейлі архитектурасы берілген.



PhoneGap қолданбасы шын мәнінде WebView интерфейсін жалғыз UI басқару элементі ретінде көрсететін жергілікті қолданба болып табылады. Ол арқылы туған бөлікпен өзара әрекеттесу жүзеге асады. iOS, Android және Windows UWP жүйелеріндегі барлық стандартты WebViews JS сипаттары мен әдістері үшін жергілікті өңдеушілерді қосу мүмкіндігін қолдайды. Сонымен қатар, JS коды оқшауланған ортада тұрады және жергілікті бөлік туралы ештеңе білмейді - ол жай ғана қажетті JS әдістерін тартады немесе қажетті JS қасиеттерін өзгертеді. Барлығы стандартты веб-DOM ішінде, ол қарапайым енгізуге қатысты жаңа элементтерді қосады.



React Native қолданбасында қолданбаларды жасау кезінде әзірлеушіге әрқашан дерлік Objective-C, Java немесе C # тілінде жергілікті бөлікті енгізу қажет болады, ал жергілікті қолданбаны басқару JavaScript-тен келеді. Шын мәнінде, JavaScript механизмі бөлек қол жетімді WebView элементі болып табылады. Өзара әрекеттесу PhoneGap жағдайындағыдай JS көпірі арқылы өтеді. Дегенмен, React Native бағдарламасында JS коды веб DOM тармағын емес, жергілікті қолданбаны басқарады.

Есіңізде болсын, iOS шектеулеріне байланысты (JIT енгізуге мүмкіндік жоқ), JavaScript коды жылдам түсіндіріледі және құрастырылмайды. Жалпы, бұл нақты қолданбалардағы өнімділікке әсер етпейді, бірақ есте сақтау керек.

Енді классикалық Xamarin.iOS және Xamarin.Android нұсқаларын қарастырыңыз, өйткені Xamarin.Forms (Windows UWP қолдайтын) оларға қосымша болып табылады.



Xamarin мақсатты операциялық жүйемен өзара әрекеттесу үшін моно кітапхананы пайдаланады, ол P/Invoke механизмі арқылы жергілікті кодты шақыруға мүмкіндік береді. Ол iOS/Android жүйесінде жергілікті API интерфейстерімен байланысу үшін де қолданылады. Яғни, C# тіліндегі орауыштар барлық жалпыға ортақ API әдістері үшін жасалады, олар өз кезегінде жүйелік API интерфейстерін шақырады. Осылайша, барлық жүйелік API интерфейстеріне Xamarin қолданбасынан кіруге болады.

Ақыр соңында, Qt-ді қарастырайық, өйткені бұл туралы тәжірибелі әзірлеушілер тарапынан көптеген сұрақтар бар.



Qt - бұл «өзіндік нәрсе», оның артықшылықтары мен шектеулері бар. Qt кітапханалары барлық операциялық жүйелерде табылған C++ жүйесінің API интерфейстеріне жай ғана қосылады. Пайдаланушы интерфейсін салу үшін төменгі деңгейлі механизмдер пайдаланылады, бірақ жергілікті стильді қолдайтын өзінің графикалық қозғалтқышы. Сонымен қатар, Android жүйесінде Java API интерфейсіне арнайы көпір (JNI көпірі) арқылы қол жеткізу керек, ал Windows UWP үшін Open GL ES to DirectX қоңырау түрлендіргішін пайдаланыңыз, өйткені Open GL UWP үшін қол жетімді емес.

Қорытындылай келе: барлық кросс-платформалық фреймворктар операциялық жүйелердің стандартты жергілікті мүмкіндіктерін пайдаланады, жетілген, тәжірибелі командалар мен IT индустриясының гиганттарының қолдауымен ашық бастапқы қауымдастық жасаған. Ақырында, ең «күшті» даудың уақыты келді.

Миф 4. Баяу

Адамдар кросс-платформалық фреймворктар туралы дауларда пайдаланғысы келетін маңызды трамплиндік карта төмен өнімділік болып табылады. Тағы да, немен салыстыруға және қандай попугаяларды санауға байланысты.

Еске салайық, кросс-платформалық қосымшалардың ерекшелігі көпір арқылы қосылған екі әлемнің параллель болуы болып табылады:

  • PhoneGap: HTML/JS және Native Java / Objective-C / C#;
  • React Native: JS және Native Java / Objective-C / C#;
  • Xamarin: моно және жергілікті Java / Objective-C;
  • Qt: C++ және Native Java/Objective-C.

Осылайша, өнімділікті салыстыру кезінде жұмыс жылдамдығын ескеру қажет:

  • кросс-платформа бөлігі;
  • туған бөлігі;
  • көпір.

Іздеу жүйесінде терсеңіз, мысалы, жергілікті және жылдам өнімділікке жауап беріңіз, сіз көптеген әртүрлі сынақтарды көре аласыз және олардың көпшілігі көпірді белсенді пайдаланған кезде өнімділік күрт төмендейтінін, соның ішінде платформалар аралық кодтан UI-ді белсенді басқаруды атап өтеді. Xamarin үшін жағдай бірдей көрінеді - кросс-платформа бөлігі деректерді өңдеуде өте жылдам және жергілікті бөлікпен салыстыруға болады, бірақ көпірді пайдаланған кезде өнімділік төмендеуі мүмкін. Qt әдетте C++ деңгейінде жұмыс істейді, бұл өздігінен жылдам. PhoneGap негізіндегі шешімдерді қарастыратын болсақ, онда өнімділік WebView-ге өте тәуелді болады, бірақ әлі де JavaScript кодындағы UI-ді белсенді түрде өзгертуге немесе ғылыми есептеулерді орындауға болмайды.

Баяу? Иә, өнімділіктің төмендеуі операциялық жүйемен көпір арқылы әрекеттеспеушілік салдарынан мүмкін. Дегенмен, кросс-платформалық әлемдердің өзі жергілікті әлемдер сияқты жылдам.

Нарық мобильді қосымшаларон жылдан астам уақыт өтті, бірақ ол әлі де қарқынды дамып келеді. Компаниялардың сұранысы үнемі өсіп отырады және ол әлі де ұсыныстан айтарлықтай асып түседі, бұл даму құнының тұрақты өсуіне әкеледі. Бұл процестің құнын төмендету шешімдерінің бірі барлық платформаларда бірдей код пайдаланылған кезде кросс-платформаны әзірлеу болып табылады.

Өткен жолы біз кросс-платформалық мобильді қосымшаларды әзірлеуге тоқталған едік және содан бері көп нәрсе өзгерді. Әдістер мен құралдар туралы тағы сөйлесетін кез келді.

Алдымен терминологияны қайталап көрейік.

Жергілікті

Қолданбаны жазу процесінде әзірлеушілер белгілі бір платформа үшін қабылданған бағдарламалау тілін пайдаланса, ол iOS үшін Objective-C және Swift болсын, немесе мұндай қолданба жергілікті (ағылшын тілінен - ​​жергілікті, табиғи) деп аталады.

Жергілікті қолданбалардың артықшылықтары:

  • интерфейс жылдамдығы және жауап. Қолданба шертулерге бірден жауап береді, анимацияда, айналдыруда, деректерді қабылдауда және шығаруда іс жүзінде ешқандай кідіріс болмайды;
  • құрылғының функциялары мен сенсорларына анық және оңай қол жеткізу. Әзірлеушіге геолокациямен, push-хабарландырулармен, камера, дыбыс, акселерометр және басқа сенсорлар арқылы фото және бейне түсірумен жұмыс істеу қиындық тудырмайды;
  • смартфон функцияларымен терең жұмыс істеу мүмкіндігі. Алдыңғы абзацтағыдай, анимациялар, күрделі интерфейстерді құру және нейрондық желілердің тікелей құрылғыларда жұмыс істеуі сияқты нәрселер, мүмкін, жай емес, болжамды түрде жүзеге асырылады;
  • . Жергілікті қолданбалар әдетте «платформа» интерфейс элементтерімен жұмыс істейді: мәзірлер, навигация, пішіндер және барлық басқа дизайн элементтері операциялық жүйеден алынған, сондықтан пайдаланушыға таныс және түсінікті.

Бір ғана кемшілігі бар - әзірлеу мен қолдаудың жоғары құны, соның ішінде әрбір платформа үшін өзіңіздің кодыңызды жазуыңыз керек.

Мобильді қосымшалар нарығының өсуімен әзірлеушілер жай ғана қымбат емес, сонымен қатар өте қымбат болды және отандық даму әрбір бизнес иесінің қолынан келетін нәрсе емес. Бірақ мобильді қосымшаны дамытпау болашақта қымбатқа түсуі мүмкін. Live Typing сізге ақшаны үнемдеуге көмектеседі - идеяңызды сипаттаңыз және кездескіңіз келетін шамамен бюджетті көрсетіңіз.

Және туыстары емес

Кросс-платформалық қолданбалар бір уақытта бірнеше платформалар үшін ана тілінен басқа бір тілде жазылады. Мұндай код қалай жұмыс істей алады? әртүрлі құрылғылар? Мұнда да екі тәсіл бар.

Біріншісі, өтінімді жариялауға дайындау кезеңінде транспилер көмегімен белгілі бір платформаға арналған түпнұсқаға айналдырылады. Шын мәнінде, бір кросс-платформалық бағдарламалау тілі екіншісіне «аударылады».

Екіншісі, алынған кодқа белгілі бір қаптама қосылады, ол құрылғыда қазірдің өзінде жұмыс істеп, қоңырауларды жергілікті емес кодтан жергілікті жүйе функцияларына жылдам аударады.

Бұл кодтың көп бөлігін платформалар арасында тасымалдауға болады деп болжанады - мысалы, сатып алулар жасау, тауарларды себетке сақтау, такси маршрутын есептеу, мессенджерге хабарлама жазу логикасы өзгермейтіні анық. клиентте Android немесе iOS бар-жоғына байланысты. Бізге тек платформалар үшін UI және UX нақтылау керек, бірақ қазір, белгілі бір шектерде, тіпті оны біріктіруге болады - мысалы, гамбургер мәзірі Android және iOS жүйелерінде де белсенді қолданылады. Сонымен, қосымшаның қалаған платформаның рухы мен әрпіне сәйкес келуі үшін интерфейске түзетулер енгізу - бұл тілек, қажетті жылдамдық пен даму сапасы.

Артықшылықтары:

  • құны мен даму жылдамдығы. Кодты айтарлықтай аз жазу қажет болғандықтан, жұмыстың құны төмендейді;
  • кәсіпорынның ішкі ресурстарын пайдалану мүмкіндігі. Келесіде көрсететініміздей, кросс-платформалық қосымшаларды әзірлеу көбінесе бар бағдарламашылардың көмегімен жасалуы мүмкін.

Кемшіліктері:

  • жергілікті емес интерфейс немесе кем дегенде әр платформаның интерфейсімен бөлек жұмыс істеу қажеттілігі. Әрбір жүйенің өз элементін жобалау талаптары бар және кейде олар бір-бірін жоққа шығарады. Мұны жобалау кезінде ескеру қажет;
  • күрделі функцияларды жүзеге асырудағы мәселелер немесе мүмкін проблемаларәзірлеу құрылымдарының қателеріне байланысты қарапайым процедуралармен жұмыс істеу. Кросс-платформалық орта сұрауларды тек келесіге аударады жүйелік қоңырауларжәне онымен, жүйемен түсінілетін форматтағы интерфейстер, демек, бұл кезеңде түсіну қиындықтары да, құрылымның өзінде қателердің пайда болуы да мүмкін;
  • жұмыс жылдамдығы. Кросс-платформалық орта кодтың үстінен «қондырма» болғандықтан (әрдайым емес, бірақ белгілі бір жағдайларда), оның пайдаланушы әрекеттерін өңдеуде және экранда нәтижелерді көрсетуде өзіндік кідірістері мен үзілістері бар. Бұл әсіресе бірнеше жыл бұрын қазіргімен салыстырғанда қуаты аз смартфондарда байқалды, бірақ қазір мобильді құрылғылардың өнімділігінің өсуіне байланысты оны елемеуге болады.

Көріп отырғаныңыздай, бұл екі әдіс іс жүзінде айнадағы шағылысубір-бірімен - бұл жергілікті қолданбаларды әзірлеудің артықшылықтары, кросс-платформаның кемшіліктері және керісінше.

Кросс-платформалық мобильді әзірлеуге арналған танымал платформалар мен құралдар

Жоғарыда жазғанымыздай, екі тәсіл бар - кодты құрастыру сатысында түпнұсқаға айналдыру немесе жүйеге және жүйеден қоңырауларды аударатын арнайы қаптаманы қосу.

Кордова және PWA - орауыш идеологиясында дәл жұмыс істейтін екі құрал.


Кордова және HTML5

Көбінесе PhoneGap деп аталатын кросс-платформалық бағдарламалаудың ең танымал бағыттарының бірі. Шын мәнінде, қоңырауларды жүйеден қолданбаға және керісінше аударатын шағын платформа коды бар «айналатын» мобильді сайт жасалады.

Мұнда барлық кемшіліктер мен артықшылықтар еш жерде болмағандай анық көрсетілген. Сіз веб-әзірлеушілерді (негізгі технологиялар ретінде HTML, CSS және JavaScript) пайдалана аласыз және бір айдан немесе тіпті бірнеше аптадан кейін салыстырмалы түрде аз ақшаға қосымшаның бірінші нұсқасын жасай аласыз. Иә, ол жұмыста баяулайды, ол өте дәл геолокацияға ие болмауы мүмкін, бірақ ол барлық құрылғыларда жұмыс істейді және кем дегенде мобильді құрылғылардағы тұтынушылардың сұранысын тексеруге мүмкіндік береді.

Бұл тәсіл үшін көптеген шеңберлер жасалды, бірақ олардың барлығы бірдей нәрсені жасайды. Олардың арасындағы айырмашылық мынада: Cordova (PhoneGap) сіздің HTML5 жобасы үшін логика мен UI үшін шектеулер мен үлгілерді орнатпайды, ал фреймворктар имитациялайтын өздерінің дайын UI элементтерімен жұмыс істейді. мобильді платформалар, және оның даму логикасы. Бұл тәсілдің мысалы ретінде мыналарды көрсетуге болады: Ionic Framework – қаптама; Framework7, Mobile Angular UI, Sencha Touch, Kendo UI интерфейс құрылымдары болып табылады.

PWA

Google-дың сәнді технологиясы - бұл бірдей веб-қосымшалар, бірақ белгілі бір технологияларды қолданудың арқасында (ең алдымен, бұл қызмет көрсету қызметкерлері деп аталады - фонсценарийлер және Web App Manifest – веб-бағдарламаның түсінікті түрде сипаттамасы мобильді жүйепішін) олар PhoneGap қолданбасынан орамсыз жергілікті түрде жұмыс істей алады. Оларды орнатуға болады негізгі экранқолданбалар дүкенін айналып өту, желіден тыс жұмыс істеу, push хабарландыруларымен, жергілікті функциялармен жұмыс істеу.

Мәселе мынада, қазірдің өзінде барлық платформалар осы «белгілі бір технологияларды» қолдамайды. Ең алдымен, бұл App Store дүкенін айналып өтіп қосымшаларды тарату мүмкіндігін ұнатпайтын Apple компаниясына қатысты.

HTML5 шешімдерінің барлық кемшіліктерін ескере отырып, көптеген компаниялар кодты бір ана тілінде жазуға мүмкіндік беретін құралдарды жасады, содан кейін ол ана тіліне аударылады. Осылайша бір таспен екі құс бір уақытта өлтіріледі: кодтық база бір, ал қосымшалар жергілікті құсқа мүмкіндігінше жақын.


Хамарин

Microsoft платформасы. Кәсіпорынның дамуы үшін стандартты C# бағдарламалау тілі пайдаланылады, кросс-платформалық өңдеу ортасы болып табылады визуалды студия. Шығару iOS, Android және Windows үшін жергілікті қолданбалар болып табылады. Рас, салыстырмалы түрде үлкен.

React Native

Platform From - Қолданбалар JavaScript тілінде және CSS-тәрізді мәнерлерді пайдалана отырып жазылған. Интерфейс түпнұсқа болып табылады және код платформада қазірдің өзінде түсіндіріледі, бұл оған қажетті икемділік береді.

Салыстырмалы түрде жас платформа бола отырып, React Native әзірлеу құралдары мен құжаттамасының жетіспеушілігінен зардап шегетіні анық (бірақ апатты емес).

Флютер

Әрине, Google сияқты алпауыт Android және iOS қосымшаларын кросс-платформалық дамыту тақырыбын айналып өте алмады. Flutter, алайда, тек бета-нұсқасында болғанымен, React Native және Xamarin-тен басқа тәсілді айтады. Ол түрленбейді көзіплатформамен орындалатын, бірақ шын мәнінде смартфон экранында терезені сызып, барлық элементтерді өзі сызатын жергілікті платформаға. Қолданылатын тіл - Google JavaScript-тің жетілдірілген нұсқасы ретінде жасаған "меншік" Dart.

Мұның артықшылықтары (мысалы, сыртқы бірдей интерфейстер) және кемшіліктері бар (мысалы, интерфейсті қайта салу белгілі бір жад көлемін және процессор уақытын қажет етеді).

Платформа қарқынды дамып келеді және Google оған көп күш пен ақша жұмсауда. Бірақ Flutter-пен салыстырғанда, тіпті React Native өте қалыптасқан және әсерлі экожүйе сияқты көрінеді.

Не таңдау керек

Сіздің басыңыз қазірдің өзінде айналуы мүмкін, бірақ әлі де не таңдау керектігін түсіну жоқ. Сізге көмектесу үшін қарапайым сұрақтар тізімін ұсынайық:

  • қандай да бір құрылғыда жұмыс істеу керек пе? таңдау HTMLнегіз ретінде;
  • Сізде қаражат жеткілікті ме, сіз асықпайсыз ба және жоғары сапалы қолданбаны қалайсыз ба? Сізде тікелей жол бар отандық даму;
  • Сізде «кіріктірілген» веб-әзірлеуші ​​бар ма немесе мобильді қолданбаны тез әрі оңай қолданып көргіңіз келе ме? Мұнда сіз ұсына аласыз Cordova/HTML немесе PWA;
  • Сізде өзіңіздің CRM жүйеңіз және оны қолдайтын C# әзірлеушісі бар ма? алу Хамарин;
  • сіз «сынап көргіңіз келеді», бірақ бәрін әдемі және сәнді ету керек пе? Жан жағына қараңыз React Native немесе Flutter.

Басқа жақтан да кіруге болады. Қолданбада қажет функционалдылықты қараңыз және сол жерден өтіңіз:

  • қарапайым визит картасы қосымшасы? алыңыз React Native немесе HTML5және сіз ең төменгі бағаға екі платформа аласыз;
  • Сізде трафик жоғары веб-сайт бар ма және мобильді болуы туралы гипотезаны тексеру керек пе? HTML5;
  • қолжетімділігі бар күрделі қолданбалар қалаған функцияларқұрылғылар? Native Development, Xamarin, React Native.

Кросс-платформаны дамыту панацея емес

Таңдау кезінде сіз тапсырмалардан өтуіңіз керек және бар ресурстар. Кросс-платформаны дамыту - жақсы және түсінікті бағыт, бірақ оның артықшылықтары мен кемшіліктері бар, сіз жобаны іске қоспас бұрын да есте ұстауыңыз керек. Жасалған кросс-платформа қолданбасы жасалмаған жергілікті қолданбадан жақсырақ. Сіз оны тез және арзан түрде әзірлей аласыз, оны дүкенге жүктей аласыз және пайдаланушылардың сұранысын тексере аласыз - біреу сізден қосымшаны іздеп жатыр ма, ол орнатады ма, ол қандай функцияларды пайдаланады. Осындай эксперимент нәтижелеріне сүйене отырып, сіздің компанияңыздағы мобильді бағыттың тағдырын және оған инвестиция салуды шешуге болады.

Сізде әлі де кросс-платформалық қолданбаларға қатысты сұрақтарыңыз бар ма? Қаладағы спорт нысандарының біріне жазылуды жылдам алу үшін қосымшаны қалай жасағанымыз туралы оқыңыз және барлық қызмет түрлерін төлеуге арналған қосымшаны қолданып көріңіз - коммуналдық қызметтерден бастап интернет-дүкендердегі тапсырыстарға дейін. Жақсырақ, шамамен бюджетті көрсете отырып, тегін кеңес алуға жазылыңыз және қысқаша сипаттамаидеялар немесе телефон арқылы менеджер Катяға хабарласыңыз

Бұл жерде бізде әртүрлі платформалар үшін әмбебап қосымшаларды жасауға мүмкіндік беретін кросс-платформалық әзірлемелер бар сияқты. Мен өтінімді тезірек жаздым, оны бірден барлық жерде шығардым - пайда! Және ешқандай отандық даму қажет емес. Әлде әлі де қажет пе? Біз сарапшыларымыздан мобильді қосымшаларды әзірлеудің екі тәсілінің де нюанстары туралы сұрадық.

«Мобильді әзірлеуші» - бұл кең термин. Мобильді операциялық жүйенің бөліктерін жүзеге асыратын әзірлеуші ​​де мобильді әзірлеуші ​​болып табылады. Ал мақсат дәл осындай әзірлеуші ​​болу болса, онда сіз жалпы C++ тілін, мобильді операциялық жүйені және мобильді құрылғылардың аппараттық құралдарын үйренуден бастауыңыз керек.

Егер сіз арнайы мобильді қосымшаларды жүзеге асыратын әзірлеуші ​​туралы айтсаңыз, онда сіз жергілікті әзірлеуден бастауыңыз керек.

Неге бұлай? Native әзірлеу нақты операциялық жүйелердің (және оларға арналған қосымшалардың) және мобильді жабдықтың мүмкіндіктерін жақсырақ және тереңірек зерттеуге мүмкіндік береді.

Пайдаланушының көзқарасы бойынша, жергілікті даму сөзсіз жеңеді. Жергілікті қолданбалар жылдамырақ жұмыс істейді, олардың интерфейсі белгілі бір мобильді операциялық жүйенің пайдаланушыларына неғұрлым сезімтал және таныс, олар құрылғылардың аппараттық мүмкіндіктерін жақсырақ пайдаланады, офлайн режимінде жақсы жұмыс істейді және «қате» аз.

Кросс-платформаны әзірлеудің бастапқы идеясы әзірлеушінің еңбек шығындарын азайту болып табылады. Қысқаша айтқанда, оны келесідей көрсетуге болады: «Мен мұны бір рет жасадым, ол кез келген нәрседе жұмыс істейді». Идея жақсы және дұрыс (әзірлеушінің көзқарасы бойынша), бірақ сапаға қатысты сұрақтар бар. Кез келген әмбебаптық басынан бастап ымырамен келеді және мобильді даму да ерекшелік емес.

Белгілі бір тапсырма үшін әзірлеу түрін таңдаған кезде, әзірлеуші ​​бұл ымыраға келуге болатын-болмайтынын бағалауы керек. Бірқатар міндеттер бар, онда кросс-платформалық әзірлеуді қолдану әбден ақталады, мысалы, сынақ жобаларында, сайттардың мобильді нұсқаларында, Unity 3D сияқты фреймворктерді пайдаланатын ойындарда.

Сонымен қатар, мобильді бизнес мәселелерін шешетін жобалар үшін (жоғары жүктеме, ұзақ мерзімді дамуға бағытталған офлайн режимін қолдау қажеттілігі) жергілікті даму жалғыз оңтайлы (және кейбір міндеттер үшін мүмкін болатын жалғыз) болып саналады. ) опциясы.

Сонымен қатар, жергілікті дамудың негізгі кемшіліктері әзірлеу уақыты (ол көп уақытты қажет етеді) және әртүрлі ресурстарға (әртүрлі ана тіліндегі бағдарламалаушыларға) қажеттілік болып табылады. Бұл кемшіліктерді азайтудың жолдары бар - мысалы, әзірлеу үшін мобильді қосымшалар платформасының (MEAP класы) қандай да бір түрін пайдалану, бұл жергілікті қосымшаларды жасауға мүмкіндік береді.

Жаңарту Жаңарту

, «ID – Management Technologies» IT компаниясының технологиялық даму жөніндегі директоры

Кез келген кросс-платформалық кітапхана немесе құрылым жергілікті дамуды тікелей жүзеге асыратын бірдей жергілікті механизмдерге негізделген. Бұл жай ғана кросс-платформалық шешімдер жағдайында жұмыс процестері түпкілікті шешімнің интерфейсін белгілі бір ортақ бөлгішке жеткізу тұрғысынан «бұрыштарды тегістейтін» етіп салынған.

Әдетте, әмбебаптық әрқашан жұмыс істейтін мобильді шешімді жасау міндетіне жауап бола бермейді: әзірлеуші ​​​​ соғұрлым жақсы жұмыс істейді, соғұрлым ол құрылғының механизмдерін тереңірек түсінеді. әртүрлі процестерішінен, олар айтқандай, «капюшонның астында».

Сондай-ақ, толық жұмыс істейтін модель бір мезгілде әзірлеу болады негізгі элементтеріекі тәсілге сәйкес, мұндай оқу тапсырмасында мүмкін емес ештеңе жоқ бастапқы кезеңжоқ. Мысалы, мұндай сценарий әбден мүмкін және перспективалы болуы мүмкін: кросс-платформалық парадигмада жұмыс істей бастаңыз және параллельді түрде, өз бетіңізше немесе әріптестердің көмегімен ағымдағы шешімдерді әзірлеу үшін қандай табиғи мүмкіндіктер бар екенін және оларды қалай жасауға болатынын зерттеңіз. тәжірибеде қолдану керек.

Бұл жағдайда мобильді даму процесінің принципті түрде қалай жұмыс істейтінін жан-жақты түсінуге қол жеткізу оңайырақ, ол түпкілікті түрде аталады. Бұл сондай-ақ пайдалы, себебі кез келген, тіпті ең жетілдірілген, әмбебап платформа өзінің мүмкіндіктері бойынша жергілікті платформадан артта қалады: аппараттық және мобильді ОЖ өндірушілері жиі бірге жұмыс істейді және соңғы шешімдердің мүмкіндіктерін - мобильді әзірлеу платформаларының мүмкіндіктерін, әсіресе кросс-платформалық шешімдерді үнемі арттырады. , сөзсіз артта қалады.

Мобильді сегменттегі жаңа өнімдер нарықта үнемі пайда болады, олардың кейбіреулері өз уақытынан әлдеқайда озып кетті - Samsung-ты және оның жиналмалы экраны бар құрылғыны әзірлеуін алайық: түбегейлі басқаша фронтальды болғандықтан, бұл анық. , бар әзірлеу платформалары мұндай нәрселерге дайын емес.

Бұл жерде жергілікті платформалар туралы терең білім көмектеседі: мобильді даму туралы терең, жүйелі білімі бар әзірлеуші, яғни жергілікті платформалар ғана аппараттық құралдар мен ОЖ артта қалудың орнын толтыра алады. Тек осындай маман қазіргі уақытта қол жетімді емес әзірлеу платформаларына негізделген соңғы мобильді құрылғыларға арналған шешімінің функционалдығын арттыра алады.

Кросс-платформалық әзірлеу прототиптеу, идеяны жылдам сынау және т.б. үшін тамаша. Шынайы іргелі өнімдерді жасауға келгенде, әзірлеуші ​​сөзсіз процестің негізгі элементтерін, яғни отандық дамуды терең зерттеу қажеттілігіне келеді.

Жаңарту Жаңарту

, GeekUniversity, GeekBrains білім порталы iOS әзірлеу факультетінің деканы

Қысқа жауап: егер бағдарламалау тәжірибесі болмаса, онда, әрине, жергілікті дамуды таңдау керек. Кросс-платформаны дамыту байланысты салалардан мобильді дамуға көшетін мамандар үшін жақсы. Мысалы, егер сіз JavaScript-ті жақсы білетін алдыңғы қатарлы әзірлеуші ​​болсаңыз, React Native құрылымын (React шеңберіне негізделген) пайдалана отырып, мобильді әзірлеуді тез және ауыртпалықсыз игеруге тырысуға болады. .NET әзірлеушісіне ұқсас, Xamarin құрылымын меңгеру оңайырақ болады.

Кросс-платформалық әзірлеу тұтынушы үшін де тиімді - ортақ үлгі бойынша бірден екі платформаға қосымша әзірлейтін бір әзірлеушілер тобын табу оңайырақ.

Артықшылықтары анық, бірақ мультиплатформаны дамытудың қандай кемшіліктері бар?! Мобильді қосымшаның функционалдығы неғұрлым күрделі және нәзік болса, оны кросс-платформалық құралдармен жүзеге асыру қиынырақ, тіпті мүмкін емес деп саналады - бұл көбінесе әмбебап құралдардың барлық артықшылықтарынан асып түседі. Менің тәжірибемде бірнеше ірі компаниялар бар, олар қолдану көлемінің өсуімен отандық дамудың пайдасына кросс-платформадан бас тартуға мәжбүр болды. Осылайша, шағын жобалар үшін және, мүмкін, штаттан тыс тапсырмалар үшін бұл жеткілікті ортақ шешімдер, және үшін үлкен жобалартуған жері жақсырақ.

Екі аймаққа сұраныс айтарлықтай жоғары, бірақ жергілікті даму үшін біршама жоғары: Ресейде hh.ru сайтында Swift сұранысы бойынша - 369 бос, Котлин - 397, React Native - 111, Flutter - 13 Xamarin - 18. Бірақ демалыс. Сендірді, жақсы маман Ешбір салада жұмыс болмайды.

Жаңарту Жаңарту

Алдымен, кез келген мобильді қосымшаның бірнеше қабаттан тұратынын атап өткен жөн:

  • UI - пайдаланушы көретін нәрсе;
  • бизнес логикасы – қосымша не үшін жазылған;
  • платформаның басқа құрамдас бөліктері - желімен, дерекқорлармен және бизнес логикасы пайдаланатын басқа жүйелік құрамдастармен жұмыс істеу.

Арнайы қолданбаға байланысты бұл қабаттардағы компоненттердің өлшемі айтарлықтай өзгеруі мүмкін. Мысалы, веб-сайттың жаңалықтарды оқуға арналған қолданбасы VPN клиентінен мүлдем өзгеше болады.

Әзірлеудің өзін үш түрге бөлуге болады: жергілікті, толық кросс-платформалық және гибридті.

отандық даму

Жергілікті дамуда барлық үш қабат бірдей құралдар жиынтығы арқылы жазылады. Сондықтан олар бір-бірімен ешқандай қосымша күрделіліксіз әрекеттесе алады.

Отандық дамудың артықшылықтары:

Гибридті даму

Дамудың бұл түрі алдыңғы екі тәсілді де біріктіреді. Бизнес-логикалық деңгей «портативті» құрамдас ретінде құрастырылған, ал UI және платформа интеграциясы стандартты құралдар арқылы жасалған. Жалпы логиканы жазу үшін бірнеше тілдер бар: C/C++ (жетілген және күшті), KotlinNative (өте белсенді дамыған) және JavaScript (ең аз таралған).

Артықшылықтары:

  • бұл үшін ең қолайлы компоненттер жергілікті болып қалады;
  • жалпы логика бір рет жасалады.

Кемшіліктері:

  • егер ортақ құрамдас мобильді топпен жасалатын болса, онда басқа тілде тәжірибе алу қажет;
  • кросс-платформалық құрамдастарды біріктіру үшін үстеме шығындар бар.

Дамудың қай түрінен бастаған дұрыс?

Бұл сұраққа жауап беру үшін сіз қандай жобаларды жасағыңыз келетінін түсінуіңіз керек. Шағын жобалар тек кросс-платформа болуы мүмкін және бұл толығымен ақталған болады. Мұнда мен сізге Флуттерді мұқият қарауға кеңес берер едім.

Бірақ бүгін мен отандық дамудан бастар едім. Біріншіден, бүгінгі таңда көптеген жобалар жергілікті түрде жасалады. Бұл сіздің жобаларды/компанияларды өзгерту мүмкіндігінің көбірек болатынын білдіреді. Екіншіден, уақыт өте гибридті кросс-платформалық дамуға көшуге болады. Бұл сізге техникалық мәселелерде өсуге мүмкіндік береді.

Жаңарту Жаңарту

Менің ойымша, ең жақсысы жергілікті тілден бастаған дұрыс, содан кейін, егер сіз шынымен қаласаңыз, бір немесе бірнеше кросс-платформа құралдарын меңгеріңіз. Ерекшелік ойындардың дамуы болуы мүмкін, өйткені олар негізінен Unity-де жазылған және бұл кросс-платформалық қозғалтқыш.

Егер біз отандық дамудың артықшылықтары туралы айтатын болсақ, онда бағдарламашы үшін бұл аз кедергілер мен білдіреді үлкен мөлшержұмыс үшін әртүрлі құралдар. Сондай-ақ, ол қосымшаны жасау процесінде туындайтын күрделі мәселелерді шешу үшін көбірек ақпарат көздеріне ие болады - Интернетте кросс-платформалық әзірлеуге қарағанда, жергілікті даму үшін көптеген кеңестер мен трюктар бар екені ешкімге құпия емес.

Түпкі пайдаланушы үшін жергілікті әзірлеу қолданбаның таныс, болжамды интерфейстер мен мінез-құлық үлгілері болатынын білдіреді - егер қолданба барлық нұсқаулықтарға сәйкес жазылған болса.

Кросс-платформалық қолданба әрқашан екі платформаның нұсқаулықтарына толық сәйкес келе бермейді және бұл әзірлеуші ​​мен пайдаланушы үшін қосымша қиындықтар тудыруы мүмкін. Ең қарапайым мысал- «Артқа» түймесінің жағдайы: Android жүйесінде ол барлық дерлік экрандарда бар, ал iOS жүйесінде ол жоқ. Егер сіз осы түймесіз платформалар арасындағы қолданбаны жасасаңыз, кейбір Android пайдаланушылары ыңғайсыздықты сезінуі мүмкін.

Сондай-ақ әзірлеуге кететін шығындардағы айырмашылықтарды атап өткен жөн. Егер жоба қарапайым болса, онда кросс-платформаны әзірлеуді таңдау бюджетті үнемдеуге мүмкіндік береді, өйткені іс жүзінде сіз әртүрлі платформалар үшін жеке өнімдерді емес, барлығына арналған өнімдерді әзірлейсіз. Бірақ егер жоба өссе, таразы басқа жаққа қарай еңкейе бастайды, ал отандық даму тиімдірек болуы мүмкін.

Қолданбалардың жылдамдығына келетін болсақ, кросс-платформа өнімдері баяу. Мысалы, веб-технологияларға негізделгендердің браузері қабат ретінде болады, бұл қолданбаны айтарлықтай баяулатады.

Жаңарту Жаңарту

Кросс-платформаны немесе жергілікті тәсілді таңдау шын мәнінде екі факторға байланысты: сіз өзіңіз жасағыңыз келетін мобильді дамудың сипаты немесе сіз жұмыс істеуге мүдделі жұмыс берушілердің сұрауы. Мысалы, егер біз Upwork (жобалар мен тапсырмалар үшін қашықтағы мамандарды табуға арналған платформа) қарасақ, Xamarin және React Native бағытында ұсыныстардың айқын басымдылығын көре аламыз. Мұндағы артықшылықтар анық: ол арзан, жылдам және барлық платформаларда жобаларды бірден жүзеге асыруға мүмкіндік береді. Алайда, егер біз үйде жұмыс істейтін ірі IT-компанияларды қарастыратын болсақ, онда бұл түр көп уақытты қажет ететініне және қымбатырақ болғанына қарамастан, отандық дамуға айтарлықтай назар аударылады.

Біздің компанияда біз отандық дамуға басымдық береміз және таңдаймыз, өйткені ол дизайнерлер мен әзірлеушілерге тегіс, интуитивті UX/UI құруға мүмкіндік береді. Сонымен қатар, жергілікті даму жүйе функцияларын икемді басқаруға мүмкіндік береді.

Жаңарту Жаңарту

Егер сіз мобильді әзірлеуші ​​болғыңыз келсе, онда жауап анық: сіз кез келген жергілікті әзірлеу ортасын таңдап, iOS үшін Objective-C/Swift немесе Android үшін Java/Kotlin-ге сүйенуіңіз керек. Бұл жағдайда жүйенің барлық мүмкіндіктері сіздің қызметіңізде, сіз әрбір нюансты дерлік басқара аласыз.

Егер сіз жай ғана телефондарда жұмыс істейтін бағдарламаны жазғыңыз келсе, онда сіз көп ойлана алмайсыз және сіздің жаныңыздың не екенін немесе сізде қандай тәжірибе бар екенін таңдай алмайсыз: C ++, React Native, Xamarin немесе бес жүз мың. Кросс-платформаны дамытуға арналған JS фреймворктері. Немесе тіпті өзіңіздің [жауапты] веб-сайттарыңызды жасауды жалғастырыңыз.

Шынымды айтсам, мен Android және iOS сияқты әртүрлі (және әртүрлі) платформаларда кросс-платформаны дамыту идеясына күмәнмен қараймын. Жеткізушілердің ешқайсысы бір уақытта екі орындыққа отыруға тырысатын «қате» әзірлеушілерді ұнатпайды. Барлығы бағдарламашыларды құралдар мен орталарға байланыстыруға тырысады және жақын болашақта жақындасу үрдісі жоқ. Не айта аламын, Apple бұл жарыста Curl-дан кейінгі барлық кітапханалардың ішіндегі ең кросс-платформасы OpenGL-ден бас тартты, бірақ қазір олардың өздерінің металлы бар, ол бірдей нәрсені жасайды, тек жақсырақ және басқа тілде.

Екінші жағынан, көбінесе мобильді әзірлеу кейбіреулер үшін бірдей көрінетін екі қосымшаны жасау болып табылады желі қызметі. Тұтынушылар әрқашан бір-бірінен мүлдем ажыратылмайтын екі өнім үшін төлеуге дайын емес, сондықтан кросс-платформалық әзірлеу технологияларына сұраныс бар және, әрине, өте жоғары. Бағдарламашылар да ақша үнемдеуге қарсы емес, әсіресе олар мобильді қосымшаны сатқысы келсе, Swift/Kotlin-ді үйренгісі келмейді, бірақ JS/C # олардың қолында.

Әрине, кросс-платформалық даму өзімен бірге көптеген айқын емес нюанстарды әкеледі. Барлық әмбебап шешімдер құмда құлыптар салуға мәжбүр: күрделі және нәзік технологиялық шешімдерге (мысалы, Xamarin) немесе React Native сияқты мобильді JavaScript қозғалтқыштарына сүйенеді. Сонымен қатар, платформа жеткізушілері шешімдердің ешқайсысын қолдауды тіпті ойламайды және жергілікті SDK әрбір жаңартуы кез келген кросс-платформалық құрылым үшін үлкен бас ауруы болып табылады. Камераға, салпыншаққа немесе тіпті әркім әртүрлі дәрежеде табысқа жетуге тырысатын қарапайым фотогалереяға қол жеткізу сияқты жүйеге тән мүмкіндіктерді айтпағанның өзінде. Әмбебап жолды таңдаған әзірлеушілер өз құрылымының кепілінде болады және көбінесе айтарлықтай үнемдеуді уәде еткен даму рейкке қарсы күреске айналады.

Сондай-ақ кросс-платформалық шешімдерде жиі пайдаланушы тәжірибесі (UX) терминімен белгіленетін нәрсені құрбан ету әдеттегідей: көптеген фреймворктар екі жүйе үшін де мүмкіндігінше жалпы басқару элементтерін қолдануға тырысады және әрқашан дерлік бұл шешім барлығына бірдей ыңғайсыз. . Немесе баяу. Немесе стильден тыс. Немесе батареяның заряды таусылады. Тізімді өзіңіз жалғастырыңыз.

Кросс-платформалық қосымшалар бір-бірінен ерекшеленеді, олардың ядролары төмен деңгейде жазылған, барлық операциялық жүйелер үшін ең кең таралған: C/C++ сияқты тілдерде. Бұл жағдайда бизнес логикасына қызмет ететін кодты пайдалануды жалпылау әдеттегідей және интерфейс әр платформа үшін бөлек жазылады. Ең дұрысы, әрбір платформаға тән пайдаланушы тәжірибесін сақтай отырып, қолданбаның маңызды бөлігінің қайталануын болдырмауға болады. Дегенмен, в шын өмірбәрі қиынырақ. Мысалы, Dropbox бірнеше жыл қатарынан төмен деңгейлі ядромен өмір сүруге тырысты, бірақ ақырында көптеген себептерге байланысты бас тартты және қазір жергілікті платформа қосымшаларына риза. Қызығушылық танытқандарды осы тақырыптағы қызықты мақаласына ұсынамын.

Менің ойымша, кросс-платформалық құрылымдарда үнемдеу әрқашан елес. Мүмкін, кейбір тривиальды жобаларда, онда қолданба негізгі сайттың нұсқасы ғана, мобильді құрылғы үшін өте оңтайландырылған, жалпыланған тәсіл жұмыс істейді. Басқа жағдайларда Dropbox тағдырын қайталау қаупі бар. Менің кеңесім: егер сіз мобильді әзірлеуші ​​болғыңыз келсе, платформаны үйренуге ақша салыңыз. Сіз кросс-платформалық жобаға қатысуыңыз керек болса да, олар әрқашан ақтайды.

Жаңарту Жаңарту

, Accenture Tver технологиялық орталығының аға бағдарламалық жасақтама әзірлеушісі

Мобильді қосымшалар нарығы белсенді дамып келеді, соған сәйкес оларды әзірлеуге арналған технологиялар кешені де өсуде. Сіз қолдануға болатын бірнеше құралдар бар.

Отандық даму үшін Android платформасы Java немесе JVM - Kotlin үстіндегі қаптама бар. iOS үшін сіз Objective-C немесе оның үстіне орауыш - Swift пайдалана аласыз. Мұның бәрі Smalltalk және C тілдерінен көп мұра алған OOP тілдері.

Кросс-платформаны дамыту үшін қазір Google ұсынған Flutter пайдаланылады, ол үшін сізге Dart туралы білу қажет. Немесе Facebook-тен React Native.

Жаңадан келген мобильді әзірлеуші ​​үшін оның бұрынғы тәжірибесі мен тілдерді білуі шешуші фактор болуы мүмкін. Егер Java оның құралдар жинағының негізі болса, ол сол Java немесе Kotlin көмегімен Android платформасы арқылы мобильді даму әлемін әлдеқайда жылдам меңгере алады.

Сонымен қатар iOS әзірлеуіне арналған Objective-C Smalltalk-тен, сондай-ақ Java-дан көп нәрсе алды, сондықтан қаласаңыз, iOS пайдасына таңдау жасай аласыз. Есіңізде болсын, Android жүйесін әзірлеу Windows немесе Linux жүйесінде болуы мүмкін, бірақ iOS үшін MacOS X қажет. Бірақ React-ті білетін JavaScript әзірлеушісі үшін, әрине, ең жылдам трек React Native болады. Dart әзірлеушілері сияқты, таңдау Flutter пайдасына болады.

Жаңадан бастаушы әзірлеуші ​​​​ұялы дамудың қандай екенін, таңдалған жолдың оң және теріс жақтары туралы түсінік алған соң, ол кез келген тәсілмен жұмыс істеу керек пе немесе кросс-платформалық шешімдерді қолдана отырып, мәселелерді шешуді өзі шешеді.

Бұл тәсілдің артықшылықтары бар: кросс-платформалық әдіс азырақ ресурстарды пайдалана отырып, жобаны өнімді ортаға сәл жылдамырақ шығаруға мүмкіндік береді. Сонымен қатар, оны сақтау оңайырақ. Бірақ оның әзірлеуші ​​үшін де, пайдаланушы үшін де айқын кемшіліктері бар. Мысалы, әзірлеушіге отандық технологияларды білу қажет емес, бірақ платформа нұсқауларын ескеру қажет, өйткені iOS нұсқауларына сәйкес жазылған қолданба қиындықтар туғызады. Android пайдаланушыларыжәне керісінше.

Кросс-платформалық қолданбалар жергілікті қолданбалар сияқты құрылғы интеграциясының бірдей деңгейіне жете алмайды. Яғни, егер қолданба құрылғымен, мысалы, камерамен, күнтізбемен немесе құрылғының есептеу қуатын пайдалану туралы сөйлесетін болса, онда бұл жергілікті тәсілді пайдалану арқылы оңайырақ болады және ол тезірек және көбірек болады. өнімді.

Кросс-платформалық қосымшаны әзірлеу кезінде мамандар шектеулер енгізетін рамканың мүмкіндіктерін ескереді. Сондай-ақ отандық технологиялар бойынша өнімді әзірлеу үшін әр платформаға мамандар қажет екенін ескерген жөн.

Егер сіз фрилансер ретінде жұмыс істесеңіз немесе ең аз қаражатпен құрылғылардың максималды санын қамтуды мақсат етсеңіз, мобильді шешімдерге назар аударған немесе алдыңғы қатарлы әзірлеуші ​​ретінде жұмыс істеген жағдайда кросс-платформаны дамытуға назар аударыңыз.

Мобильді жергілікті және кросс-платформалық дамудың негізгі артықшылықтары мен кемшіліктері қандай? Native дамудың өзі қымбат, өйткені компания екі командаға - iOS және Android-ке инвестиция салуы керек. Үшін қарапайым қолданбалар, Flutter / React Native бағдарламасында даму жылдамдығы жоғарырақ.

Бірақ плюс инфрақұрылым қазірдің өзінде қалыптасқан және түсінікті. Сіз кез келген құрылғы ресурстарына қол жеткізе аласыз және оның астында дами аласыз ақылды сағаттар, автомобильдер және т.б.

Кросс-платформаны дамыту да керемет нәрсе. Бірақ ол Ресейдегі IT-еңбек нарығында әлі жоғары дамыған жоқ. Саналы мамандар – саусақпен сана. Рамалық инфрақұрылым жас, бірақ жағдай біртіндеп жақсы жаққа өзгеруде. Бұл даму бірден бірнеше құрылғыларға жазуға мүмкіндік береді. Мысалы, Flutter бағдарламасында жазсаңыз да, ол жергілікті кодпен оңай біріктіріледі.

Жаңарту Жаңарту

Кросс-платформаны әзірлеу жылдам нәтижеге және айтарлықтай бюджетті үнемдеуге бағытталған - біз барлық құрылғылар үшін бір код жазамыз. Оның қолдану аясы - бұл өнімнің ыңғайлылығы соншалықты маңызды емес және функционалдығы басым рөл атқаратын ішкі қолдануға арналған шешім немесе тұтынушыға принципті көрсету қажет болғанда немесе жылдам «пилоттық» жобаны құру. қолдану идеясы. Сонымен қатар, егер сіздің прототипіңіз қандай операциялық жүйемен қаралатыны туралы нақты түсінік болмаса, кросс-платформаны әзірлеу - шығу жолы. Дегенмен, барлық құрылғылардың архитектурасы әртүрлі екенін алдын ала түсінуіңіз керек, сондықтан физикалық тұрғыдан жоғары сапалы қосымшаны тек бір кросс-платформалық кодта орындау мүмкін емес. Күрделі сценарийлерде жергілікті кодты жазу қажет болады. Сонымен қатар, оның ерекшелігіне байланысты кросс-платформаны әзірлеу қосымшаның мүмкіндігінше тиімді болуына мүмкіндік бермейтін шығындарды тудырады. Бұл түсінікті, бұл жағдайда платформалардың әрқайсысы үшін аралық кросс-платформалық кодты аудару керек, бұл қосымшаны қосымша «ауыр» етеді. функция кодыол өзінің орындау ортасын қамтиды.

Басқа пікір айтыңыз

Барлығы түсінікті, қорытындыларды көрсетіңіз

Сонымен, қандай даму әдісін қолдану керек?

Барлығы тапсырмаға байланысты. Бірнеше платформалар үшін қолданба прототипін жазу қажет болса немесе мобильді нұсқасысайтында сіз кросс-платформалық фреймворктерге қарай аласыз. Олардың көмегімен сіз жергілікті әзірлеуге қарағанда қосымшаны жылдам жазасыз, әсіресе React Native сияқты әдеттегі құралға ұқсас құрылымда жұмыс жасасаңыз.

Екінші жағынан, кросс-платформалық қосымшалардың әмбебаптығы қандай да бір жолмен өтелуі керек. Бір жерде «жергілікті емес» интерфейс элементі пайда болады, бір жерде жүйемен өзара әрекеттесу нашарлайды, бір жерде жұмыс жылдамдығы төмендейді және т.б. Жергілікті даму көбірек ресурстарды қажет ететініне қарамастан, көптеген компаниялар оны қалайды, өйткені шығысында анағұрлым тұрақты және отандық өнім.

Осыған байланысты, егер сіз мобильді дамуды енді бастап жатсаңыз, алдымен жергілікті дамуды жасаған дұрыс. Ол үшін сіз Интернеттен қосымша ақпаратты таба аласыз, сіз платформаның мүмкіндіктерін тереңірек түсінесіз және кросс-платформалық дамудың жеке нюанстары сізді алаңдатпайды. Сонымен қатар, егер сіз болашақта кросс-платформаны әзірлеуді шешсеңіз, алынған білім сізге кедергі жасамайды.

Сізге сұрағыңызды мамандарға қоюға болатынын еске саламыз, егер ол қызықты болып шықса, біз оған жауап жинаймыз. Қойылған сұрақтарды шығарылымдар тізімінен табуға болады. Егер сіз сарапшылар қатарына қосылғыңыз келсе және өз компанияңыздан немесе жеке өзіңізден жауап жібергіңіз келсе, онда -ға жазыңыз, біз сізге мұны қалай жасау керектігін айтамыз.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!