Põliselanik või mitte? Neli müüti platvormidevahelise arenduse kohta. Platvormideülene rakenduste arendamine algajatele See tähendab, et platvormideülene arendus on halb

Platvormideülene arendus võimaldab luua mobiilirakenduse, mis töötab samaaegselt iOS-is ja Androidis. See on odav alternatiiv iga operatsioonisüsteemi jaoks eraldi rakenduse loomisele.

Platvormideülese arenduse tunnused

Ühe rakenduse arendamine erinevatele platvormidele on korraga hea ja halb. Hea, sest seda saab teha kiiremini ja odavamalt kui mitu rakendust iga operatsioonisüsteemi jaoks. Ja see on halb, sest kompromiss mõjutab rakenduse tööd.

Enne projekti alustamist tuleb arvestada järgmiste funktsioonidega:

  • Platvormideüleses keskkonnas kirjutatakse kood ühe korra. Et rakendus töötaks mõnes teises operatsioonisüsteemis, tõlgitakse kood mõnda teise programmeerimiskeelde. Arendusele kulub aega ja raha 1,5 korda vähem.
  • Rakendused ei pruugi korralikult töötada. Platvormideüleses arenduses on võimatu arvestada iga operatsioonisüsteemi arhitektuuriga töötamise kõiki nüansse, mistõttu võivad rakendused töötada aeglasemalt kui spetsiaalselt iOS-i või Androidi jaoks välja töötatud.
  • Liidese ja elementide disaini nõuded on operatsioonisüsteemides erinevad. Näiteks iOS-il pole nuppu Tagasi, nagu Androidil. Ühtse disaini väljatöötamisel tuleb seda punkti arvestada: iOS-is nupp kas jääb, aga ei tööta või tuleb see käsitsi välja lõigata, mis tähendab lisatööd koodiga.

Enamikku ühelt platvormilt teisele migreerumisel tekkivaid vigu saab käsitsi lahendada, kuid "mitte-natiivse" operatsioonisüsteemiga kohanemise probleeme on võimatu täielikult lahendada.

Nii et platvormideülene arendus on halb?

Ei, platvormideülene arendus on hea seni, kuni te ei nõua sellelt rohkem, kui see anda suudab.

Selle valiku saab valida järgmistel juhtudel:

  • Hõlmab kõiki operatsioonisüsteeme piiratud eelarvega. Kui sihtrühm kasutab aktiivselt iOS-i või Androidi, võite alustada ühe operatsioonisüsteemi jaoks mõeldud natiivse rakendusega. Kui maksimaalne katvus on kohe oluline, on parem valida platvormideülene valik.
  • Kontrollige niši. Kui on paljulubav idee, aga sa pole kindel, et see toimib, on kohe suure eelarve panustamine arendusse riskantne. Mõttekas on alustada platvormideülese arendusega, uurida kasutajate reaktsioone ja teha sellest lähtuvalt strateegilisi otsuseid.
  • Rakendus ei kasuta keerulisi animatsioone ega teosta arvutusi. Need toimingud koormavad seadet tõsiselt ja platvormideülene rakendus pole konkreetse platvormi ressursside täielikuks kasutamiseks optimeeritud.
  • Rakendus kasutab ainult seadme põhifunktsioone. Näidake teavet, laadige üles faile, kasutage geograafilist asukohta, esitage tellimus – platvormideülene rakendus saab kõige sellega hakkama. Vaja on seadme võimaluste sügavamat integreerimist – peate valima omaarenduse.
  • Ettevõtte rakendus töötajatele. Kui rakendus on välja töötatud kitsaste sisemiste ülesannete jaoks ja inimesed töötavad sellega isiklike vidinate kaudu, on platvormideülene rakendus parim valik.

Pole universaalset vastust küsimusele, kas platvormideüleseid lahendusi saab teie projekti jaoks kasutada. Täitke allolev vorm: uurime teie projekti ja valime selle elluviimiseks parima võimaluse.

Platvormideülesed rakendused – olla või mitte olla? Küsimus pole lihtne, kuna igal ettevõttel on mobiilirakendustele oma eesmärgid ja nõuded. Kuid täna selgitame kindlasti välja, milline arendus on teie jaoks õige.

Mis on platvormidevahelised rakendused?

Platvormidevahelised rakendused on rakendused, mis töötatakse välja ja seejärel töötavad nii Androidis kui ka iOS-is. Arenduse olemus seisneb selles, et rakenduse lähtekood tõlgitakse natiivseks, st konkreetsele mobiilseadmele arusaadavaks. Selle tulemusena saab programm suhelda sellesse installitud operatsioonisüsteemiga.

Tuletame teile meelde: erinevalt platvormideülestest rakendustest on kohalikud rakendused kirjutatud konkreetse OS-i jaoks.

Platvormideülese arenduse plussid

  • kasutajabaasi laienemine, kuna rakendus ilmub korraga mitmesse poodi;
  • Üks lähtekood välistab vajaduse palgata iga platvormi jaoks mitu arendajat;
  • 75% platvormideülese rakenduse koodibaasist saab uuesti kasutada, kohandades seda uute projektide jaoks.

Platvormideülese arenduse puudused

1. Suur sõltuvus mobiilseadmest

Platvormidevahelised rakendused tavaliselt võrguühenduseta ei tööta. Seetõttu sõltuvad nende võimalused suurel määral sellest, kas kasutajal on stabiilne Interneti-ühendus. Samuti on oluline operatsioonisüsteemi versioon ja seadme mudel. Platvormideülene rakendus vähendab peaaegu garanteeritult üle ühe või kahe aasta vanema seadme jõudlust. Kuigi omarakendus töötab stabiilselt isegi vana vidinaga, millel on aegunud püsivara. Nii et kui te ei soovi, et teie kliendid loeksid vihaseid arvustusi selle kohta, kuidas teie rakendus lõpuks kellegi nutitelefoni "lõpetas", valige omaarendus.

2. Ebasõbralik kasutajaliides

