uy - Internet
Mobil platformalar o'rtasidagi ilovalarni qanday yozish kerak. Kross-platformali mobil ilovalarni ishlab chiqish Kross-platformalarni ishlab chiqish xususiyatlari

Ko'rinishidan, bizda turli platformalar uchun universal ilovalar yaratish imkonini beruvchi o'zaro platformalar ishlab chiqildi. Men arizani tezroq yozdim, darhol hamma joyda chiqardim - foyda! Va hech qanday mahalliy rivojlanish kerak emas. Yoki u hali ham kerakmi? Har ikkala rivojlanish yondashuvining nuanslari haqida mobil ilovalar mutaxassislarimizdan so‘radik.

"Mobil dasturchi" - bu keng tushuncha. Mobil operatsion tizim qismlarini amalga oshiruvchi dasturchi ham mobil dasturchi hisoblanadi. Va agar maqsad aynan shunday dasturchi bo'lish bo'lsa, unda siz C++ tilini, mobil operatsion tizimni va mobil qurilmalar apparatini o'rganishdan boshlashingiz kerak.

Agar siz maxsus mobil ilovalarni amalga oshiradigan ishlab chiquvchini nazarda tutsangiz, unda siz mahalliy rivojlanishdan boshlashingiz kerak.

Nega bunday? Native rivojlanish muayyan operatsion tizimlar (va ular uchun ilovalar) va mobil qurilmalarning imkoniyatlarini yaxshiroq va chuqurroq o'rganish imkonini beradi.

Foydalanuvchi nuqtai nazaridan, mahalliy rivojlanish, albatta, g'alaba qozonadi. Mahalliy ilovalar tezroq ishlaydi, ularning interfeysi ma'lum mobil operatsion tizim foydalanuvchilariga ko'proq sezgir va tanish bo'ladi, ular qurilmaning apparat imkoniyatlaridan yaxshiroq foydalanadi, oflayn rejimda yaxshiroq ishlaydi va kamroq xato qiladi.

O'zaro platformalarni ishlab chiqishning asl g'oyasi ishlab chiquvchilarning mehnat xarajatlarini kamaytirishdir. Buni qisqacha quyidagicha ifodalash mumkin: "Bir marta bajarilgan, har qanday narsa ustida ishlaydi." G'oya yaxshi va to'g'ri (ishlab chiquvchi nuqtai nazaridan), lekin sifat bilan bog'liq muammolar mavjud. Har qanday ko'p qirralilik o'z-o'zidan murosa bilan birga keladi va mobil rivojlanish sohasi bundan mustasno emas.

Muayyan vazifa uchun rivojlanish turini tanlayotganda, ishlab chiquvchi ushbu murosaga qanchalik maqbul ekanligini baholashi kerak. Bir qator vazifalar mavjud bo'lib, ularda kross-platformalarni ishlab chiqishdan foydalanish juda oqlanadi, masalan, test loyihalarida, veb-saytlarning mobil versiyalarida, Unity 3D kabi ramkalardan foydalanadigan o'yinlarda.

Shu bilan birga, mobil biznes muammolarini hal qiladigan loyihalar uchun (yuqori yuk bilan, uzoq muddatli rivojlanishga qaratilgan oflayn rejimni qo'llab-quvvatlash zarurati) mahalliy rivojlanish yagona optimal (va ba'zi vazifalar uchun yagona mumkin bo'lgan) bo'lib tuyuladi. ) variant.

