Sayt bo'limlari
Muharrir tanlovi:
- Shaxsiy ma'lumotlarni qayta ishlash tamoyillari, shartlari va maqsadlari Korxonada shaxsiy ma'lumotlarni qayta ishlash maqsadlari
- Qozog'istonda onlayn kreditlar - eng yaxshi takliflar
- Mantiq algebra funksiyalarining superpozitsiyasi Monotonik mantiqiy funksiyalar
- Axborot tizimi nima?
- Mantiqiy ifodadan mantiqiy sxemaga o'tish va aksincha
- Nijniy Novgorod rus pochtasining sharmandaligi
- Geografik axborot tizimlarini ishlab chiqish GISning asosiy vazifalari
- Vektor va rastr grafika
- "To'g'ridan-to'g'ri elektr toki" taqdimoti "O'tkazgichlarning ketma-ket va parallel ulanishi" mavzusidagi fizika darsi uchun taqdimot (8-sinf)
- Birlamchi kalitlarni kasr sonli ma'lumotlar turlarini yaratish
Reklama
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 direktoriHar 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 portaliQisqa 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:
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 rivojlanishMahalliy 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 rivojlanishUshbu 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:
Kamchiliklari:
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 chiqaruvchisiMobil 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?
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 xususiyatlariTurli 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:
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:
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
O'zaro platformalarni ishlab chiqishning kamchiliklari1. Mobil qurilmaga kuchli qaramlikPlatformalararo 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 interfeysiFoydalanuvchilar 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 kurashO'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:
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. SehrAjam 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:
"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:
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 tayoqBu 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. SekinO'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:
Shunday qilib, ishlashni taqqoslashda ishlash tezligini hisobga olish kerak:
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. |
Mashhur:
Yangi
- Qozog'istonda onlayn kreditlar - eng yaxshi takliflar
- Mantiq algebra funksiyalarining superpozitsiyasi Monotonik mantiqiy funksiyalar
- Axborot tizimi nima?
- Mantiqiy ifodadan mantiqiy sxemaga o'tish va aksincha
- Nijniy Novgorod rus pochtasining sharmandaligi
- Geografik axborot tizimlarini ishlab chiqish GISning asosiy vazifalari
- Vektor va rastr grafika
- "To'g'ridan-to'g'ri elektr toki" taqdimoti "O'tkazgichlarning ketma-ket va parallel ulanishi" mavzusidagi fizika darsi uchun taqdimot (8-sinf)
- Birlamchi kalitlarni kasr sonli ma'lumotlar turlarini yaratish
- 1c chakana savdoda tovarlarni taqqoslash 8