Kasutajad on oma vidinate välimuse ja funktsionaalsusega nii harjunud, et ootavad neile installitud rakendustelt maksimaalset reageerimisvõimet. Nad tahavad olla kindlad, et iga nupp on oma õigel kohal, et leht kerib nende jaoks optimaalse kiirusega ja et igale tegevusele järgneb kohene vastus. Platvormidevahelistel rakendustel on tavaliselt raskusi seadmega kohanemisega ja nad ei saa kiidelda jõudlusega.

Probleem on selles, et platvormidevahelise arenduse jaoks puuduvad juhised - OS-i loojate arendusstandardid. Seetõttu pole Androidi jaoks loodud platvormideülene rakendus iOS-i kasutaja jaoks mugav ja vastupidi. Loomulikult saate iga platvormi jaoks luua eraldi kujundused, kuid tööjõukulude osas võrdub see kahe erineva rakenduse loomisega, kuigi samas keeles.

3. Võitlus arendusvahendite seas ülimuslikkuse pärast

Platvormiüleste arenduslahenduste turul muutub konkurents iga päevaga karmimaks. Seni on arendajate seas populaarseimad React Native ja Xamarin, kuid neid võib vabalt ületada näiteks Vue Native. Sel juhul kaotavad võistluse endised liidrid oma kõige olulisema eelise – operatiivkoodi toe. Ja see võib juhtuda mis tahes platvormiülese tööriistaga.

Native areng ei karda sellist probleemi. Uute tööriistade kasutuselevõtt toimub järk-järgult ja mitmete programmeerimiskeelte tundmine, mis on spetsialistile kohustuslik, võimaldab tal kiiresti mõista kõiki uuendusi. Lisaks on iga operatsioonisüsteemi ümber tohutud professionaalsed kogukonnad, mille tulemusel kõik tekkivad raskused lahendatakse sarnase probleemi otsimisega foorumitest, kus tuhanded inimesed on valmis seda soovitama ja aitama lahendada.

Milline rakendus on teie ettevõtte jaoks õige?

Enne sellele küsimusele vastamist on oluline oma ettevõtet analüüsida. Tarbijasegmendid, aja- ja raharessursi väärtus, rakenduse ja kasutajaseadmetega integreerimise soovitud sügavus ning selgelt määratletud pikaajalised eesmärgid – miinimum, millest teie valik sõltub. Kuid teeme selle lihtsamaks, kui vastate asjakohastele küsimustele kohe.

1. Mida teie publik kasutab?

Kui teate, et iOS-i ja Androidi kasutajate suhe teie klientide seas on ligi 50/50, valige omaarendus. See näitab, et austate kõigi oma klientide vajadusi võrdselt, sõltumata nende sissetulekutasemest.

Seost mobiilseadme valiku ja maksevõime taseme vahel kinnitas taaskord App Annie. Google Play ja App Store'i 2018. aasta esimese kvartali mobiilirakenduste allalaadimiste ja müükide arvu uuringust selgus, et Androidi nutitelefonide kasutajad laadisid alla 135% rohkem rakendusi kui iOS-i poe külastajad. Samal ajal tõi App Store oma omanikele 85% rohkem tulu kui Google Play.

Tee eduni on ilmne: mängige kahel väljakul korraga. Täpsemalt kahes poes. Lihtsalt arvutage, millises neist peaks rakendus esimesena ilmuma. Muidugi, välja arvatud juhul, kui samaaegne väljaandmine on osa teie digitaalsest strateegiast).

2. Kui palju sul arendusaega on?

Projekti rahalised kulud sõltuvad vastusest sellele küsimusele. Fakt on see, et arendusele kuluva aja seisukohalt tundub platvormideülene rakendus ainult tulusam lahendus. Tegelikult võib selle platvormidele kohandamine võtta peaaegu sama kaua kui kahe omarakenduse loomine, kuna arendajad peavad probleemsete piirkondade jaoks kirjutama täiendavaid koodijuppe.

Natiivse rakendusega selliseid probleeme kindlasti ei esine, mis on väga oluline, et hoida vaatajaskonda, kes on vigade ja vigade suhtes äärmiselt talumatu. Compuware statistika kohaselt on 79% kasutajatest valmis rakenduse taaskäivitamiseks, kui see esimesel käivitamisel korralikult ei töötanud, kuid ainult 16% on nõus andma sellele uue võimaluse. Teised desinstallivad tõenäoliselt programmi lihtsalt.

3. Milliseid seadme funktsioone kavatsete kasutada?

Oleme juba rääkinud tõsiasjast, et ainult algrakendused on võimelised rasket graafikat kiiresti ja kvaliteeti kaotamata taasesitama. Kuid kohaliku arenduse tehnilised eelised ei piirdu sellega. Võtke näiteks Facebooki rakendus. Tänu Androidi ja iOS-i jaoks eraldi versioonide väljaandmisele on kerimine muutunud sujuvamaks, piltide laadimise ajad on vähenenud ja kõik vahemälu probleemid on lahendatud.


Lisaks on omarakendustel otsene juurdepääs kõikidele seadme teenustele, mis võimaldab teil saada teavet kasutaja geograafilise asukoha või tema kontaktide loendi kohta. Platvormideülesed rakendused peavad kasutama spetsiaalseid natiivseid pistikprogramme, mis mõjutab negatiivselt andmeedastuskiirust ja koormab seadme RAM-i üle.

4. Milliste tulemuste poole püüdlete?

Digistrateegia on nimekiri eesmärkidest, mida teie ettevõte saab digitaalseid tööriistu kasutades saavutada. Viimase valik sõltub suuresti sellest, millist kasu sa lõpuks saada tahad.


Jaotage protsess ideest tulemuseni punktide kaupa, võttes arvesse kõiki olemasolevaid ressursse. Avastused võivad olla kõige ootamatumad.

Näiteks võite avastada, et on liiga kulukas muuta oma funktsioonide ja interaktiivsete elementidega tundlikust veebisaidist platvormideülene rakendus, nagu te algselt soovisite. Või lõpuks veenduge, et mobiilisait kaotab alati mobiilirakendusele, täpselt nagu platvormideülene arendus kaotab omaarendusele. Ja põhjuste hulgast leiate need, mida me eespool kirjeldasime.

