RxSwift og Coroutines i Kotlin - Mobiludvikling valgfag fra AGIMA og GeekBrains

RxSwift og Coroutines i Kotlin - Mobiludvikling valgfag fra AGIMA og GeekBrains

Viden er godt, bare fantastisk. Men øvelse er også nødvendig for at kunne bruge de modtagne data, overføre dem fra status som "passiv lagring" til status for "aktiv brug". Uanset hvor god den teoretiske uddannelse er, kræver den stadig arbejde "i marken". Dette gælder for næsten ethvert uddannelsesområde, herunder selvfølgelig softwareudvikling.

I år begyndte GeekBrains inden for rammerne af fakultetet på onlineuniversitetet GeekUniversity om mobiludvikling at arbejde med det interaktive bureau AGIMA, hvis team er professionelle udviklere (de laver komplekse højbelastningsprojekter, virksomhedsportaler og mobilapplikationer, det er alt ). AGIMA og GeekBrains har skabt et valgfag til et dybt dyk ned i det praktiske ved udvikling af mobilapps.

Forleden talte vi med Igor Vedeneev, en iOS-specialist, og Alexander Tizik, en Android-specialist. Takket være dem blev valgfaget i mobiludvikling beriget med praktisk et særligt kursus om RxSwift-rammerne и koroutiner i Kotlin. I denne artikel taler udviklere om vigtigheden af ​​hver retning for programmører.

Reaktiv programmering i iOS med RxSwift som eksempel

RxSwift og Coroutines i Kotlin - Mobiludvikling valgfag fra AGIMA og GeekBrains
Valgfagslærer Igor Vedeneev: "Med RxSwift flyver din ansøgning"

Hvilken information får eleverne i valgfaget?

Vi taler ikke kun om rammernes muligheder, men viser også, hvordan man bruger det i det klassiske MVVM + RxSwift-bundt. Der tages også stilling til flere praktiske eksempler. For at konsolidere de opnåede data skriver vi en ansøgning, der er så tæt som muligt på arbejdsforholdene i marken. Det vil være en musiksøgningsapplikation med iTunes Search API. Der vil vi anvende alle de bedste praksisser, plus overveje en enklere brug af RxSwift i MVC-paradigmet.

RxSwift - hvorfor har denne ramme brug for en iOS-programmør, hvordan gør det livet lettere for en udvikler?

RxSwift strømliner arbejdet med hændelsesstrømme og relationer mellem objekter. Det enkleste og mest oplagte eksempel er bindinger: For eksempel kan du opdatere grænsefladen ved blot at indstille en ny værdi til en variabel i viewModel. Dermed bliver grænsefladen datadrevet. Derudover giver RxSwift dig mulighed for at beskrive systemet i en deklarativ stil, som giver dig mulighed for at strømline koden og forbedre læsbarheden. Alt dette er med til at udvikle applikationer mere effektivt.

For en udvikler er kendskab til rammerne også et godt plus på et CV, da en forståelse for reaktiv programmering, og i særdeleshed erfaring med RxSwift, er værdsat i markedet.

Hvorfor vælge netop denne ramme og ikke andre?

RxSwift har det største fællesskab. Det vil sige, at det er mere sandsynligt, at problemet, som udvikleren står over for, allerede er løst af nogen. Også et stort antal bindinger ud af æsken. Desuden er RxSwift en del af ReactiveX. Det betyder, at der er en analog til eksempelvis Android (RxJava, RxKotlin), og kollegaer i butikken kan tale samme sprog med hinanden, på trods af at nogle arbejder med iOS, andre med Android.

Rammerne opdateres konstant, mindre fejl er rettet, understøttelse af funktioner fra nye versioner af Swift tilføjes, nye bindinger tilføjes. Da RxSwift er open source, kan du følge alle ændringerne. Desuden er det muligt at tilføje dem selv.

