ProHoster > Blogs > interneta ziÅas > RxSwift un korutÄ«nas KotlinÄ ā mobilÄs attÄ«stÄ«bas izvÄles priekÅ”mets no AGIMA un GeekBrains
RxSwift un korutÄ«nas KotlinÄ ā mobilÄs attÄ«stÄ«bas izvÄles priekÅ”mets no AGIMA un GeekBrains
ZinÄÅ”anas ir labas, vienkÄrÅ”i lieliskas. TaÄu ir nepiecieÅ”ama arÄ« prakse, lai varÄtu izmantot saÅemtos datus, pÄrceļot tos no statusa āpasÄ«vÄ krÄtuveā uz statusu āaktÄ«va izmantoÅ”anaā. Lai cik laba bÅ«tu teorÄtiskÄ apmÄcÄ«ba, darbs ālaukÄā tomÄr ir vajadzÄ«gs. IepriekÅ” minÄtais attiecas uz gandrÄ«z jebkuru studiju virzienu, tostarp, protams, programmatÅ«ras izstrÄdi.
Å ogad GeekBrains tieÅ”saistes universitÄtes GeekUniversity mobilÄs attÄ«stÄ«bas fakultÄtes ietvaros uzsÄka sadarbÄ«bu ar interaktÄ«vo aÄ£entÅ«ru AGIMA, kuras komanda ir profesionÄli izstrÄdÄtÄji (tie veido sarežģītus augstas slodzes projektus, korporatÄ«vos portÄlus un mobilÄs aplikÄcijas, tas arÄ« viss). AGIMA un GeekBrains ir izveidojuÅ”i izvÄles priekÅ”metu, lai dziļi izpÄtÄ«tu mobilo lietojumprogrammu izstrÄdes praktiskos jautÄjumus.
Citu dienu mÄs runÄjÄm ar Igoru VedeÅejevu, iOS speciÄlistu, un Aleksandru Tiziku, kas specializÄjas operÄtÄjsistÄmÄ Android. Pateicoties viÅiem, izvÄle par mobilo attÄ«stÄ«bu tika bagÄtinÄta ar praktisko Ä«paÅ”s kurss par RxSwift sistÄmu Šø korutÄ«nas KotlinÄ. Å ajÄ rakstÄ izstrÄdÄtÄji runÄ par katras jomas nozÄ«mi programmÄtÄjiem.
ReaktÄ«vÄ programmÄÅ”ana operÄtÄjsistÄmÄ iOS, kÄ piemÄru izmantojot RxSwift
MÄs runÄjam ne tikai par ietvara iespÄjÄm, bet arÄ« parÄdÄm, kÄ to izmantot klasiskajÄ MVVM + RxSwift kombinÄcijÄ. Tiek apspriesti arÄ« vairÄki praktiski piemÄri. Lai apkopotu iegÅ«tos datus, mÄs rakstÄm pieteikumu, kas ir pÄc iespÄjas tuvÄks lauka darbÄ«bas apstÄkļiem. Å Ä« bÅ«s mÅ«zikas meklÄÅ”anas programma, kas izmantos iTunes meklÄÅ”anas API. Å eit mÄs izmantosim visas labÄkÄs prakses, kÄ arÄ« apsvÄrsim vienkÄrÅ”Äku iespÄju RxSwift izmantoÅ”anai MVC paradigmÄ.
RxSwift ā kÄpÄc iOS programmÄtÄjam ir vajadzÄ«gs Å”is ietvars, kÄ tas atvieglo dzÄ«vi izstrÄdÄtÄjam?
RxSwift racionalizÄ darbu ar notikumu straumÄm un savienojumiem starp objektiem. VienkÄrÅ”Äkais un acÄ«mredzamÄkais piemÄrs ir saistÄ«Å”ana: piemÄram, interfeisu var atjauninÄt, vienkÄrÅ”i iestatot jaunas vÄrtÄ«bas mainÄ«gajÄ programmÄ viewModel. TÄdÄjÄdi saskarne kļūst balstÄ«ta uz datiem. TurklÄt RxSwift ļauj aprakstÄ«t sistÄmu deklaratÄ«vÄ stilÄ, kas ļauj sakÄrtot kodu un palielinÄt lasÄmÄ«bu. Tas viss palÄ«dz efektÄ«vÄk izstrÄdÄt lietojumprogrammas.
IzstrÄdÄtÄjam zinÄÅ”anas par ietvaru ir arÄ« labs pluss CV, jo izpratne par reaktÄ«vo programmÄÅ”anu un jo Ä«paÅ”i pieredze ar RxSwift tiek novÄrtÄta tirgÅ«.
KÄpÄc izvÄlÄties Å”o konkrÄto sistÄmu, nevis citus?
RxSwift ir lielÄkÄ kopiena. Tas nozÄ«mÄ, ka pastÄv lielÄka iespÄja, ka problÄmu, ar kuru saskaras izstrÄdÄtÄjs, kÄds jau ir atrisinÄjis. ArÄ« liels skaits stiprinÄjumu no kastes. TurklÄt RxSwift ir daļa no ReactiveX. Tas nozÄ«mÄ, ka ir, piemÄram, Android analogs (RxJava, RxKotlin), un kolÄÄ£i darbnÄ«cÄ var runÄt viens ar otru vienÄ valodÄ, neskatoties uz to, ka daži strÄdÄ ar iOS, citi ar Android.
Ietvars tiek pastÄvÄ«gi atjauninÄts, tiek labotas nelielas kļūdas, tiek pievienots atbalsts jaunajÄm Swift versijÄm un tiek pievienoti jauni saitÄ«jumi. TÄ kÄ RxSwift ir atvÄrtais avots, varat sekot lÄ«dzi visÄm izmaiÅÄm. TurklÄt ir iespÄjams tos pievienot pats.
Kur izmantot RxSwift?
Saites. Parasti mÄs runÄjam par lietotÄja interfeisu, iespÄju mainÄ«t lietotÄja interfeisu, it kÄ reaÄ£Äjot uz datu izmaiÅÄm, nevis skaidri paziÅojot saskarnei, ka ir pienÄcis laiks atjauninÄt.
SaistÄ«ba starp komponentiem un operÄcijÄm. Tikai piemÄrs. Mums ir jÄiegÅ«st datu saraksts no tÄ«kla. PatiesÄ«bÄ Å”Ä« nav tik vienkÄrÅ”a darbÄ«ba. Lai to izdarÄ«tu, jums ir jÄnosÅ«ta pieprasÄ«jums, jÄsakÄrto atbilde objektu masÄ«vÄ, jÄsaglabÄ datu bÄzÄ un jÄnosÅ«ta lietotÄja interfeisam. Parasti par Å”o darbÄ«bu veikÅ”anu ir atbildÄ«gas dažÄdas sastÄvdaļas (mÄs mÄ«lam un ievÄrojam principus SOLID?). Ja pa rokai ir tÄds rÄ«ks kÄ RxSwift, kļūst iespÄjams aprakstÄ«t, KO sistÄma darÄ«s, un KÄ tÄ to darÄ«s citÄs vietÄs. Pateicoties tam, tiek panÄkta labÄka koda organizÄcija un palielinÄs lasÄmÄ«ba. RelatÄ«vi runÄjot, kodu var iedalÄ«t satura rÄdÄ«tÄjÄ un paÅ”Ä grÄmatÄ.
Ko mÄcÄ«s GeekBrains fakultÄtÄ zÄ«mola kvartÄla ietvaros?
Teorija, salÄ«dzinÄjumi ar citÄm pieejÄm, praktiski piemÄri tÄ«rÄ KotlinÄ un Android aplikÄcijas modelÄ«. RunÄjot par praksi, studentiem tiks parÄdÄ«ta aplikÄcija, kurÄ viss ir saistÄ«ts ar korutÄ«nÄm. Fakts ir tÄds, ka lielÄkÄ daļa lietojumprogrammu ir pilnÄ«gi asinhrona un paralÄla skaitļoÅ”ana. TaÄu Kotlin korutÄ«nas ļauj mulsinoÅ”u, neviendabÄ«gu vai pÄrÄk sarežģītu un veiktspÄjas prasÄ«gu kodu reducÄt lÄ«dz vienam, viegli saprotamam stilam, gÅ«stot priekÅ”rocÄ«bas pareizajÄ izpildÄ un veiktspÄjÄ.
MÄcÄ«simies korutÄ«nÄs rakstÄ«t idiomÄtisku kodu, kas atrisina praktiskas problÄmas un ir no pirmÄ acu uzmetiena saprotams pat bez dziļÄm zinÄÅ”anÄm par korutÄ«nu darbÄ«bu (ko nevar teikt par tÄdÄm bibliotÄkÄm kÄ RxJava). MÄs arÄ« sapratÄ«sim, kÄ izmantot sarežģītÄkus jÄdzienus, piemÄram, aktiera modeli, lai atrisinÄtu sarežģītÄkas problÄmas, piemÄram, datu noliktava MVI koncepcijÄ.
Starp citu, vairÄk labu ziÅu. KamÄr izvÄles priekÅ”mets tika ierakstÄ«ts, tika izlaists Kotlin Coroutines bibliotÄkas atjauninÄjums, kurÄ parÄdÄ«jÄs nodarbÄ«ba Flow - tipu analogs Flowable Šø Observable no RxJava. AtjauninÄjums bÅ«tÄ«bÄ padara korutÄ«nas funkciju pilnÄ«gu no lietojumprogrammu izstrÄdÄtÄja viedokļa. Tiesa, joprojÄm ir vietas uzlabojumiem: neskatoties uz to, ka, pateicoties korutÄ«nu atbalstam kotlin/native, KotlinÄ jau ir iespÄjams rakstÄ«t vairÄku platformu lietojumprogrammas un neciest no RxJava vai analogu trÅ«kuma tÄ«rÄ Kotlin, KorutÄ«nu atbalsts kotlin/native vÄl nav pabeigts. PiemÄram, nav aktieru jÄdziena. KopumÄ Kotlin komanda plÄno atbalstÄ«t sarežģītÄkus dalÄ«bniekus visÄs platformÄs.
KorutÄ«nas sniedz lielisku iespÄju rakstÄ«t kodu, kas ir lasÄms, apkopjams un droÅ”s, asinhrons un vienlaicÄ«gs. Varat arÄ« izveidot adapterus citÄm asinhronÄm sistÄmÄm un pieejÄm, kas jau var tikt izmantotas kodu bÄzÄ.
KÄ korutÄ«nas atŔķiras no pavedieniem?
Kotlinas komanda korutÄ«nas sauc par vieglajiem pavedieniem. TurklÄt korutÄ«na var atgriezt kÄdu vÄrtÄ«bu, jo pÄc bÅ«tÄ«bas korutÄ«na ir apturÄts aprÄÄ·ins. Tas nav tieÅ”i atkarÄ«gs no sistÄmas pavedieniem; pavedieni izpilda tikai korutÄ«nas.
KÄdas praktiskas problÄmas var atrisinÄt, izmantojot Coroutine, kuras nevar vai ir grÅ«ti atrisinÄt, izmantojot ātÄ«roā Kotlinu?
Jebkuri asinhroni, paralÄli, ākonkurÄtspÄjÄ«giā uzdevumi tiek labi atrisinÄti, izmantojot korutÄ«nas ā neatkarÄ«gi no tÄ, vai tÄ ir lietotÄja klikŔķu apstrÄde, pÄreja tieÅ”saistÄ vai atjauninÄjumu abonÄÅ”ana no datu bÄzes.
TÄ«rÄ KotlinÄ Å”Ä«s problÄmas tiek risinÄtas tÄpat kÄ Java - ar tÅ«kstoÅ”iem ietvaru palÄ«dzÄ«bu, no kuriem katram ir savi plusi un mÄ«nusi, taÄu nevienam no tiem nav valodas lÄ«meÅa atbalsta.
NoslÄgumÄ jÄsaka, ka gan izvÄles priekÅ”meti (un arÄ« pamatkursi) tiek papildinÄti atbilstoÅ”i ÄrÄjo apstÄkļu izmaiÅÄm. Ja valodÄs vai sistÄmÄs parÄdÄs svarÄ«gi atjauninÄjumi, skolotÄji to Åem vÄrÄ un pÄrveido programmu. Tas viss ļauj, tÄ teikt, turÄt pirkstu uz attÄ«stÄ«bas procesa pulsa.