Järeldus: platvormideülene rakendus on kasulik ainult ühel juhul - loote rakenduse demoversiooni, mis on piiratud aja, raha ja kõrgelt spetsialiseerunud spetsialistidega. Kõigil muudel juhtudel annab natiivne rakendus teile mitu korda rohkem eeliseid, kuna see on kvalitatiivselt erinev arengutase.

Mobiilirakenduste turg on üle kümne aasta vana, kuid areneb endiselt kiiresti. Ettevõtete nõudlus kasvab pidevalt ja see ületab endiselt oluliselt pakkumist, mis toob kaasa pideva arenduskulude kallinemise. Üks lahendus selle protsessi kulude vähendamiseks on platvormideülene arendus, kui kõigil platvormidel kasutatakse sama koodi.

Viimati puudutasime platvormideüleste mobiilirakenduste arendamist ja sellest ajast on palju muutunud. Taas on aeg rääkida meetoditest ja vahenditest.

Lähme kõigepealt uuesti üle terminoloogia.

Native

Kui arendajad kasutavad rakenduse kirjutamise ajal konkreetse platvormi jaoks vastuvõetud programmeerimiskeelt, olgu selleks siis Objective-C ja Swift iOS-i jaoks, või nimetatakse sellist rakendust emakeeleks (inglise keelest - emakeel, loomulik).

Natiivsete rakenduste eelised:

  • kiirus ja liidese reaktsioon. Rakendus reageerib klikkidele koheselt, animatsioonil, kerimisel, andmete vastuvõtmisel ja väljastamisel viivitusi praktiliselt ei esine;
  • selge ja lihtne juurdepääs seadme funktsioonidele ja anduritele. Arendaja jaoks pole geograafilise asukoha määramise, tõukemärguannetega töötamine, fotode ja videote tegemine läbi kaamera, heli, kiirendusmõõturi ja muude andurite probleem;
  • oskus töötada põhjalikult nutitelefoni funktsioonidega. Nagu eelmises lõigus, rakendatakse selliseid asju nagu animatsioonid, keerukate liideste loomine ja närvivõrkude toimimine otse seadmetes, võib-olla mitte lihtsalt, vaid etteaimatavalt;
  • . Native rakendused töötavad tavaliselt "platvormi" liidese elementidega: menüüd, navigeerimine, vormid ja kõik muud kujunduselemendid on võetud operatsioonisüsteemist ning on seetõttu kasutajale tuttavad ja arusaadavad.

Puuduseks on ainult üks - arendus- ja tugiteenuste kõrge hind, sealhulgas seetõttu, et iga platvormi jaoks peate kirjutama oma koodi.

Mobiilirakenduste turu kasvuga ei ole arendajad muutunud mitte lihtsalt kalliks, vaid ka väga kalliks ning native arendust ei saa iga ettevõtte omanik endale lubada. Kuid mobiilirakenduse väljatöötamata jätmine võib teile tulevikus rohkem maksma minna. Reaalajas sisestamine aitab teil raha säästa – kirjeldage oma ideed ja märkige umbkaudne eelarve, mida soovite täita, .

Ja mitte sugulased

Platvormidevahelised rakendused on kirjutatud mitmele platvormile korraga ühes keeles, mis ei ole emakeel. Kuidas saab selline kood erinevates seadmetes töötada? Siin on ka kaks lähenemist.

Esimene on see, et rakenduse avaldamiseks ettevalmistamise etapis muudetakse see transpileri abil konkreetse platvormi jaoks natiivseks. Tegelikult on üks platvormideülene programmeerimiskeel "tõlgitud" teise keelde.

Teine on see, et saadud koodile lisatakse teatud ümbris, mis juba seadmes töötades tõlgib käigult kõned mitte-natiivsest koodist loomulikele süsteemifunktsioonidele.

Eeldatakse, et suuremat osa sellest koodist saab platvormide vahel üle kanda – on ilmne, et näiteks ostude sooritamise, kauba ostukorvi salvestamise, taksole marsruudi arvutamise, messengeris sõnumi kirjutamise loogika ei muutu. olenevalt sellest, kas kliendil on Android või iOS. Peame lihtsalt täiustama platvormide kasutajaliidest ja UX-i, kuid nüüd saab teatud piirides isegi seda kombineerida - näiteks hamburgeri menüü on aktiivselt kasutusel nii Androidis kui iOS-is. Nii et isegi liideses paranduste tegemine, et rakendus vastaks soovitud platvormi vaimule ja kirjale, on soovi, arendustöö vajaliku kiiruse ja kvaliteedi küsimus.

Eelised:

  • maksumus ja arenduskiirus. Kuna koodi tuleb kirjutada palju vähem, väheneb töö maksumus;
  • oskus kasutada ettevõtte sisemisi ressursse. Nagu me hiljem näitame, saavad platvormidevahelise rakenduste arendamise sageli teha teie olemasolevad programmeerijad.

Puudused:

  • mittenatiivne liides või vähemalt vajadus töötada iga platvormi liidesega eraldi. Igal süsteemil on elementide kujundamisel oma nõuded ja mõnikord välistavad need üksteist. Seda tuleb arenduse käigus arvestada;
  • probleeme keeruliste funktsioonide rakendamisel või võimalikke probleeme isegi lihtsate protseduuridega töötamisel, mis on tingitud vigadest arendusraamistikes endis. Platvormideülene keskkond tõlgib ainult süsteemikutsete ja liideste päringud süsteemile arusaadavasse vormingusse ja seetõttu võib selles etapis raamistikus endas esineda nii arusaamisraskusi kui ka vigu;
  • töö kiirus. Kuna platvormideülene keskkond on koodi pealisehitus (mitte alati, kuid teatud olukordades), on sellel kasutaja toimingute töötlemisel ja tulemuste kuvamisel oma viivitused ja pausid. See oli eriti märgatav veel paar aastat tagasi tänapäevastest väiksema võimsusega nutitelefonide puhul, kuid nüüd, mobiilseadmete jõudluse kasvuga, võib selle juba tähelepanuta jätta.