Hvor skal du bruge RxSwift?

  1. Indbindinger. Som regel taler vi her om brugergrænsefladen, evnen til at ændre brugergrænsefladen, som om man reagerer på dataændringer og ikke eksplicit fortæller grænsefladen, at det er tid til at opdatere.
  2. Kommunikation af komponenter og operationer. Bare et eksempel. Vi skal have en liste over data fra netværket. Faktisk er dette ikke så simpel en operation. For at gøre dette skal du sende en anmodning, kortlægge svaret i en række objekter, gemme det i databasen og give det til brugergrænsefladen. Som regel er forskellige komponenter ansvarlige for at udføre disse operationer (vi elsker og følger principperne SOLID?). Med et værktøj som RxSwift ved hånden, bliver det muligt at beskrive, HVAD systemet vil gøre, og HVORDAN det vil gøre det, vil blive placeret andre steder. Det er på grund af dette, at der opnås en bedre organisering af koden og øget læsbarhed. Relativt set kan koden opdeles i en indholdsfortegnelse og selve bogen.

Coroutines i Kotlin

RxSwift og Coroutines i Kotlin - Mobiludvikling valgfag fra AGIMA og GeekBrains
Valgfagslærer Alexander Tizik: "Moderne udvikling kræver moderne tekniske midler"

Hvad vil der blive undervist på GeekBrains-fakultetet som en del af branded-kvarteret?

Teori, sammenligninger med andre tilgange, praktiske eksempler i ren Kotlin og i Android applikationsmodellen. Hvad angår praksis, vil eleverne få vist en applikation, hvor alt er bundet til koroutiner. Faktum er, at de fleste applikationer er kontinuerlig asynkron og parallel computing. Men Kotlin-koroutiner tillader forvirrende, heterogen eller alt for kompleks og præstationskrævende kode at blive reduceret til en enkelt, letforståelig stil, hvorved der opnås rigtighed i udførelse og ydeevne.

Vi vil lære at skrive idiomatisk coroutine-kode, der løser praktiske problemer og er forståelig med et blik selv uden dyb viden om, hvordan coroutines fungerer (hvilket ikke kan siges om biblioteker som RxJava). Vi vil også forstå, hvordan man bruger mere komplekse koncepter, såsom aktørmodellen, til at løse mere komplekse problemer, såsom datalagring i MVI-konceptet.

Forresten flere gode nyheder. Mens valgfaget blev skrevet, blev der udgivet en opdatering af Kotlin Coroutines-biblioteket, hvor klassen optrådte Flow - analog af typer Flowable и Observable fra RxJava. Opdateringen gør faktisk coroutines-funktionen komplet set fra en applikationsudviklers synspunkt. Sandt nok er der stadig plads til udvikling: på trods af, at takket være understøttelsen af ​​coroutines i kotlin/native, er det allerede muligt at skrive multiplatform-applikationer i Kotlin og ikke lide under manglen på RxJava eller analoger i ren Kotlin, support for coroutines i kotlin/native er endnu ikke færdige. For eksempel er der ikke noget begreb om skuespillere. Generelt planlægger Kotlin-teamet at støtte mere komplekse aktører på alle platforme.

Kotlin Coroutines - hvordan hjælper de en Kotlin-udvikler?

Coroutines giver en fantastisk mulighed for at skrive læsbar, vedligeholdelig og sikker, asynkron og samtidig kode. Du kan også oprette adaptere til andre asynkrone rammer og tilgange, som muligvis allerede er brugt i kodebasen.

Hvordan adskiller Coroutines sig fra tråde?

Kotlin-teamet omtaler coroutiner som letvægtstråde. Plus, en coroutine kan returnere en vis værdi, fordi en coroutine i sin kerne er en suspenderet beregning. Det afhænger ikke direkte af systemtråde, tråde udfører kun koroutiner.

Hvilke praktiske opgaver kan løses ved hjælp af Corutin, hvilke kan ikke eller er svære at løse ved hjælp af "ren" Kotlin?

Eventuelle asynkrone, parallelle, "konkurrencedygtige" opgaver løses godt ved hjælp af coroutines - uanset om det er at behandle klik fra brugeren, gå til netværket eller abonnere på opdateringer fra databasen.

I ren Kotlin løses disse opgaver på samme måde som i Java – ved hjælp af tusindvis af frameworks, som hver især har sine fordele og ulemper, men ingen af ​​dem har understøttelse på sprogniveau.

Som konklusion skal det siges, at både valgfag (og også kernekurser) opdateres i overensstemmelse med ændringer i eksterne forhold. Hvis der er vigtige opdateringer i sprog eller rammer, tager lærerne højde for dette og ændrer programmet. Alt dette giver dig mulighed for at holde dig ajour med udviklingsprocessen, så at sige.

Kilde: www.habr.com

Tilføj en kommentar