Shu bilan birga, mahalliy rivojlanishning asosiy kamchiliklari rivojlanish vaqti (ko'proq talab qilinadi) va turli xil resurslarga bo'lgan ehtiyoj (turli mahalliy dasturlash tillarida ishlab chiquvchilar). Ushbu kamchiliklarni yumshatish yo'llari mavjud - masalan, mahalliy ilovalarni yaratishga imkon beradigan mobil ilovalar platformasining (MEAP klassi) ishlab chiqish uchun foydalaning.

Pastga tushirish

, "ID - Management Technologies" IT kompaniyasining texnologik rivojlanish bo'yicha direktori

Har qanday o'zaro platformali kutubxona yoki ramka mahalliy rivojlanish bevosita amalga oshiriladigan bir xil mahalliy mexanizmlarga asoslanadi. Shunchaki, o'zaro platformali echimlar bo'lsa, ish jarayonlari yakuniy yechim interfeysini ma'lum bir umumiy maxrajga olib kelish nuqtai nazaridan "burchaklarni tekislash" uchun qurilgan.

Qoida tariqasida, universallik har doim ham ishlaydigan mobil echimni yaratish vazifasiga javob bermaydi: ishlab chiquvchi, ular aytganidek, turli jarayonlarning mexanizmlarini ichkaridan yaxshiroq tushunsa, yaxshiroq ishlaydi.

Bundan tashqari, to'liq ishlaydigan model ikkita yondashuvning asosiy elementlarini bir vaqtning o'zida o'zlashtirish bo'ladi, dastlabki bosqichda bunday o'quv vazifasida imkonsiz narsa yo'q. Masalan, bunday stsenariy juda mumkin va istiqbolli bo'lishi mumkin: o'zaro faoliyat platformalar paradigmasida ishlashni boshlang va shu bilan birga, mustaqil ravishda yoki hamkasblar yordamida hozirgi echimlarni ishlab chiqish uchun qanday mahalliy imkoniyatlar mavjudligini va qanday qilib o'rganishni o'rganing. ular amaliyotda qo'llanilishi mumkin.

Bunday holda, mobil rivojlanish jarayoni printsipial jihatdan qanday ishlashini to'liq tushunishga erishish osonroq bo'ladi, bu end-to-end deb ataladi. Bu ham foydali, chunki har qanday, hatto eng ilg'or, universal platforma ham o'z imkoniyatlari bo'yicha mahalliy platformadan ortda qoladi: apparat va mobil OT ishlab chiqaruvchilari ko'pincha birgalikda ishlaydilar va yakuniy echimlar imkoniyatlarini doimiy ravishda oshiradilar - mobil rivojlanish platformalarining imkoniyatlari, ayniqsa o'zaro faoliyat. -platforma echimlari muqarrar ravishda orqada qoladi.

Mobil qurilmalar segmentidagi yangi mahsulotlar doimiy ravishda bozorda paydo bo'ladi, ularning ba'zilari o'z vaqtidan ancha oldinda - Samsung va uning ekrani egiluvchan qurilmani ishlab chiqishini oling: bu tubdan farq qiladigan old qism tufayli aniq. , mavjud rivojlanish platformalari bunday narsalarga tayyor emas.

Aynan shu erda mahalliy platformalar haqida chuqur bilim foydali bo'ladi: faqat mobil ishlab chiqish bo'yicha chuqur, tizimli bilimga ega bo'lgan dasturchi, ya'ni mahalliy platformalar apparat va OT ortda qolgan tabiiy kechikishlarni qoplashi mumkin. Faqatgina bunday mutaxassis hozirda mavjud bo'lmagan rivojlangan platformalar asosida eng yangi mobil qurilmalar uchun o'z yechimining funksionalligini oshirishi mumkin.

Kross-platforma ishlab chiqish prototiplash, g'oyalarni tezkor sinovdan o'tkazish va hokazolar uchun juda yaxshi. Haqiqatan ham fundamental mahsulotlarni yaratish haqida gap ketganda, ishlab chiquvchi muqarrar ravishda jarayonning asosiy elementlarini, ya'ni mahalliy rivojlanishni chuqur o'rganish zarurati tug'iladi.

Pastga tushirish

, GeekUniversity iOS rivojlantirish fakulteti dekani, GeekBrains ta'lim portali

Qisqa javob: agar sizda dasturlash tajribangiz bo'lmasa, unda, albatta, mahalliy rivojlanishni tanlashingiz kerak. O'zaro platformalarni ishlab chiqish tegishli sohalardan mobil rivojlanishga o'tayotgan mutaxassislar uchun yaxshi. Misol uchun, agar siz frontend ishlab chiqaruvchisi sifatida ishlasangiz, yaxshi JavaScript-ni bilish React Native ramkasi (React ramkasi asosida yaratilgan) yordamida siz tez va og'riqsiz mobil rivojlanishni o'zlashtirishga harakat qilishingiz mumkin. Xuddi shunday, .NET dasturchisi uchun Xamarin ramkasini o'zlashtirish osonroq bo'ladi.

O'zaro platformalarni ishlab chiqish mijoz uchun ham foydalidir - umumiy modelga ko'ra bir vaqtning o'zida ikkita platforma uchun dastur ishlab chiqadigan bitta ishlab chiquvchilar jamoasini topish osonroq.

Afzalliklari aniq, lekin ko'p platformali ishlab chiqishning qanday kamchiliklari bor?! Mobil ilovaning funksionalligi qanchalik murakkab va nozik bo'lsa, uni platformalararo vositalar yordamida amalga oshirish shunchalik qiyin, hatto imkonsiz bo'lsa ham, deb ishoniladi - bu ko'pincha universal vositalarning barcha afzalliklaridan ustun turadi. Mening tajribamga ko'ra, bir nechta yirik kompaniyalar mavjud bo'lib, ular qo'llanilishining o'sishi bilan mahalliy rivojlanish foydasiga kross-platformadan voz kechishga majbur bo'lishdi. Shunday qilib, kichik loyihalar va, ehtimol, mustaqil vazifalar uchun bu etarli umumiy yechimlar, va yirik loyihalar uchun mahalliy loyihalar ko'proq mos keladi.

Ikkala sohaga ham talab ancha yuqori, ammo mahalliy rivojlanish uchun biroz yuqoriroq: Rossiyada hh.ru saytida Swift so'rovi bo'yicha - 369 bo'sh ish o'rinlari, Kotlin - 397, React Native - 111, Flutter - 13 Xamarin - 18. Lekin ishonch hosil qiling. , yaxshi mutaxassis Hech qaysi sohada ish qolmaydi.

Pastga tushirish

Boshlash uchun shuni ta'kidlash kerakki, har qanday mobil ilova bir necha qatlamlardan iborat:

  • UI foydalanuvchi ko'rgan narsadir;
  • biznes mantig'i - dastur nima uchun yozilgan;
  • platformaning boshqa komponentlari - tarmoq, ma'lumotlar bazalari va biznes mantig'i tomonidan ishlatiladigan boshqa tizim komponentlari bilan ishlash.

Muayyan dasturga qarab, ushbu qatlamlardagi komponentlarning o'lchamlari juda katta farq qilishi mumkin. Masalan, veb-saytdagi yangiliklarni o'qish uchun dastur VPN mijozidan juda farq qiladi.

Rivojlanishning o'zini uch turga bo'lish mumkin: mahalliy, to'liq o'zaro faoliyat platforma va gibrid.

Mahalliy rivojlanish

Mahalliy rivojlanishda barcha uchta qatlam bir xil vositalar to'plamidan foydalangan holda yoziladi. Shuning uchun ular hech qanday qo'shimcha murakkabliksiz bir-biri bilan o'zaro aloqada bo'lishlari mumkin.

Mahalliy rivojlanishning afzalliklari:

Gibrid rivojlanish

Ushbu turdagi rivojlanish oldingi ikkala yondashuvni ham birlashtiradi. Biznes mantiqiy qatlami "portativ" komponent sifatida qurilgan va UI va platforma integratsiyasi standart vositalar yordamida yaratilgan. Umumiy mantiqni yozish uchun bir nechta tillar mavjud: C/C++ (etuk va kuchli yechim), KotlinNative (juda faol ishlab chiqilgan) va JavaScript (eng kam tarqalgan).

Afzalliklari:

  • buning uchun eng mos komponentlar mahalliy bo'lib qoladi;
  • umumiy mantiq bir marta yaratiladi.

Kamchiliklari:

  • agar umumiy komponent mobil guruh tomonidan yaratilsa, unda yana bitta tilda tajriba olish kerak;
  • platformalararo komponentlarni integratsiyalash uchun qo'shimcha xarajatlar mavjud.

Qaysi rivojlanish turidan boshlash yaxshiroq?

Bu savolga javob berish uchun siz qanday turdagi loyihalarni yaratmoqchi ekanligingizni tushunishingiz kerak. Kichik loyihalar faqat o'zaro faoliyat platforma bo'lishi mumkin va bu to'liq oqlanadi. Bu erda men sizga Flutterni yaqindan ko'rib chiqishingizni maslahat beraman.

Ammo bugun men mahalliy rivojlanishdan boshlardim. Birinchidan, bugungi kunda aksariyat loyihalar mahalliy ravishda yaratilgan. Bu sizning loyihalarni/kompaniyalarni o'zgartirish uchun ko'proq imkoniyatga ega bo'lishingizni anglatadi. Ikkinchidan, vaqt o'tishi bilan gibrid kross-platforma rivojlanishiga o'tish mumkin bo'ladi. Bu sizga texnik masalalarda o'sishga imkon beradi.

Pastga tushirish

Menimcha, mahalliy tildan boshlash yaxshidir, keyin, agar chindan ham xohlasangiz, bir yoki bir nechta o'zaro faoliyat platformalarni o'zlashtiring. Istisno faqat o'yinni ishlab chiqish bo'lishi mumkin, chunki ular asosan Unity-da yozilgan va bu o'zaro faoliyat platformali dvigatel.

Agar biz mahalliy rivojlanishning afzalliklari haqida gapiradigan bo'lsak, u holda dasturchi uchun bu kamroq to'siqlar va ishlash uchun ko'proq turli xil vositalarni anglatadi. Shuningdek, u ilovani yaratish jarayonida yuzaga keladigan murakkab muammolarni hal qilish uchun ko'proq ma'lumot manbalariga ega bo'ladi - hech kimga sir emaski, mahalliy rivojlanish uchun Internetda o'zaro faoliyat platformalarni ishlab chiqishdan ko'ra bir necha baravar ko'p maslahatlar va fokuslar mavjud.

Yakuniy foydalanuvchi uchun mahalliy ishlab chiqish ilovaning tanish, oldindan aytib bo'ladigan interfeyslari va xatti-harakatlar namunalariga ega bo'lishini anglatadi - agar dastur barcha qo'llanmalarga muvofiq yozilgan bo'lsa.

O'zaro platforma ilovasi har doim ham ikkala platformaning ko'rsatmalariga to'liq mos kelmasligi mumkin va bu ishlab chiquvchi va foydalanuvchi uchun qo'shimcha qiyinchiliklarni keltirib chiqarishi mumkin. Eng oddiy misol- "Orqaga" tugmasi bilan bog'liq vaziyat: Android-da u deyarli barcha ekranlarda mavjud, iOS-da esa yo'q. Agar siz ushbu tugmasiz platformalararo dastur yaratsangiz, ba'zi Android foydalanuvchilari noqulayliklarga duch kelishlari mumkin.

Rivojlanish xarajatlaridagi farqlarni ham eslatib o'tish kerak. Agar loyiha murakkab bo'lmasa, unda o'zaro faoliyat platformalarni ishlab chiqishni tanlash sizning byudjetingizni tejash imkonini beradi, chunki siz aslida turli platformalar uchun alohida mahsulotlarni ishlab chiqmayapsiz, lekin hamma uchun bitta. Ammo agar loyiha o'sib chiqsa, tarozi boshqa yo'nalishga aylana boshlaydi va mahalliy rivojlanish yanada foydali bo'lishi mumkin.

Ilova tezligi haqida gap ketganda, o'zaro faoliyat platformali mahsulotlar sekinroq. Masalan, veb-texnologiyalarga asoslanganlar qatlam sifatida brauzerga ega, bu esa dasturni sezilarli darajada sekinlashtiradi.

Pastga tushirish

O'zaro platforma yoki mahalliy yondashuvni tanlash aslida ikkita omilga bog'liq: siz shaxsan qilmoqchi bo'lgan mobil rivojlanish tabiati yoki siz hamkorlik qilishdan manfaatdor bo'lgan ish beruvchilarning iltimosiga. Masalan, agar siz Upwork-ga (loyihalar va vazifalar uchun masofaviy mutaxassislarni topish platformasi) qarasangiz, Xamarin va React Native yo'nalishidagi takliflarning aniq ustunligini ko'rasiz. Bu erda afzalliklar aniq: bu arzon, tez va bir vaqtning o'zida barcha platformalarda loyihalarni amalga oshirish imkonini beradi. Ammo, agar biz yirik IT-kompaniyalarni uyda xodimlar qidirayotganini hisobga olsak, bu tur ko'proq vaqt talab qilishi va qimmatroq bo'lishiga qaramay, mahalliy rivojlanishga katta e'tibor beriladi.

Kompaniyamizda biz mahalliy rivojlanishni birinchi o'ringa qo'yamiz va tanlaymiz, chunki bu dizaynerlar va ishlab chiquvchilarga yumshoqroq, intuitiv UX/UI yaratish imkonini beradi. Bundan tashqari, mahalliy rivojlanish tizim funktsiyalari ustidan ko'proq moslashuvchan nazoratni beradi.

Pastga tushirish

Agar siz mobil dasturchi bo'lishni istasangiz, javob aniq: siz har qanday mahalliy ishlab chiqish muhitini tanlashingiz va iOS uchun Objective-C/Swift yoki Android uchun Java/Kotlin-ga tayanishingiz kerak. Bunday holda, tizimning barcha imkoniyatlari sizning xizmatingizda, siz deyarli har bir nuanceni boshqarishingiz mumkin.

Agar siz shunchaki telefonlarda ham ishlaydigan dastur yozmoqchi bo'lsangiz, unda siz juda ko'p o'ylamasligingiz va o'zingiz uchun eng ishtiyoqli yoki sezilarli tajribaga ega bo'lgan narsalarni tanlashingiz shart emas: C++, React Native, Xamarin yoki kross-platformalarni ishlab chiqish uchun besh yuz ming JS ramkalar. Yoki o'zingizning [javob beruvchi] veb-saytlaringizni yaratishda davom eting.

Tan olaman, men Android va iOS kabi turli xil (va turlicha) platformalarda o'zaro platformalarni ishlab chiqish g'oyasiga juda shubha bilan qarayman. Sotuvchilarning hech biri bir vaqtning o'zida ikkita stulda o'tirishga harakat qiladigan "noto'g'ri" ishlab chiquvchilarni yoqtirmaydi. Hamma dasturchilarni asboblar va muhitlarga bog'lashga harakat qilmoqda va yaqin kelajakda konvergentsiya tendentsiyasini kutish mumkin emas. Nima deyishim mumkin, Apple ushbu poygada Curl-dan keyin barcha kutubxonalar ichida eng ko'p platformasi bo'lgan OpenGL-dan voz kechdi, ammo endi ular o'zlarining Metalllariga ega bo'lib, xuddi shu narsani qiladilar, faqat yaxshiroq va boshqa tilda.

Boshqa tomondan, ko'pincha mobil ishlab chiqish ba'zi tarmoq xizmatlari uchun ikkita bir xil ko'rinishdagi ilovalarni yaratishni anglatadi. Mijozlar har doim ham butunlay ajralib turmaydigan ikkita mahsulot uchun pul to'lashga tayyor emaslar, shuning uchun o'zaro platformalarni ishlab chiqish texnologiyalariga talab mavjud va, albatta, juda yuqori. Dasturchilar, shuningdek, pulni tejashga qarshi emaslar, ayniqsa, agar ular mobil ilovani sotmoqchi bo'lsalar va Swift/Kotlinni o'rganishni xohlamasalar, lekin JS/C# allaqachon ularning qo'lida.

Albatta, kross-platforma rivojlanishi o'zi bilan juda ko'p noaniq nuanslarni olib keladi. Barcha universal echimlar qumda qal'alar qurishga majbur: yoki murakkab va nozik texnologik echimlarga (masalan, Xamarin) yoki React Native kabi mobil JavaScript dvigatellariga tayanadi. Shu bilan birga, platforma sotuvchilari biron bir yechimni qo'llab-quvvatlash haqida o'ylamaydilar va mahalliy SDK ning har bir yangilanishi har qanday o'zaro faoliyat platforma uchun katta bosh og'rig'i hisoblanadi. Har bir inson turli darajadagi muvaffaqiyat bilan chetlab o'tishga harakat qiladigan kamera, brelok yoki hatto oddiy foto galereyaga kirish kabi tizimga xos xususiyatlar haqida gapirmasa ham bo'ladi. Umumjahon yo'lni tanlagan ishlab chiquvchilar o'zlarini o'z ramkalarining garoviga olishadi va ko'pincha sezilarli tejashni va'da qilgan rivojlanish rake bilan kurashga aylanadi.

Shuningdek, platformalararo yechimlar foydalanuvchi tajribasi (UX) deb ataladigan narsadan voz kechishi odatiy holdir: ko'plab ramkalar ikkala tizim uchun imkon qadar umumiy boshqaruv vositalaridan foydalanishga harakat qiladi va bu yechim deyarli har doim hamma uchun bir xil darajada noqulay. Yoki sekinlashadi. Yoki u umumiy uslubdan ajralib turadi. Yoki batareyani zaryadsizlantiradi. Ro'yxatni o'zingiz davom ettiring.

Kross-platforma ilovalari bir-biridan ajralib turadi, ularning yadrolari past darajada yozilgan, iloji boricha barcha operatsion tizimlar uchun keng tarqalgan: C/C++ kabi tillarda. Bunday holda, biznes mantig'iga xizmat qiluvchi koddan foydalanishni umumlashtirish odatiy holdir va interfeys har bir platforma uchun alohida yoziladi. Ideal holda, platformaga xos foydalanuvchi tajribasini saqlab qolgan holda, ilovaning muhim qismini takrorlashning oldini oladi. Biroq, haqiqiy hayotda hamma narsa murakkabroq. Misol uchun, Dropbox bir necha yil ketma-ket past darajadagi yadro bilan yashashga harakat qildi, lekin oxir-oqibat ular ko'p sabablarga ko'ra voz kechishdi va endi mahalliy platforma ilovalaridan mamnun. Men qiziquvchilarni ushbu mavzu bo'yicha qiziqarli maqolalariga havola qilaman.

Menimcha, o'zaro faoliyat platformalarda tejash har doim xayoliydir. Ehtimol, ba'zi bir ahamiyatsiz loyihalarda, bu erda ilova faqat asosiy saytning versiyasi bo'lib, mobil uchun super optimallashtirilgan, umumlashtirilgan yondashuv ishlaydi. Boshqa hollarda, siz Dropbox taqdirini takrorlash xavfi bor. Mening maslahatim shundaki, agar siz mobil dasturchi bo'lishni istasangiz, platformani o'rganishga harakat qiling. O'zaro platforma loyihasida ishtirok etishingiz kerak bo'lsa ham, ular har doim o'z samarasini beradi.

Pastga tushirish

, Accenture Tver texnologiya markazida katta dasturiy ta'minot ishlab chiqaruvchisi

Mobil ilovalar bozori faol rivojlanmoqda va ularni ishlab chiqish uchun texnologiyalar assortimenti mos ravishda o'sib bormoqda. Siz foydalanishingiz mumkin bo'lgan juda ko'p vositalar mavjud.

Mahalliy rivojlanish uchun Android platformasi Java yoki JVM ustidagi o'ram mavjud - Kotlin. iOS uchun Objective-C yoki uning o'ramidan - Swift-dan foydalanishingiz mumkin. Bularning barchasi Smalltalk va C dan ko'p meros bo'lib qolgan OOP tillari.

O'zaro platformalarni ishlab chiqish uchun ular hozirda Google'dan Flutterdan foydalanadilar, buning uchun siz Dartni bilishingiz kerak bo'ladi. Yoki Facebook-dan React Native.

Ajam mobil ishlab chiquvchi uchun hal qiluvchi omil, ehtimol, uning oldingi tajribasi va tillarni bilishi bo'ladi. Agar uning asboblar to'plami Java-ga asoslangan bo'lsa, u xuddi shu Java yoki Kotlin-dan foydalangan holda Android platformasi orqali mobil ishlanmalar olamini ancha tezroq kashf eta oladi.

Shu bilan birga, iOS ishlab chiqish uchun Objective-C Java kabi Smalltalk-dan ko'p narsani oldi, shuning uchun agar xohlasangiz, iOS foydasiga tanlov qilishingiz mumkin. Ammo shuni hisobga olish kerakki, Android uchun ishlab chiqish Windows yoki Linux-da amalga oshirilishi mumkin, ammo iOS uchun MacOS X kerak. Lekin React-ni biladigan JavaScript-ni ishlab chiquvchi uchun React Native eng tezkor usul ekanligi aniq. Xuddi Dart ishlab chiquvchilari kabi, tanlov Flutter foydasiga bo'ladi.

Ajam ishlab chiquvchi mobil rivojlanish nima ekanligini va tanlangan yo'lning ijobiy va salbiy tomonlari haqida tasavvurga ega bo'lgandan so'ng, u bitta yondashuv bilan ishlash yoki muammolarni o'zaro platforma echimlaridan foydalangan holda hal qilish haqida o'zi qaror qiladi.

Ushbu yondashuv o'zining afzalliklariga ega: kross-platforma usuli kamroq resurslardan foydalangan holda loyihani samarali muhitga biroz tezroq chiqarish imkonini beradi. Bundan tashqari, uni saqlash osonroq. Lekin uning ham ishlab chiquvchi, ham foydalanuvchi uchun aniq kamchiliklari bor. Misol uchun, ishlab chiquvchi mahalliy texnologiyalarni bilishi shart emas, lekin platforma ko'rsatmalarini hisobga olish kerak, chunki iOS ko'rsatmalariga muvofiq yozilgan dastur Android foydalanuvchilari uchun qiyinchiliklarga olib keladi va aksincha.

O'zaro platforma ilovalari mahalliy ilovalar kabi qurilma integratsiyasi darajasiga erisha olmaydi. Ya'ni, agar ilova qurilma bilan, masalan, kamera, taqvim yoki qurilmaning hisoblash quvvatidan foydalanish haqida bo'lsa, mahalliy yondashuv yordamida bunga erishish osonroq va u tezroq va ko'proq bo'ladi. samarali.

O'zaro platforma ilovasini ishlab chiqishda mutaxassislar cheklovlarni o'rnatadigan ramka imkoniyatlarini hisobga olishadi. Mahalliy texnologiyalardan foydalangan holda mahsulotni ishlab chiqish uchun har bir platforma uchun mutaxassislar kerakligini ham hisobga olish kerak.

Agar siz frilanser sifatida ishlasangiz yoki minimal resurslar bilan qurilmalarning maksimal sonini qamrab olishni maqsad qilgan bo'lsangiz, maqsadli bo'lsangiz, platformalararo rivojlanishga e'tibor qarating. mobil echimlar yoki front-end dasturchi sifatida ishlash.

Mobil mahalliy va platformalararo rivojlanishning asosiy afzalliklari va kamchiliklari qanday? Native rivojlanishning o'zi qimmat, chunki kompaniya ikkita jamoaga - iOS va Androidga sarmoya kiritishi kerak. Uchun oddiy ilovalar, Flutter / React Native-da rivojlanish tezligi yuqoriroq.

Ammo ortiqcha narsa shundaki, infratuzilma allaqachon shakllangan va tushunarli. Siz har qanday qurilma resurslariga kirish huquqiga ega bo'lasiz va ostida ishlab chiqishingiz mumkin aqlli soat, avtomobillar va boshqalar.

O'zaro platformalarni ishlab chiqish ham ajoyib narsa. Lekin u Rossiyada IT mehnat bozorida hali unchalik rivojlanmagan. Barmoqlaringizdagi aqlli mutaxassislarni sanashingiz mumkin. Ramka infratuzilmasi yosh, ammo vaziyat asta-sekin yaxshi tomonga o'zgarib bormoqda. Ushbu ishlanma bir vaqtning o'zida bir nechta qurilmalar uchun yozish imkonini beradi. Masalan, Flutter-da yozsangiz ham, u mahalliy kod bilan osongina birlashadi.

Pastga tushirish

O'zaro platformalarni ishlab chiqish tez natijalarga va sezilarli byudjetni tejashga qaratilgan - biz barcha qurilmalar uchun bitta kod yozamiz. Uning qo'llanilish doirasi ichki foydalanish uchun yechim bo'lib, bu erda mahsulotning qulayligi unchalik muhim bo'lmagan va funksionallik ustun rol o'ynaydi yoki mijoz printsipni ko'rsatishi kerak bo'lganda yoki tezkor "uchuvchi" loyihani yaratishdir. ilova g'oyasi. Bundan tashqari, qaysi qurilma haqida aniq tushuncha bo'lmasa operatsion tizim prototipingizni ko'rib chiqamiz, platformalar o'rtasida ishlab chiqish chiqish yo'lidir. Biroq, barcha qurilmalar turli xil arxitekturaga ega ekanligini oldindan tushunishingiz kerak, shuning uchun faqat o'zaro faoliyat platforma kodidan foydalangan holda yuqori sifatli dasturni ishga tushirish jismonan deyarli mumkin emas. Murakkab stsenariylar mahalliy kodni yozishni talab qiladi. Bundan tashqari, o'ziga xos xususiyatlaridan kelib chiqqan holda, kross-platformalarni ishlab chiqish dasturning iloji boricha samarali bo'lishiga imkon bermaydigan xarajatlarni o'z ichiga oladi. Bu tushunarli, bu holda platformalarning har biri uchun oraliq platformalar kodi tarjima qilinishi kerak, bu esa dasturni yanada "og'irroq" qiladi, chunki u funktsional kodga qo'shimcha ravishda uning ijro muhitini o'z ichiga oladi.

Menga boshqa fikr bildiring

Hammasi aniq, xulosalaringizni ko'rsating

Xo'sh, qanday rivojlanish yondashuvini qo'llashingiz kerak?

Hammasi vazifaga bog'liq. Agar bir nechta platformalar uchun dastur prototipini yozish kerak bo'lsa yoki mobil versiyasi saytida, keyin siz o'zaro platformalar ramkalariga qarashingiz mumkin. Ularning yordami bilan siz dasturni mahalliy dasturga qaraganda tezroq yozasiz, ayniqsa React Native kabi odatiy vositangizga o'xshash ramka ustida ishlasangiz.

Boshqa tomondan, o'zaro platforma ilovalarining ko'p qirraliligi biror narsa bilan qoplanishi kerak. Qaerdadir "nonative" interfeys elementi paydo bo'ladi, qayerdadir tizim bilan o'zaro aloqalar yomonroq, qayerdadir ish tezligi pasayadi va hokazo. Mahalliy rivojlanish ko'proq resurslarni talab qilishiga qaramay, ko'plab kompaniyalar buni afzal ko'radilar, chunki Natija ko'proq barqaror va mahalliy ko'rinishdagi mahsulot.

Shu nuqtai nazardan, agar siz mobil dasturni endigina boshlayotgan bo'lsangiz, avvalo mahalliy rivojlanishdan boshlaganingiz ma'qul. Siz u haqida ko'proq ma'lumotni Internetda topishingiz mumkin, siz platformaning imkoniyatlarini chuqurroq tushunasiz va platformalararo rivojlanishning ba'zi nuanslari sizga to'sqinlik qilmaysiz. Bundan tashqari, agar siz kelajakda o'zaro faoliyat platformalarni ishlab chiqish bilan shug'ullanishga qaror qilsangiz, olingan bilimlar sizga zarar keltirmaydi.

Sizga o'z savolingizni mutaxassislarga berishingiz mumkinligini eslatib o'tamiz va agar u qiziqarli bo'lib chiqsa, biz unga javob to'playmiz. Allaqachon berilgan savollarni muammolar ro'yxatida topish mumkin. Agar siz mutaxassislar safiga qo'shilishni va kompaniyangizdan yoki o'zingizdan javob yubormoqchi bo'lsangiz, u holda yozing, biz buni qanday qilishni sizga aytamiz.

Kross-platforma ishlab chiqish iOS va Android-da bir vaqtning o'zida ishlaydigan mobil ilovani yaratishga imkon beradi. Bu har bir operatsion tizim uchun alohida dastur yaratish uchun arzon muqobildir.

O'zaro platformalarni ishlab chiqish xususiyatlari

Turli platformalar uchun bitta dasturni ishlab chiqish bir vaqtning o'zida yaxshi va yomon. Yaxshi, chunki u har bir operatsion tizim uchun bir nechta ilovalarga qaraganda tezroq va arzonroq bajarilishi mumkin. Va bu yomon, chunki kelishuv dasturning ishlashiga ta'sir qiladi.

Loyihani boshlashdan oldin ushbu xususiyatlarni hisobga olish kerak:

  • O'zaro platforma muhitida kod bir marta yoziladi. Ilova boshqa operatsion tizimda ishlashi uchun kod boshqa dasturlash tiliga tarjima qilinadi. Rivojlanish uchun sarflangan vaqt va pul 1,5 barobar kamroq.
  • Ilovalar to'g'ri ishlamasligi mumkin. O'zaro platformalarni ishlab chiqishda har bir operatsion tizimning arxitekturasi bilan ishlashning barcha nuanslarini hisobga olish mumkin emas, shuning uchun ilovalar iOS yoki Android uchun maxsus ishlab chiqilganlarga qaraganda sekinroq ishlashi mumkin.
  • Interfeys va elementni loyihalash talablari operatsion tizimlar orasida farq qiladi. Masalan, iOS-da Android kabi Orqaga tugmasi yo'q. Birlashtirilgan dizaynni ishlab chiqishda ushbu nuqtani hisobga olish kerak: iOS-da tugma qoladi, lekin ishlamaydi yoki uni qo'lda kesish kerak bo'ladi, bu kod bilan qo'shimcha ishlashni anglatadi.

Bir platformadan ikkinchisiga o'tishda ko'pgina xatolar qo'lda hal qilinishi mumkin, ammo "noma'lum" operatsion tizimga moslashish muammolarini to'liq hal qilish mumkin emas.

Shunday qilib, platformalararo rivojlanish yomonmi?

Yo'q, agar siz undan ko'proq narsani talab qilmasangiz, o'zaro platformalarni ishlab chiqish yaxshi.

Ushbu parametr quyidagi hollarda tanlanishi mumkin:

  • Cheklangan byudjetda barcha operatsion tizimlarni qamrab oling. Agar maqsadli auditoriya iOS yoki Android-dan faol foydalansa, siz bitta operatsion tizim uchun mahalliy dasturdan boshlashingiz mumkin. Agar maksimal qamrov darhol muhim bo'lsa, o'zaro faoliyat platforma variantini tanlash yaxshidir.
  • Joyni tekshiring. Agar istiqbolli g'oya mavjud bo'lsa-yu, lekin uning ishlashiga ishonchingiz komil bo'lmasa, darhol rivojlanishga katta byudjetni investitsiya qilish xavflidir. O'zaro platformalarni ishlab chiqishdan boshlash, foydalanuvchilarning reaktsiyalarini o'rganish va shu asosda strategik qarorlar qabul qilish mantiqan.
  • Ilova murakkab animatsiyalardan foydalanmaydi va hisob-kitoblarni amalga oshirmaydi. Ushbu operatsiyalar qurilmani jiddiy yuklaydi va o'zaro faoliyat platforma ilovasi ma'lum bir platformaning resurslaridan to'liq foydalanish uchun optimallashtirilmagan.
  • Ilova faqat qurilmaning asosiy funksiyalaridan foydalanadi. Ma'lumotni ko'rsatish, fayllarni yuklash, geolokatsiyadan foydalanish, buyurtma berish - bularning barchasini platformalararo dastur hal qila oladi. Qurilma imkoniyatlarini chuqurroq integratsiya qilish talab etiladi - siz mahalliy ishlab chiqishni tanlashingiz kerak bo'ladi.
  • Xodimlar uchun korporativ ariza. Agar dastur tor ichki vazifalar uchun ishlab chiqilgan bo'lsa va odamlar u bilan shaxsiy gadjetlar orqali ishlasa, platformalararo dastur eng yaxshi variant bo'ladi.

Loyihangiz uchun platformalararo echimlardan foydalanish mumkinmi degan savolga universal javob yo'q. Quyidagi shaklni to'ldiring: biz sizning loyihangizni o'rganamiz va tanlaymiz eng yaxshi variant uni amalga oshirish uchun.

O'zaro platforma ilovalari - bo'lish yoki bo'lmaslik? Savol oson emas, chunki har bir biznesning mobil ilovalar uchun o'z maqsadlari va talablari bor. Ammo bugun biz qaysi rivojlanish sizga mos kelishini aniqlaymiz.

O'zaro platforma ilovalari nima?

Kross-platforma ilovalari ishlab chiqilgan va keyin Android va iOS-da ishlaydigan ilovalardir. Rivojlanishning mohiyati shundan iborat manba kodi Ilova mahalliy tilga tarjima qilingan, ya'ni ma'lum bir mobil qurilma uchun tushunarli. Natijada, dastur unga o'rnatilgan operatsion tizim bilan o'zaro aloqada bo'lishi mumkin.

Eslatib o'tamiz: mahalliy ilovalar, o'zaro platformalardan farqli o'laroq, ma'lum bir OT uchun yozilgan.

O'zaro platformalarni ishlab chiqishning afzalliklari

  • ilovaning bir vaqtning o'zida bir nechta do'konlarda paydo bo'lishi tufayli foydalanuvchi bazasini kengaytirish;
  • Yagona manba kodi har bir platforma uchun bir nechta ishlab chiquvchilarni yollash zaruratini yo'q qiladi;
  • O'zaro platforma ilovasining kod bazasining 75 foizi uni yangi loyihalar uchun moslashtirib, qayta ishlatilishi mumkin.

O'zaro platformalarni ishlab chiqishning kamchiliklari

1. Mobil qurilmaga kuchli qaramlik

Platformalararo ilovalar odatda oflayn rejimda ishlamaydi. Shuning uchun ularning imkoniyatlari barqaror Internet aloqasiga ega bo'lgan foydalanuvchiga juda bog'liq. Operatsion tizim versiyasi va qurilma modeli ham muhimdir. O'zaro platforma ilovasi bir yoki ikki yildan ortiqroq qurilmaning ish faoliyatini kamaytirish uchun deyarli kafolatlanadi. Mahalliy dastur hatto eskirgan proshivkaga ega qadimiy gadjetda ham barqaror ishlaydi. Shunday qilib, agar siz mijozlaringiz sizning ilovangiz kimningdir smartfonini qanday qilib “tugatgani” haqidagi g'azablangan sharhlarni o'qishini xohlamasangiz, mahalliy rivojlanishni tanlang.

2. Do'stona bo'lmagan foydalanuvchi interfeysi

Foydalanuvchilar o‘z gadjetlarining ko‘rinishi va funksionalligiga shunchalik ko‘nikib qolganki, ular o‘rnatilgan ilovalardan maksimal darajada javob berishni kutishadi. Ular har bir tugma o‘z joyida bo‘lishiga, sahifa ular uchun optimal tezlikda aylanishiga va ular qilgan har qanday harakatga darhol javob berilishiga ishonch hosil qilishni xohlashadi. O'zaro platforma ilovalari odatda qurilmaga moslashishda qiyinchiliklarga duch keladi va ular ishlash bilan maqtana olmaydi.

Muammo shundaki, o'zaro faoliyat platformalarni ishlab chiqish uchun hech qanday ko'rsatmalar mavjud emas - OT yaratuvchilardan ishlab chiqish standartlari. Shuning uchun, "Android uchun" ishlab chiqarilgan o'zaro faoliyat platforma ilovasi iOS foydalanuvchisi uchun qulay bo'lmaydi va aksincha. Siz, albatta, har bir platforma uchun alohida dizaynlarni yaratishingiz mumkin, ammo mehnat xarajatlari nuqtai nazaridan, bu bir xil tilda bo'lsa ham, ikki xil dastur yaratishga teng bo'ladi.

3. Rivojlanish vositalari orasida ustuvorlik uchun kurash

O'zaro platformalarni ishlab chiqish bo'yicha echimlar bozorida raqobat kundan-kunga kuchayib bormoqda. Hozircha React Native va Xamarin ishlab chiquvchilar orasida eng mashhurlari, ammo ular, masalan, Vue Native-dan oshib ketishi mumkin. Bunday holda, poyganing sobiq etakchilari o'zlarining eng muhim ustunligini - operatsion kodni qo'llab-quvvatlashni yo'qotadilar. Va bu har qanday o'zaro faoliyat platforma vositasi bilan sodir bo'lishi mumkin.

Mahalliy rivojlanish bunday muammodan qo'rqmaydi. Yangi vositalarni joriy etish asta-sekin sodir bo'ladi va mutaxassis uchun majburiy bo'lgan bir nechta dasturlash tillarini bilish unga barcha yangiliklarni tezda tushunish imkonini beradi. Bundan tashqari, har bir operatsion tizim atrofida ulkan professional jamoalar mavjud bo'lib, buning natijasida yuzaga keladigan har qanday qiyinchilik shunga o'xshash muammoni forumlarda qidirish orqali hal qilinadi, bu erda minglab odamlar uni hal qilishga taklif qilish va yordam berishga tayyor.

Qaysi dastur sizning biznesingizga mos keladi?

Bu savolga javob berishdan oldin, biznesingizni tahlil qilish juda muhimdir. Iste'molchi segmentlari, vaqt va pul resurslarining qiymati, dasturning foydalanuvchi qurilmalari bilan integratsiyalashuvining kerakli chuqurligi, shuningdek, aniq belgilangan uzoq muddatli maqsadlar - sizning tanlovingiz bog'liq bo'lgan minimal. Ammo hoziroq tegishli savollarga javob bersangiz, biz buni osonlashtiramiz.

1. Tomoshabinlaringiz nimadan foydalanadi?

Mijozlaringiz orasida iOS va Android foydalanuvchilarining nisbati 50/50 ga yaqin ekanligini bilsangiz, mahalliy rivojlanishni tanlang. Bu sizning barcha mijozlaringizning daromad darajasidan qat'i nazar, ularning ehtiyojlarini teng ravishda hurmat qilishingizni ko'rsatadi.

Tanlovlar o'rtasidagi munosabat mobil qurilma va to'lov qobiliyati darajasi App Ennie tomonidan yana bir bor tasdiqlandi. Mobil ilovalarni yuklab olish va sotish sonini o'rganish natijasida Google Play Va Uskunalar Do'koni 2018 yilning birinchi choragida ma'lum bo'lishicha, Android smartfon foydalanuvchilari iOS do'koniga tashrif buyuruvchilarga qaraganda 135% ko'proq ilovalarni yuklab olgan. Shu bilan birga, App Store o'z egalariga Google Play'dan 85% ko'proq daromad keltirdi.

Muvaffaqiyat yo'li aniq: bir vaqtning o'zida ikkita maydonda o'ynang. Aniqrog'i, ikkita do'konda. Ularning qaysi birida ilova birinchi bo'lib paydo bo'lishini hisoblab chiqing. Albatta, agar bir vaqtning o'zida chiqarilish raqamli strategiyangizning bir qismi bo'lmasa).

2. Rivojlanish uchun qancha vaqtingiz bor?

Loyihaning moliyaviy xarajatlari bu savolga javobga bog'liq. Gap shundaki, ishlab chiqishga sarflangan vaqt nuqtai nazaridan, platformalararo dastur faqat foydaliroq echim bo'lib tuyuladi. Haqiqatan ham, uni platformalarga moslashtirish ikkita mahalliy dasturni yaratishga qadar davom etishi mumkin, chunki ishlab chiquvchilar muammoli joylar uchun qo'shimcha kod qismlarini yozishlari kerak bo'ladi.

Mahalliy dastur bilan, albatta, bunday muammolar bo'lmaydi, bu xatolar va xatolarga juda toqat qilmaydigan auditoriyani saqlab qolish uchun juda muhimdir. Compuware statistik ma'lumotlariga ko'ra, foydalanuvchilarning 79 foizi dasturni birinchi ishga tushirish vaqtida noto'g'ri ishlamasa, uni qayta ishga tushirishga tayyor, faqat 16 foizi unga yana bir imkoniyat berishga rozi. Boshqalar, ehtimol, dasturni oddiygina olib tashlashadi.

3. Qurilmaning qaysi xususiyatlaridan foydalanishni rejalashtiryapsiz?

Biz faqat mahalliy ilovalar og'ir grafiklarni tez va sifatni yo'qotmasdan ko'paytirishga qodir ekanligi haqida allaqachon gapirgan edik. Ammo mahalliy rivojlanishning texnik afzalliklari bu bilan cheklanmaydi. Misol tariqasida olishimiz mumkin Facebook ilovasi. Android va iOS uchun alohida versiyalarning chiqarilishi tufayli aylantirish silliqlashdi, tasvirni yuklash vaqtlari qisqardi va barcha kesh muammolari hal qilindi.


Bundan tashqari, mahalliy ilovalar barcha qurilma xizmatlariga to'g'ridan-to'g'ri kirish huquqiga ega, bu sizga foydalanuvchining geolokatsiyasi yoki ularning kontaktlar ro'yxati haqida ma'lumot olish imkonini beradi. Kross-platforma ilovalari maxsus mahalliy plaginlardan foydalanishi kerak, bu esa ma'lumotlarni uzatish tezligiga va ortiqcha yuklanishlarga salbiy ta'sir qiladi Ram qurilmalar.

4. Qanday natijalarga intilyapsiz?

Raqamli strategiya - bu sizning kompaniyangiz raqamli vositalar yordamida erisha oladigan maqsadlar ro'yxati. Ikkinchisini tanlash ko'p jihatdan siz oxir-oqibat olishni istagan imtiyozlarga bog'liq.


Mavjud barcha resurslarni hisobga olgan holda, g'oyadan natijagacha bo'lgan jarayonni nuqta bo'yicha taqsimlang. Kashfiyotlar eng kutilmagan bo'lishi mumkin.

Masalan, funksiyalar va interfaol elementlarga ega bo‘lgan sezgir veb-saytingizni o‘zingiz xohlagandek kross-platforma ilovasiga aylantirish juda qimmatga tushishi mumkin. Yoki nihoyat, mobil sayt har doim mobil ilovaga yutqazishiga ishonch hosil qiling, xuddi kross-platforma rivojlanishi mahalliy rivojlanishdan yutqazadi. Va sabablar orasida siz yuqorida tavsiflangan narsalarni topasiz.

Xulosa: platformalararo dastur faqat bitta holatda foydalidir - siz vaqt, pul va yuqori ixtisoslashgan mutaxassislar bilan cheklangan dasturning demo versiyasini yaratasiz. Boshqa barcha holatlarda, mahalliy dastur sizga bir necha baravar ko'proq afzalliklarni beradi, chunki u sifat jihatidan boshqacha rivojlanish darajasidir.

Smartfonlar nafaqat mushuklarning fotosuratlari va XXX videolarini iste'mol qilish vositasi, balki ishlaydigan vosita sifatida ham quyoshda tobora ko'proq joy egallashda davom etmoqda. Shu sababli, mobil aloqani rivojlantirishga talab ortib bormoqda. Ma'lumki, mehnat va salqin iOS uchun Objective-C/Swift va Android uchun Java/Kotlin. Shubhasiz, bu mashaqqatli va zo'r ish, ammo ko'plab haqiqiy stsenariylar mavjud bo'lib, ularda o'zaro faoliyat platformalardan foydalanish mahalliy vositalarga qaraganda afzalroqdir.

Ba'zi ishlab chiquvchilar o'zaro platformalar o'zlarining barcha hayotiy muammolarini hal qilishlarini kutishadi, boshqalari esa ularga dushman. Ikkala "urushayotgan lagerlar" ham qanday va nima ishlashini tushunmaslikdan kelib chiqqan o'zlarining noto'g'ri tushunchalariga ega. Bu olovga yoqilg'i qo'shadi, chunki texnik dalillar o'rniga his-tuyg'ular qo'llaniladi.

Bundan tashqari, ishlab chiquvchilar, ayniqsa yangi boshlanuvchilar orasida, o'zaro platformali mobil ramkalar haqida ko'plab afsonalar mavjud. Bizning maqolamizda ulardan eng mashhurlarini tahlil qilamiz. Lekin birinchi navbatda, keling, butun IT blackjack uchun pul ta'minlaydigan biznes ko'zi bilan mobil rivojlanishni ko'rib chiqaylik.

Nima uchun bizga platformalararo vositalar kerak?

Tarixan, kompyuter bozorida raqobat doimo mavjud bo'lib kelgan va har bir ishlab chiqaruvchi o'z operatsion tizimlari va qurilmalari uchun ilovalarni ishlab chiqish uchun mahalliy vositalar deb ataladigan optimal vositalar to'plamini taqdim etgan.

Mahalliy vositalar = ekotizim egasi tomonidan taqdim etiladi.

"Tug'ilish" ning barcha boshqa belgilari IKKINCIRA - xatti-harakatlar va dastur interfeysi, OT imkoniyatlariga kirish, ishlash va boshqalar.

Bundan tashqari, deyarli har doim mahalliy vositalar nafaqat rivojlanish tillari, qabul qilingan konventsiyalar va arxitekturalar darajasida, balki operatsion tizim va kutubxonalar bilan ishlash mexanizmlari darajasida ham bir-biriga mos kelmasligi aniqlandi. Natijada, bir xil algoritmlar va interfeyslarni amalga oshirish uchun turli xil dasturlash tillarida bir nechta muhitlar uchun dastur yozish va keyin uni "har bir platforma uchun bitta buyruq" asosida qo'llab-quvvatlash kerak edi. Shu bilan birga, imkoniyatlar va tashqi ko'rinish turli platformalardagi ilovalar deyarli har doim 90% bir xil. Faqat o'yin-kulgi uchun iOS va Android uchun sevimli dasturlaringizning bajarilishini solishtiring.

Ikkinchi muhim nuqta- jamoada zarur bilim va tajribaning mavjudligi: agar ular yo'q bo'lsa, unda mashq qilish uchun vaqt kerak bo'ladi.

Ushbu ikkala muammolarni hal qilish uchun bozorda o'zaro faoliyat platformalarni ishlab chiqish vositalari (nafaqat mobil) uzoq vaqtdan beri paydo bo'lib, quyidagilarni taklif qiladi:

  • yagona dasturlash tilida umumiy kod bazasini maksimal darajada oshirish, shunda mahsulotni ishlab chiqish va saqlash osonroq bo'ladi;
  • ilovalarni yangi platformalarda amalga oshirish uchun mavjud vakolatlar va mutaxassislardan foydalanish.

Hozirda juda ko'p dasturlash tillari (va muhitlar) (va bu tillarda gapiradigan mutaxassislar) mavjud bo'lganligi sababli, o'zaro faoliyat platformalarni ishlab chiqish uchun juda ko'p vositalar mavjud. Misol tariqasida, biz mintaqamizdagi mashhurlarga to'xtalamiz PhoneGap, Xamarin, React Native va Qt.


Endi biz afsonalar haqida gapirishimiz mumkin.

Mif 1. Sehr

Ajam ishlab chiquvchilarni hayratda qoldiradigan eng keng tarqalgan afsona o'zaro platforma ilovalarini sehrli tarzda mahalliy dasturlarga aylantiradigan super-algoritmlarga (va ularni yaratgan super-dasturchilarga) ishonish bilan bog'liq. "JavaScript kodini Swiftga aylantirish va keyin Swift ilovasini kompilyatsiya qilish" qatorida nimadir. Ushbu afsonani o'zaro platforma vositalarini ishlab chiquvchilarning o'zlari qo'llab-quvvatlaydi va natijada "mahalliy ilovalar" yaratilishini va'da qiladi. Va bu erda kimdir yolg'on gapirayotgani yo'q, lekin boy tasavvur va asosiy mexanizmlarni noto'g'ri tushunish ba'zan ishlab chiquvchilarni shamanik uslublar haqida o'ylashga olib keladi.

O'zaro platforma echimlarining asosiy printsipi kodni ikki qismga bo'lishdir:

  • kross-platforma, virtual muhitda yashash va ega cheklangan kirish maxsus ko'prik orqali maqsadli platformaning imkoniyatlariga;
  • onalik, bu dasturni ishga tushirishni, asosiy ob'ektlarning hayot aylanishini boshqarishni ta'minlaydi va to'liq kirish imkoniyatiga ega tizim API.


"Mahalliy" dunyoni va "o'zaro platformalar" dunyosini bog'lash uchun maxsus qurilmadan foydalanish kerak. ko'prik, aynan u platformalararo ramkalarning imkoniyatlari va cheklovlarini belgilaydi.

Ko'prikdan foydalanganda, "dunyolar" o'rtasida ma'lumotlarni konvertatsiya qilish, shuningdek, API qo'ng'iroqlari va kutubxonalarni o'zgartirish tufayli ishlash har doim kamayadi.

Shunday qilib, barcha o'zaro faoliyat platformalar ilovalari mahalliy qismga ega bo'lishi kerak, aks holda operatsion tizim ularni ishga tushira olmaydi. Shunday qilib, keling, iOS, Android va Windows tomonidan qanday tizim API va mexanizmlari taqdim etilishini batafsil ko'rib chiqaylik. Keling, keyingi afsonaga o'tamiz.

Mif 2. Mahalliy emas!

Shunday qilib, bizda virtual muhitda yashovchi va operatsion tizim bilan ramka infratuzilmasi va ko'prik orqali o'zaro aloqada bo'lgan o'zaro faoliyat platformali dastur qismi mavjud.

Barcha operatsion tizimlar: iOS, Android va Windows UWP quyidagi quyi tizimlarga (tizim API to'plami) kirishni ta'minlaydi:

  • WebView (ilovaga o'rnatilgan veb-brauzer) ishlatiladi gibrid ilovalar PhoneGap-ga asoslangan va aslida mahalliy veb-sayt uchun ish vaqti muhiti sifatida ishlaydi;
  • JavaScript dvigatellari React Native va analoglarida JS kodini tez bajarish va Native va JS o'rtasida ma'lumot almashish uchun ishlatiladi;
  • OpenGL ES (yoki DirectX) interfeysni ko'rsatish uchun Qt/QML yoki analoglarga asoslangan o'yin dvigatellari va ilovalarida qo'llaniladi;
  • UI quyi tizimi React Native va Xamarin uchun tegishli bo'lgan ilovaning mahalliy foydalanuvchi interfeysi uchun javobgardir.


O'zaro platforma ilovalari mahalliy qismga va tizim API-lariga mahalliy ilovalar kabi to'liq kirish huquqiga ega. Farqi shundaki, tizim usuli ko'prik va ramka infratuzilmasi orqali chaqiriladi:

WebView- ilova bir sahifali veb-saytga o'xshash veb-brauzerida yashaydi. Mahalliy boshqaruv elementlariga (tugmalar, ro'yxatlar va boshqalar) kirish imkoni yo'q, hamma narsa HTML/CSS/JavaScript-ga asoslangan. Boshqa tomondan, veb-ishlab chiquvchi o'zini suvdan chiqqan baliq kabi his qiladi.

JavaScript dvigatellari nisbatan yaqinda mashhur bo'ldi, chunki shunga o'xshash mexanizm iOS-ga faqat 7.0 versiyasida qo'shilgan. Ko'rib chiqilishi kerak bo'lgan xususiyatlardan biri bu JSON-da JavaScript va Native muhitlar o'rtasida uzatiladigan murakkab ma'lumotlar tuzilmalarini ketma-ketlashtirish zarurati. Ushbu yechimlar sinfini qisqacha tavsiflash uchun mahalliy dasturni boshqaruvchi JS kodi JavaScript muhitida bajariladi.

OpenGL ES va DirectX past darajadagi quyi tizimlar bo'lib, foydalanuvchi interfeysini o'yinlarda va, masalan, Qt/QMLda ko'rsatish uchun ishlatiladi. Ya'ni, OpenGL/DirectX dan foydalanganda ishlab chiquvchilar o'zlari boshqaruv elementlari va animatsiyalarni chizishadi, ular faqat mahalliylarga o'xshash bo'lishi mumkin. Boshqa tomondan, bu juda yuqori unumdorlikka ega past darajadagi quyi tizimdir, shuning uchun u platformalararo o'yin dvigatellarida ham qo'llaniladi.

Barcha o'zaro platforma ilovalari mahalliy qismga ega va shuning uchun tizim API-lariga mahalliy ilovalar bilan bir xil to'liq kirish imkoniyati mavjud. Bundan tashqari, o'zaro faoliyat platformalar ilovalari mahalliy vositalar bilan mahalliy o'rnatish paketlariga qurilgan va paketlangan. Asosiy savol - o'zaro platforma qismi va mahalliy qism o'rtasidagi o'zaro ta'sir qanday tashkil etilganligi. Masalan, WebView ichida yoki Open GL ES / DirectX-dan foydalangan holda, foydalanuvchi interfeysini butunlay mahalliy ko'rinishda yaratishning hech qanday usuli yo'q, lekin ayni paytda GPS, Push Bildirishnomalari va boshqa funktsiyalarga to'liq kirish imkoniyati mavjud. JavaScript yoki C# tilidagi kod esa mahalliy ilovani va uning xatti-harakatlarini bemalol boshqarishi mumkin, bu esa butunlay mahalliy ko'rinishni ta'minlaydi.

Xulosa qilib aytadigan bo'lsak, ha, u qo'llaniladigan ishlab chiqish vositalari (Apple, Google'dan emas) nuqtai nazaridan "mahalliy emas". Ammo dastur tizim API-lariga kirish nuqtai nazaridan butunlay mahalliy bo'lishi mumkin va butunlay mahalliy ko'rinish va hissiyotni ta'minlaydi. Va biz keyingi afsonaga o'tamiz.

Afsona 3. Qo‘ltiq tayoqchadagi tayoq

Bu erda shuni tushunish kerakki, mahalliy APIlar sukut bo'yicha qo'ltiq tayoqchalari hisoblanmaydi (garchi bu erda turli xil fikrlar mavjud bo'lsa ham), shuning uchun barcha g'azab platformalar orasidagi qismga qaratilgan. Shubhasiz, ijro muhiti (masalan, WebView, JavaScript dvigateli yoki Mono) uzoq tarixga ega bo'lgan etuk yechimlarni qo'ltiq tayoqchalari deb atash ham qiyin.

Ko'rinib turibdiki, qo'ltiq tayoqchasi o'zaro platforma qismi mahalliy qism bilan qanday birlashadi. PhoneGap, Xamarin, Qt va React Native misollaridan foydalanib, turli ramkalar qanday ishlashini yaxshiroq tushunish uchun biz o'zaro platformalar va "mahalliy" qismlarni bog'lash uchun ishlatiladigan operatsion tizim mexanizmlarini ko'rib chiqamiz.

Biz PhoneGap-dan boshlaymiz. Quyida ushbu ramka asosidagi ilovaning yuqori darajadagi arxitekturasi keltirilgan.



PhoneGap-dagi ilova aslida WebView-ni yagona UI boshqaruvi sifatida ko'rsatadigan mahalliy dasturdir. Aynan shu orqali mahalliy qism bilan o'zaro ta'sir sodir bo'ladi. IOS, Android va Windows UWP’dagi barcha standart WebViews JS xususiyatlari va usullari uchun o‘z mahalliy ishlov beruvchilaringizni qo‘shish imkoniyatini qo‘llab-quvvatlaydi. Shu bilan birga, JS kodi o'zining izolyatsiya qilingan muhitida yashaydi va mahalliy qism haqida hech narsa bilmaydi - u shunchaki kerakli JS usullarini tortib oladi yoki kerakli JS xususiyatlarini o'zgartiradi. Hammasi standart DOM veb-saytida joylashgan bo'lib, unga mahalliy dastur bilan bog'liq yangi elementlar qo'shiladi.



React Native-da ilovalarni yaratishda, ishlab chiquvchi deyarli har doim Objective-C, Java yoki C# da mahalliy qismni amalga oshirishi kerak bo'ladi va mahalliy dasturni boshqarish JavaScript-dan keladi. Aslida, JavaScript mexanizmi alohida mavjud bo'lgan WebView elementidir. O'zaro ta'sir PhoneGap misolida bo'lgani kabi bir xil JS ko'prigi orqali sodir bo'ladi. Biroq, React Native-da JS kodi veb-DOM daraxtini emas, balki mahalliy dasturni boshqaradi.

Shuni esda tutingki, iOS cheklovlari tufayli (JITni amalga oshirishning hech qanday usuli yo'q), JavaScript kodi kompilyatsiya qilish o'rniga, tezda talqin qilinadi. Umuman olganda, bu unumdorlikka sezilarli ta'sir ko'rsatmaydi haqiqiy ilovalar, lekin eslash kerak.

Endi klassik Xamarin.iOS va Xamarin.Android-ni ko'rib chiqamiz, chunki Xamarin.Forms (Windows UWP-ni qo'llab-quvvatlaydi) ularga qo'shimcha hisoblanadi.



Xamarin maqsadli operatsion tizim bilan ishlash uchun Mono kutubxonasidan foydalanadi, bu sizga P/Invoke mexanizmi yordamida mahalliy kodni chaqirish imkonini beradi. Bundan tashqari, iOS/Android-da mahalliy API-lar bilan bog'lanish uchun ishlatiladi. Ya'ni, barcha ommaviy mahalliy API usullari uchun o'ramlar C# da yaratiladi, bu esa o'z navbatida tizim API'larini chaqiradi. Shunday qilib, siz Xamarin ilovangizdan barcha tizim API-lariga kirishingiz mumkin.

Va nihoyat, Qt ni ko'rib chiqaylik, chunki tajribali ishlab chiquvchilardan bu haqda juda ko'p savollar bor.



Qt - bu "o'z-o'zidan narsa", bu ham afzalliklarga, ham cheklovlarga ega. Qt kutubxonalari oddiygina barcha operatsion tizimlarda joylashgan C++ tizim API lariga ulanadi. Past darajali mexanizmlar foydalanuvchi interfeysini ko'rsatish uchun ishlatiladi, lekin o'zlarining grafik dvigatel, mahalliy uslubni qo'llab-quvvatlash. Bunday holda, Android-da siz Java API-ga maxsus ko'prik (JNI ko'prigi) orqali kirishingiz kerak va Windows UWP uchun Open GL ES qo'ng'iroqlarini DirectX-ga o'zgartirgichdan foydalaning, chunki Open GL UWP uchun mavjud emas.

Xulosa qilish uchun: barcha o'zaro faoliyat platformalar operatsion tizimlarning standart mahalliy imkoniyatlaridan foydalanadi, etuk va yaratilmoqda. tajribali jamoalar va IT-sanoat gigantlari ko'magida ochiq manbalar hamjamiyati. Va nihoyat, "eng kuchli" argument vaqti keldi.

Mif 4. Sekin

O'zaro platformalar bo'yicha nizolarda odamlar foydalanishni yoqtiradigan muhim kozoz - bu past ishlash. Shunga qaramay, nima bilan solishtirish va qanday to'tiqushlarni hisoblash kerakligiga bog'liq.

Eslatib o'tamiz, o'zaro platforma ilovalarining o'ziga xos xususiyati ko'prik bilan bog'langan ikkita dunyoning parallel mavjudligidir:

  • PhoneGap: HTML/JS va Native Java / Objective-C / C#;
  • React Native: JS va Native Java / Objective-C / C#;
  • Xamarin: Mono va Native Java/Objective-C;
  • Qt: C++ va Native Java / Objective-C.

Shunday qilib, ishlashni taqqoslashda ishlash tezligini hisobga olish kerak:

  • o'zaro platforma qismi;
  • mahalliy qism;
  • ko'prik.

Agar siz qidiruv tizimiga kirsangiz, masalan, mahalliy reaksiya Tez ishlashga qarshi, siz ko'plab turli testlarni ko'rishingiz mumkin va ularning ko'pchiligi ko'prikdan faol foydalanish, shu jumladan platformalararo koddan UI faol manipulyatsiyasi bilan ishlashning keskin pasayishini ta'kidlaydi. Xamarin uchun vaziyat bir xil ko'rinadi - o'zaro faoliyat platforma qismi juda tez va ma'lumotlarni qayta ishlashda mahalliy qism bilan solishtirish mumkin, ammo ko'prikdan foydalanganda unumdorlik pasayishi mumkin. Qt odatda C++ darajasida ishlaydi, bu o'z-o'zidan tez. Agar biz PhoneGap-ga asoslangan echimlarni ko'rib chiqsak, unumdorlik ko'p jihatdan WebView-ga bog'liq bo'ladi, ammo siz hali ham JavaScript kodidagi UI-ni faol ravishda o'zgartirmasligingiz yoki ilmiy hisob-kitoblarni amalga oshirmasligingiz kerak.

Sekinmi? Ha, ko'prik orqali operatsion tizim bilan noto'g'ri shovqin tufayli ishlashning pasayishi mumkin. Biroq, kross-platforma olamlarining o'zlari xuddi mahalliy dunyolar kabi tezdir.



 


O'qing:



Texnik fikrlash uchun mini test

Texnik fikrlash uchun mini test

Ixtisoslashtirilgan ta'lim sharoitida o'smirlarning umumiy qobiliyatlarini kompleks diagnostika qilish III QISM 3. Kognitiv soha diagnostikasi 3.3. Sinov...

Kvartira, uy va boshqa ko'chmas mulkni sotish to'g'risida e'lonni bepul yuborish Uyni tez sotish to'g'risida e'lon yuborish

Kvartira, uy va boshqa ko'chmas mulkni sotish to'g'risida e'lonni bepul yuborish Uyni tez sotish to'g'risida e'lon yuborish

Uyni sotish - bu bir qator nuanslarni hisobga olishni talab qiladigan murakkab jarayon. Jarayonni tezlashtirish uchun mutaxassislar mutaxassislarga murojaat qilishni maslahat berishadi. Biroq...

Maktublarni o'qish orqali pul ishlash Xatlarni o'qish, lekin mukofot

Maktublarni o'qish orqali pul ishlash Xatlarni o'qish, lekin mukofot

Ishni boshlashingiz mumkin bo'lgan internetda pul ishlashning eng oddiy yo'li - reklama beruvchilar tomonidan sizga yuborilgan reklama xatlarini o'qib pul ishlash...

Mavzu bo'yicha material: "Chun qalbim bilan" kontsert dasturi barcha epizodlari bilan butun qalbim bilan teleko'rsatuv

Mavzu bo'yicha material: Konsert dasturi

Umuman olganda, dastur sovet xalqining oldindan aytib bo'lmaydigan va murakkab taqdirlari haqida gapirib berdi. Aksariyat tomoshabinlar ko'z yoshlarini tiya olmadilar...

tasma tasviri RSS