Nagu näete, on need kaks meetodit praktiliselt teineteise peegelpilt – tõsiasi, et natiivsel rakenduste arendamisel on eelised, platvormideülesel rakenduste arendamisel on puudused ja vastupidi.

Populaarsed platvormid ja tööriistad platvormideüleseks mobiiliarenduseks

Nagu me eespool kirjutasime, on kaks lähenemisviisi – koodi muutmine natiivseks koostamisetapis või teatud ümbrise lisamine, mis tõlgib kõned süsteemi ja sealt välja.

Cordova ja PWA on kaks tööriista, mis töötavad täpselt ümbrise ideoloogias.


Cordova ja HTML5

Üks populaarsemaid valdkondi platvormideüleses programmeerimises, mida sageli nimetatakse ka PhoneGapiks. Tegelikult luuakse mobiiliveebisait, mis on “mähitud” väikesesse platvormikoodi, mis edastab kõned süsteemist rakendusse ja tagasi.

Kõik miinused ja eelised on siin selgemalt väljendatud kui kusagil mujal. Saate kasutada veebiarendajaid (põhitehnoloogiatena HTML, CSS ja JavaScript) ning teha rakendusest esimese versiooni kuu või isegi paari nädalaga suhteliselt väikese raha eest. Jah, see aeglustub töös, võib-olla pole sellel täiesti täpset geograafilist asukohta, kuid see töötab kõigis seadmetes ja võimaldab teil vähemalt mobiilseadmete klientide nõudlust testida.

Selle lähenemisviisi jaoks on loodud tohutult palju raamistikke, kuid need kõik teevad sisuliselt sama asja. Nende erinevus seisneb selles, et Cordova (PhoneGap) ei sea teie HTML5 projekti loogikale ja kasutajaliidesele piiranguid ja malle ning raamistikud töötavad oma valmis kasutajaliidese elementidega, mis imiteerivad mobiiliplatvorme ja oma arendusloogikat. Selle lähenemisviisi näide on: Ionic Framework – ümbris; Framework7, Mobile Angular UI, Sencha Touch, Kendo UI – liidese raamistikud.

PWA

Moodne Google'i tehnoloogia on samad veebirakendused, kuid teatud tehnoloogiate kasutamise kaudu (peamiselt nn Service Worker – taustal töötavad skriptid ja Web App Manifest – veebirakenduse kirjeldus mobiilile arusaadavas vormis süsteem ) saavad nad töötada algsetena ilma PhoneGap-i ümbriseta. Neid saab installida avakuvale, rakenduste poest mööda minnes, töötada võrguühenduseta, töötada tõukemärguannetega ja omafunktsioonidega.

Probleem on selles, et kõik platvormid ei toeta neid "teatud tehnoloogiaid". See puudutab peamiselt Apple'i, kellele ilmselt väga ei meeldi võimalus levitada rakendusi App Store'ist mööda minnes.

Võttes arvesse kõiki HTML5 lahenduste puudujääke, on paljud ettevõtted loonud tööriistad, mis võimaldavad kirjutada koodi ühes, mitte-emakeeles ja seejärel tõlgitakse see emakeeleks. See tapab kaks kärbest ühe hoobiga: koodibaasid on ainult üks ja rakendused on võimalikult lähedased natiivsele.


Xamarin

Microsofti platvorm. Ettevõtte arenduse standardne programmeerimiskeel on C# ja platvormideülene arenduskeskkond Visual Studio. Väljund on iOS-i, Androidi ja Windowsi natiivsed rakendused. Tõsi, mõõtudelt suhteliselt suur.

Reageerige emakeelena

Platvorm – rakendused on kirjutatud JavaScriptis ja kasutades CSS-i sarnaseid stiile. Liides osutub natiivseks ja koodi tõlgendatakse platvormil, mis annab sellele vajaliku paindlikkuse.

Olles suhteliselt noor platvorm, kannatab React Native endiselt (kuigi mitte katastroofiliselt) arendustööriistade ja dokumentatsiooni puudumise all.

Laperdamine

Loomulikult ei saanud selline hiiglane nagu Google ignoreerida Androidi ja iOS-i rakenduste platvormidevahelise arendamise teemat. Flutter, ehkki praegu ainult beetaversioonis, kasutab React Native'ist ja Xamarinist erinevat lähenemist. See ei muuda lähtekoodi natiivseks koodiks, mida platvorm käivitab, vaid tegelikult joonistab nutitelefoni ekraanile akna ja renderdab kõik elemendid ise. Kasutatud keel on "varaline" Dart, mille Google lõi JavaScripti täiustatud versioonina.

Sellel on nii eeliseid (näiteks väliselt identsed liidesed) kui ka puudusi (näiteks liidese ümberjoonistamine nõuab teatud mälumahtu ja protsessori aega).

Platvorm areneb kiiresti ning Google investeerib sellesse palju vaeva ja raha. Kuid võrreldes Flutteriga tundub isegi React Native olevat väga väljakujunenud ja muljetavaldav ökosüsteem.

Mida valida

Tõenäoliselt hakkab teie pea juba ringi käima, kuid teil pole endiselt õrna aimugi, mida valida. Esitame teile abiks lihtsa küsimuste loendi:

  • Kas see peaks mis tahes seadmega kuidagi töötama? Vali HTML alusena;
  • Kas teil on piisavalt raha, te ei kiirusta ja soovite kõrgeima kvaliteediga rakendust? Teil on otsene tee kohalik areng;
  • Kas teil on "sisseehitatud" veebiarendaja või soovite lihtsalt kiiresti ja lihtsalt mõnda mobiilirakendust töös proovida? Siin saame soovitada Cordova/HTML või PWA;
  • Kas teil on oma CRM-süsteem ja C#-arendaja, kes seda toetab? Võta see Xamarin;
  • sa “tahad proovida”, aga pead kõik ilusaks ja moekaks tegema? Eemale vaatama Reageerige Native või Flutter.

Võite minna ka teiselt poolt. Vaadake oma rakenduses vajalikke funktsioone ja minge sealt edasi:

  • lihtne visiitkaardirakendus? Võtke Reage Native või HTML5 ja saate minimaalse hinnaga kaks platvormi;
  • Kas teil on suure liiklusega veebisait ja teil on vaja testida oma kohalolekut mobiiliruumis? HTML5;
  • keerukad rakendused, millel on juurdepääs soovitud seadme funktsioonidele? Native areng, Xamarin, React Native.

Platvormideülene arendus ei ole imerohi

Valides tuleb lähtuda määratud ülesannetest ja olemasolevatest ressurssidest. Platvormideülene arendus on hea ja arusaadav suund, kuid oma plusside ja miinustega, mida tuleb enne projekti käivitamist silmas pidada. Täidetud platvormideülene rakendus on ilmselgelt parem kui tegemata omarakendus. Saate seda kiiresti ja odavalt arendada, poodi üles laadida ja lihtsalt kontrollida kasutajate nõudlust – kas keegi otsib teie rakendust, kas installib selle, milliseid funktsioone nad kasutavad. Sellise eksperimendi tulemuste põhjal on võimalik otsustada mobiilisuuna saatuse ja sellesse tehtavate investeeringute üle teie ettevõttes.

Kas teil on platvormideüleste rakenduste kohta endiselt kahtlusi ja küsimusi? Lugege, kuidas lõime rakenduse ühe linna spordiasutuse kiireks liitumislepingu saamiseks ja proovige rakendust igasuguste teenuste eest tasumiseks - alates eluasemest ja kommunaalteenustest kuni veebipoodide tellimusteni. Veelgi parem, registreeruge tasuta konsultatsioonile, näidates ära ligikaudse eelarve ja idee lühikirjelduse, või võtke ühendust meie juhi Katyaga telefoni teel

Nutitelefonid saavad päikese käes üha rohkem ruumi, mitte ainult kasside fotode ja XXX videote tarbimise vahendina, vaid ka töövahendina. Seetõttu kasvab nõudlus mobiiliarenduse järele. Üldtunnustatud seisukoht on, et tööjõud ja lahe on Objective-C/Swift iOS-i jaoks ja Java/Kotlin Androidi jaoks. Kahtlemata on see raske töö ja lahe, kuid on palju reaalseid stsenaariume, mille puhul platvormideüleste raamistike kasutamine on kohalike tööriistadega võrreldes eelistatavam.

Mõned arendajad eeldavad, et platvormideülesed raamistikud lahendavad kõik nende eluprobleemid, samas kui teised on nende suhtes vaenulikud. Mõlemal "sõdival leeril" on oma väärarusaamad, mis on põhjustatud arusaamatusest, kuidas ja mis toimib. See lisab õli tulle, sest tehniliste argumentide asemel kasutatakse emotsioone.

Ka arendajate, eriti algajate seas on platvormideüleste mobiiliraamistike kohta palju müüte. Meie artiklis analüüsime neist kõige populaarsemaid. Kuid kõigepealt vaatame mobiiliarendust ettevõtte pilgu läbi, mis pakub raha kogu IT blackjacki jaoks.

Miks me vajame platvormiüleseid tööriistu?

Ajalooliselt on arvutiturul alati olnud konkurents ja iga tootja pakkus oma operatsioonisüsteemidele ja seadmetele rakenduste arendamiseks optimaalset nn natiivsete tööriistade komplekti.

Natiivsed tööriistad = pakutud ökosüsteemi omaniku poolt.

Kõik muud “natiivsuse” märgid on sekundaarsed - käitumine ja rakenduse liides, juurdepääs OS-i võimalustele, jõudlus jne.

Lisaks selgus peaaegu alati, et kohalikud tööriistad ei ühildu üksteisega mitte ainult arenduskeelte, aktsepteeritud tavade ja arhitektuuride tasemel, vaid ka operatsioonisüsteemi ja raamatukogudega töötamise mehhanismide tasemel. Sellest tulenevalt tuli samade algoritmide ja liideste rakendamiseks kirjutada rakendus mitmesse keskkonda erinevates programmeerimiskeeltes ning seejärel toetada seda põhimõttel “üks käsk platvormi kohta”. Samas on erinevatel platvormidel olevate rakenduste võimalused ja välimus peaaegu alati 90% identsed. Lõbu pärast võrrelge oma lemmikprogrammide rakendamist iOS-i ja Androidi jaoks.

Teine oluline punkt on vajalike teadmiste ja kogemuste olemasolu meeskonna sees: kui neid pole, siis võtab õppimine aega.

Nende mõlema probleemi lahendamiseks on turule juba ammu ilmunud platvormidevahelised arendustööriistad (mitte ainult mobiilid), mis pakuvad:

  • maksimeerida ühist koodibaasi ühes programmeerimiskeeles, et toodet oleks lihtsam arendada ja hooldada;
  • kasutada olemasolevaid kompetentse ja spetsialiste rakenduste juurutamiseks uutel platvormidel.

Kuna praegu on palju programmeerimiskeeli (ja keskkondi) (ja neid keeli rääkivaid spetsialiste), on platvormidevaheliseks arendamiseks päris palju tööriistu. Näiteks keskendume meie piirkonnas populaarsetele PhoneGap, Xamarin, React Native ja Qt.


Nüüd saame rääkida müütidest.

Müüt 1. Maagia

Kõige levinum müüt, mis algajaid arendajaid kummitab, on seotud usuga superalgoritmidesse (ja neid loonud superprogrammeerijatesse), mis muudavad platvormidevahelised rakendused võluväel natiivseteks. Midagi sarnast "JavaScripti koodi teisendamine Swiftiks ja seejärel Swifti rakenduse kompileerimine". Seda müüti õhutavad platvormideüleste tööriistade arendajad ise, lubades selle tulemusel luua "natiivseid rakendusi". Ja asi pole selles, et keegi siin valetaks, vaid rikas kujutlusvõime ja põhimehhanismidest arusaamatus sunnivad mõnikord arendajaid šamaanitehnikatele mõtlema.

Platvormiüleste lahenduste peamine põhimõte on koodi jagamine kaheks osaks:

  • platvormideülene, elades virtuaalses keskkonnas ja omades piiratud juurdepääsu sihtplatvormi võimalustele spetsiaalse silla kaudu;
  • emakeelena, mis pakub rakenduse initsialiseerimist, võtmeobjektide elutsükli haldamist ja omab täielikku juurdepääsu süsteemi API-dele.


“Pärismaise” maailma ja “platvormideülese” maailma ühendamiseks on vaja kasutada spetsiaalset sild, on tema see, kes määrab platvormideüleste raamistike võimalused ja piirangud.

Silla kasutamisel väheneb jõudlus alati andmete teisendamise tõttu "maailmade" vahel, samuti API-kõnede ja teekide teisendamise tõttu.

Seega peab kõigil platvormideülestel rakendustel olema algosa, vastasel juhul ei saa operatsioonisüsteem neid lihtsalt käivitada. Seega vaatame lähemalt, milliseid süsteemi API-sid ja mehhanisme pakuvad iOS, Android ja Windows ise. Liigume edasi järgmise müüdi juurde.

Müüt 2. Pole pärismaalane!

Seega on meil rakenduse platvormideülene osa, mis elab virtuaalses keskkonnas ja suhtleb operatsioonisüsteemiga raamistiku infrastruktuuri ja silla kaudu.

Kõik operatsioonisüsteemid: iOS, Android ja Windows UWP pakuvad juurdepääsu järgmistele alamsüsteemidele (süsteemi API-de komplektidele):

  • WebView (rakendusesisene veebibrauser) on kasutusel PhoneGap-põhistes segamissüsteemides ja see toimib sisuliselt kohaliku veebisaidi käituskeskkonnana;
  • JavaScripti mootoreid kasutatakse React Native'is ja analoogides JS-koodi kiireks täitmiseks ning andmevahetuseks Native'i ja JS-i vahel;
  • OpenGL ES-i (või DirectX-i) kasutatakse liidese renderdamiseks mängumootorites ja rakendustes, mis põhinevad Qt/QML-il või analoogidel;
  • UI alamsüsteem vastutab rakenduse loomuliku kasutajaliidese eest, mis on oluline React Native'i ja Xamarini jaoks.


Platvormideülestel rakendustel on algosa ja sama täielik juurdepääs süsteemi API-dele kui omarakendustel. Erinevus seisneb selles, et süsteemimeetodit kutsutakse silla ja raamistiku infrastruktuuri kaudu:

WebView- rakendus elab oma veebibrauseris sarnaselt ühelehelise veebisaidiga. Puudub juurdepääs natiivsetele juhtelementidele (nupud, loendid jne), kõik põhineb HTML/CSS/JavaScriptil. Teisest küljest tunneb veebiarendaja end nagu kala veest väljas.

JavaScripti mootorid sai populaarseks suhteliselt hiljuti, kuna sarnane mehhanism lisati iOS-ile alles versioonis 7.0. Üks funktsioone, mida tasub kaaluda, on vajadus järjestada JSON-is JavaScripti ja Native keskkondade vahel ülekantavad keerukad andmestruktuurid. Selle lahendusklassi lühikirjelduseks käivitatakse JavaScripti keskkonnas algset rakendust juhtiv JS-kood.

OpenGL ES ja DirectX on madala taseme alamsüsteemid ja neid kasutatakse kasutajaliidese renderdamiseks mängudes ja näiteks Qt/QML-is. See tähendab, et OpenGL/DirectX-i kasutamisel joonistavad arendajad ise juhtelemente ja animatsioone, mis võivad olla sarnased ainult algsetele. Teisest küljest on tegemist väga suure jõudlusega madala taseme alamsüsteemiga, mistõttu kasutatakse seda ka platvormidevahelistes mängumootorites.

Kõigil platvormidevahelistel rakendustel on algosa ja seega potentsiaalselt sama täielik juurdepääs süsteemi API-dele kui omarakendustel. Samuti on platvormidevahelised rakendused ehitatud ja pakendatud koos natiivsete tööriistadega natiivsetesse installipakettidesse. Võtmeküsimus on, kuidas on korraldatud interaktsioon platvormideülese osa ja natiivse osa vahel. Näiteks WebView sees või Open GL ES / DirectX-i kasutades ei saa kuidagi luua täiesti natiivse look'n'feel kasutajaliidest, kuid samas on täielik ligipääs GPS-ile, Push Notifications ja muule funktsionaalsusele. Ning JavaScriptis või C#-s olev kood saab päris vabalt kontrollida omarakendust ja selle käitumist, pakkudes täiesti loomulikku välimust.

Kokkuvõtteks võib öelda, et jah, see on kasutatud arendustööriistade osas "mitte-native" (mitte Apple'ilt, Google'ilt). Kuid rakendus võib süsteemi API-dele juurdepääsu osas olla täiesti algne ning pakkuda täiesti loomulikku välimust ja tunnet. Ja me liigume järgmise müüdi juurde.

Müüt 3. Kark kargul

Siin tasub mõista, et natiivseid API-sid ei peeta vaikimisi karkudeks (kuigi siin on erinevaid arvamusi), seega on kogu pahameel suunatud platvormideülesele osale. Ilmselgelt on ka täitmiskeskkonda (näiteks WebView, JavaScripti mootor või Mono) raske karguks nimetada – pika ajalooga küpsed lahendused.

Tundub, et kark on see, kuidas platvormideülene osa integreerub algse osaga. Erinevate raamistike toimimise paremaks mõistmiseks vaatleme PhoneGapi, Xamarini, Qt ja React Native näitel neid operatsioonisüsteemi mehhanisme, mida kasutatakse platvormideüleste ja „natiivsete” osade sidumiseks.

Alustame PhoneGapiga. Allpool on sellel raamistikul põhineva rakenduse tipptasemel arhitektuur.



PhoneGapi rakendus on tegelikult algrakendus, mis kuvab ainsa kasutajaliidese juhtelemendina WebView. Just selle kaudu toimub interaktsioon põlisosaga. Kõik iOS-i, Androidi ja Windowsi UWP-i standardsed WebView-d toetavad võimalust lisada JS-i atribuutide ja meetodite jaoks oma loomulikud töötlejad. Samal ajal elab JS-kood oma isoleeritud keskkonnas ega tea natiivsest osast midagi – see tõmbab lihtsalt vajalikud JS-meetodid või muudab vajalikke JS-i omadusi. Kõik on standardse veebi-DOM-i sees, kuhu lihtsalt lisatakse uued natiivse juurutamisega seotud elemendid.



Rakenduste loomisel React Native'is peab arendaja peaaegu alati juurutama natiivse osa Objective-C-s, Javas või C#-s ning natiivse rakenduse enda haldamine tuleb JavaScriptist. Tegelikult on JavaScripti mootor WebView element, mis on saadaval eraldi. Interaktsioon toimub sama JS-silla kaudu nagu PhoneGapi puhul. Kuid rakenduses React Native ei juhi JS-kood veebi DOM-i puud, vaid omarakendust.

Pange tähele, et iOS-i piirangute tõttu (JIT-i pole võimalik rakendada) tõlgendatakse JavaScripti koodi käigu pealt, mitte ei koostata. Üldiselt ei mõjuta see reaalsete rakenduste jõudlust oluliselt, kuid seda tasub meeles pidada.

Vaatame nüüd klassikalisi Xamarin.iOS ja Xamarin.Android, kuna Xamarin.Forms (mis toetab Windows UWP-d) on nende lisandmoodul.



Xamarin kasutab sihtoperatsioonisüsteemiga suhtlemiseks Mono teeki, mis võimaldab teil P/invoke mehhanismi kasutades helistada algkoodile. Seda kasutatakse ka iOS-i/Androidi loomulike API-dega suhtlemiseks. See tähendab, et kõigi avalike API-meetodite jaoks luuakse ümbrised C#-s, mis omakorda kutsuvad süsteemi API-sid. Nii pääsete oma Xamarini rakendusest juurde kõikidele süsteemi API-dele.

Ja lõpuks, vaatame Qt-d, kuna kogenud arendajatelt on selle kohta palju küsimusi.



Qt on "asi iseeneses", sellel on nii eelised kui ka piirangud. Qt-teegid ühenduvad lihtsalt kõigis operatsioonisüsteemides leiduvate C++ süsteemi API-dega. Kasutajaliidese renderdamiseks kasutatakse madala taseme mehhanisme, kuid selle enda graafikamootor toetab natiivset stiili. Sel juhul peate Androidis pääsema Java API-le juurde spetsiaalse silla (JNI silla) kaudu ja Windows UWP jaoks kasutage Open GL ES-i kõnemuundurit DirectX-iks, kuna Open GL pole UWP jaoks saadaval.

Kokkuvõtteks: kõik platvormidevahelised raamistikud kasutavad operatsioonisüsteemide standardseid natiivseid võimeid, on küpsed ning loodud kogenud meeskondade ja avatud lähtekoodiga kogukonna poolt IT-tööstuse hiiglaste toel. Ja lõpuks on aeg "tugevaima" argumendi jaoks.

Müüt 4. Aeglane

Oluline trump, mida inimesed platvormideüleste raamistike üle vaidlustes kasutavad, on madal jõudlus. Jällegi oleneb, millega võrrelda ja milliseid papagoisid lugeda.

Tuletagem meelde, et platvormideüleste rakenduste eripära on kahe sillaga ühendatud maailma paralleelne olemasolu:

  • PhoneGap: HTML/JS ja Native Java / Objective-C / C#;
  • React Native: JS ja Native Java / Objective-C / C#;
  • Xamarin: mono- ja kohalik Java/Objective-C;
  • Qt: C++ ja kohalik Java / Objective-C.

Seega tuleb jõudluse võrdlemisel arvestada töökiirusega:

  • platvormideülene osa;
  • emakeel;
  • sild.

Kui sisestate otsingumootorisse näiteks react native vs Swift performance, saate vaadata palju erinevaid teste ja paljud neist märgivad, et jõudlus langeb järsult silla aktiivse kasutamise korral, sealhulgas kasutajaliidese aktiivsel manipuleerimisel ristvõrgust. platvormi kood. Xamarini puhul näeb olukord välja sama - platvormideülene osa on andmetöötluses väga kiire ja võrreldav natiivsega, kuid silda kasutades võib jõudlus langeda. Qt töötab üldiselt C++ tasemel, mis on iseenesest kiire. Kui arvestada PhoneGapil põhinevaid lahendusi, sõltub jõudlus suuresti WebView'st, kuid siiski ei tohiks te JavaScripti koodis kasutajaliidest aktiivselt muuta ega teaduslikke arvutusi teha.

Aeglaselt? Jah, jõudluse langus on võimalik silla kaudu operatsioonisüsteemiga sobimatu suhtlemise tõttu. Platvormidevahelised maailmad ise on aga sama kiired kui omamaised.

Mobiilirakendused on muutunud meie elu muutumatuks kaaslaseks. Nende abiga ei saa me mitte ainult lõbutseda ja lihtsustada oma elu, sooritada oste või tellida teatud teenuseid veebis, vaid ka reklaamida oma äri, suurendada kliendibaasi ja sellest tulenevalt suurendada kasumit. Ja kui keegi ei saa kahelda oma ettevõtte jaoks rakenduse loomise vajaduses, võib mobiilirakenduse tüübi valikul tekkida raskusi.

Kõik kaasaegsed mobiilseadmete rakendused võib jagada natiivseteks ja platvormiülesteks ning igal neist kahest rühmast on nii oma tugevused kui ka puudused.

Omarakendused on need, mis on spetsiaalselt välja töötatud konkreetse platvormi jaoks sobivas programmeerimiskeeles. Nii et Androidi jaoks rakenduse loomisel kasutatakse Java ja iOS-i rakenduste jaoks Objective-c või Swift. Selliste projektide loomisel võtavad spetsialistid arvesse kõiki platvormide omadusi, pöörates erilist tähelepanu UI/UX disainile, operatsioonisüsteemide arendajate nõuetele/soovitustele, aga ka mobiilitööstuse uusimatele trendidele. Üks spetsialist ei saa kõiki ülaltoodud keeli täielikult valdada, seetõttu on erinevatele platvormidele ühe omatoote väljatöötamiseks vaja kaasata erinevad arendajad ja see on lisakulu ning arendusaeg on muljetavaldav. Kuid samal ajal on rakendused "kohandatud" konkreetsele platvormile, neil on juurdepääs seadme sisemistele ressurssidele ja funktsioonidele ning need töötavad võimalikult tõhusalt.

Hoolimata kohalike arenduste eeliste suurest loetelust, ei soovi kliendid alati oma arendamiseks aega ja raha kulutada, kaasates loomisprotsessi mitmeid spetsialiste. Sellistel juhtudel on parim valik platvormideülene arendus, mis võimaldab standardsete veebitehnoloogiate abil luua rakendusi mis tahes platvormile. Sellisel juhul saab arendust läbi viia üks inimene, kellel on vajalikud teadmised ja kogemused töötamiseks HTML5, JavaScripti ja CSS3-ga. Platvormideülesed arendused saab koostada Androidi jaoks .apk-failiks ja IOS-i jaoks ipa-failiks. Seega saad ühe arenduse põhjal populaarsetele operatsioonisüsteemidele kaks rakendust, kulutades sellele vähem aega ja raha. Kuid sellistel arendustel on ka omad miinused, mistõttu on väga soovitatav läheneda igale konkreetsele juhtumile individuaalselt ja valida sobivaim variant - native või platvormideülene arendus.

Rakenduse kliendi- ja serveriosad

Enamikul tõsistel rakendustel on oma kliendiosa, mida sageli nimetatakse frontendiks, ja serveriosa - backend. Esiosa vastutab selle eest, mida näete oma mobiilseadme ekraanil, st kogu rakenduse visuaalse esituse eest, sealhulgas akende, menüüde, nuppude, noolte ja muude elementide kujunduse, suuruse ja asukoha eest. Samuti vastutab kasutajaliides selle eest, et rakendus reageerib teatud kasutajatoimingutele, mille eesmärk on liikuda rakenduse erinevatesse jaotistesse, kutsuda uusi menüüsid ja nii edasi.

Taustaprogramm on rakenduse serveriosa ja asub kaugserveris, mis võib asuda kõikjal ja mida saab hallata mitmesuguste tarkvaratööriistade abil. Kliendi ja serveri osade vaheline suhe toimub tänu API-le (rakenduse programmeerimisliides). Teisisõnu on API omamoodi vahendaja esi- ja taustaprogrammi vahel, mis edastab kliendi poolelt päringuid serverisse, tagastades kasutajale vajalikud andmed.

Frontendi arendus

Rakenduse kliendiosa on äärmiselt oluline, kuna sellega tegeleb kasutaja ise ja tema üldine arusaam rakenduse tööst sõltub kasutajaliidese mugavusest. Seda saab arendada kas käsitsi, kuid selleks on vaja hästi mõista HTML5, CSS3 ja java-scripti või kasutada nn raamistikke. Esimesel juhul kasutatakse sageli Apache Cordova arenduskeskkonda, mis on üldtuntud ka kui PhoneGap. Seda keskkonda kasutades saab veebitehnoloogiaid kasutades luua rakendusi mis tahes platvormile, mille Cordova teisendab konkreetsele platvormile arusaadavaks koodiks. Cordova avab praktiliselt piiramatud võimalused veebiarendajatele, kes ei pea tingimata õppima Objective-C või Swift, Java või Kotlin, et luua rakendusi konkreetsetele operatsioonisüsteemidele.

Kuigi Cordoval pole kasutajaliidese ja loogika osas piiranguid, pakuvad raamistikud valmis mallilahendusi. Ühest küljest kiirendab ja lihtsustab see oluliselt arendusprotsessi, kuna spetsialist saab kasutada valmis nuppe, loendeid, sisestusvälju, kaarte ja muid kasutajaliidese elemente. Teisest küljest saab spetsialist arenduseks kasutada ainult neid tööriistu ja elemente, mis on valitud raamistikus saadaval. Neist populaarseim on Ionic, mis võimaldab luua platvormideüleseid rakendusi igale maitsele. Sellel raamistikul on sisseehitatud suur standardsete elementide kogu, mis visuaalselt imiteerivad natiivseid rakendusi, kuid nende kujundust saab vajadusel muuta. Samal ajal saab arendaja ühendada palju lisapluginaid, mis laiendavad ioonilise raamistiku võimalusi ning sellel raamistikul loodud projekti saab käivitada otse brauseriaknas ja hinnata, kuidas loodud rakendus välja näeb ja töötab, ilma et oleks vaja kasutage emulaatorit või installige see nutitelefoni.

Taustaprogrammi arendamine

Kui kliendi poolega tegelevad HTML-i, CSS-i, JS-i ja raamistike tundvad disainerid ja arendajad, siis taustaprogrammiga tegelevad erineva profiiliga programmeerijad. Serverite konfigureerimiseks saab kasutada erinevaid programmeerimiskeeli ja tööriistu, peamine on nende töö ja suhtlus kliendiosaga õigesti konfigureerida. Siin on vaja kasutada sobivaid andmebaasihaldussüsteeme. See võib olla traditsiooniline MySQL, Redis, PostgreSQL või mõni muu andmebaas (näiteks MongoDB), mis sobib konkreetse projekti realiseerimiseks ja mille taustaarendaja on hästi kursis. Rakenduse serveripoole loomiseks saavad arendajad kasutada PHP, NodeJS, C#, Ruby, Python, Java ja muid programmeerimiskeeli.

KitApp mobiilistuudio spetsialistid lähenevad esi- ja taustaosade arendamise probleemile terviklikult ja võimalikult vastutustundlikult. Meie arendajad loovad teile võimalikult kiiresti ja tõhusalt mis tahes keerukuse ja fookusega platvormideülese rakenduse! Võtke meiega ühendust ja meie spetsialistid annavad teile kiiresti nõu kõigis teie küsimustes!