RxSwift en coroutines in Kotlin - een keuzevak in mobiele ontwikkeling van AGIMA en GeekBrains

RxSwift en coroutines in Kotlin - een keuzevak in mobiele ontwikkeling van AGIMA en GeekBrains

Kennis is goed, gewoon geweldig. Maar er is ook oefening nodig zodat u de ontvangen gegevens kunt gebruiken en ze van de status “passieve opslag” naar de status “actief gebruik” kunt overbrengen. Hoe goed de theoretische opleiding ook is, werken “in het veld” is nog steeds vereist. Het bovenstaande geldt voor vrijwel elk vakgebied, inclusief uiteraard softwareontwikkeling.

Dit jaar begon GeekBrains, als onderdeel van de mobiele ontwikkelingsfaculteit van de online universiteit GeekUniversity, samen te werken met het interactieve bureau AGIMA, wiens team bestaat uit professionele ontwikkelaars (ze creëren complexe projecten met hoge belasting, bedrijfsportals en mobiele applicaties, dat is alles). AGIMA en GeekBrains hebben een keuzevak gecreëerd voor een diepe duik in de praktische kwesties van de ontwikkeling van mobiele applicaties.

Onlangs spraken we met Igor Vedeneev, een iOS-specialist, en Alexander Tizik, gespecialiseerd in Android. Dankzij hen werd het keuzevak mobiele ontwikkeling verrijkt met praktijk speciale cursus over het RxSwift-framework и coroutines in Kotlin. In dit artikel vertellen de ontwikkelaars over het belang van elk gebied voor programmeurs.

Reactief programmeren in iOS met RxSwift als voorbeeld

RxSwift en coroutines in Kotlin - een keuzevak in mobiele ontwikkeling van AGIMA en GeekBrains
Keuzedocent Igor Vedeneev: “Met RxSwift vliegt je sollicitatie”

Welke informatie krijgen studenten tijdens het keuzevak?

We praten niet alleen over de mogelijkheden van het raamwerk, maar laten ook zien hoe je het kunt gebruiken in de klassieke MVVM + RxSwift-combinatie. Ook worden enkele praktijkvoorbeelden besproken. Om de verkregen gegevens te consolideren, schrijven we een applicatie die de bedrijfsomstandigheden in het veld zo dicht mogelijk benadert. Dit zal een muziekzoekapplicatie zijn die gebruikt iTunes-zoek-API. Daar zullen we alle Best Practices toepassen, plus een eenvoudiger optie overwegen om RxSwift te gebruiken in het MVC-paradigma.

RxSwift - waarom heeft een iOS-programmeur dit raamwerk nodig, hoe maakt het het leven van een ontwikkelaar gemakkelijker?

RxSwift stroomlijnt het werk met gebeurtenisstromen en verbindingen tussen objecten. Het eenvoudigste en meest voor de hand liggende voorbeeld zijn bindingen: je kunt bijvoorbeeld de interface updaten door simpelweg nieuwe waarden in te stellen in een variabele in het viewModel. Zo wordt de interface datagestuurd. Bovendien kunt u met RxSwift het systeem in een declaratieve stijl beschrijven, waardoor u uw code kunt ordenen en de leesbaarheid kunt vergroten. Dit alles helpt om applicaties efficiënter te ontwikkelen.

Voor een ontwikkelaar is kennis van het framework ook een mooi pluspunt op een cv, aangezien inzicht in reactief programmeren, en vooral ervaring met RxSwift, in de markt gewaardeerd wordt.

Waarom dit specifieke raamwerk verkiezen boven andere?

RxSwift heeft de grootste community. Dat wil zeggen dat de kans groter is dat het probleem waarmee de ontwikkelaar wordt geconfronteerd, al door iemand is opgelost. Ook een groot aantal bindingen uit de doos. Bovendien is RxSwift onderdeel van ReactiveX. Dit betekent dat er bijvoorbeeld een analoog is voor Android (RxJava, RxKotlin) en dat collega's in de werkplaats dezelfde taal met elkaar kunnen spreken, ondanks dat sommigen met iOS werken, anderen met Android.

Het raamwerk wordt voortdurend bijgewerkt, kleine bugs worden gecorrigeerd, ondersteuning voor functies uit nieuwe versies van Swift wordt toegevoegd en er worden nieuwe bindingen toegevoegd. Omdat RxSwift open source is, kun je alle wijzigingen volgen. Bovendien is het mogelijk om ze zelf toe te voegen.

Waar moet RxSwift worden gebruikt?

  1. Bindingen. In de regel hebben we het over de gebruikersinterface, de mogelijkheid om de gebruikersinterface te wijzigen, alsof u reageert op gegevenswijzigingen, en de interface niet expliciet vertellen dat het tijd is om te updaten.
  2. Relatie tussen componenten en bewerkingen. Gewoon een voorbeeld. We hebben een lijst met gegevens van het netwerk nodig. In feite is dit niet zo'n eenvoudige handeling. Om dit te doen, moet u een verzoek verzenden, het antwoord in een reeks objecten in kaart brengen, het in de database opslaan en naar de gebruikersinterface sturen. In de regel zijn verschillende componenten verantwoordelijk voor het uitvoeren van deze bewerkingen (we houden van en volgen de principes SOLID?). Als je een tool als RxSwift bij de hand hebt, wordt het mogelijk om te beschrijven WAT het systeem zal doen, en HOE het op andere plaatsen zal doen. Hierdoor wordt een betere organisatie van de code bereikt en neemt de leesbaarheid toe. Relatief gezien kan de code worden onderverdeeld in een inhoudsopgave en het boek zelf.

Coroutines in Kotlin

RxSwift en coroutines in Kotlin - een keuzevak in mobiele ontwikkeling van AGIMA en GeekBrains
Keuzevakdocent Alexander Tizik: “Moderne ontwikkeling vraagt ​​om moderne technische middelen”

Wat wordt er onderwezen op de faculteit GeekBrains als onderdeel van het branded quarter?

Theorie, vergelijkingen met andere benaderingen, praktijkvoorbeelden in pure Kotlin en in het Android-applicatiemodel. Wat de praktijk betreft, krijgen studenten een applicatie te zien waarin alles aan coroutines is gekoppeld. Feit is dat de meeste applicaties volledig asynchroon en parallel computergebruik zijn. Maar Kotlin-coroutines maken het mogelijk dat verwarrende, heterogene of overdreven complexe en prestatie-eisende code wordt teruggebracht tot één enkele, gemakkelijk te begrijpen stijl, waardoor voordelen worden behaald bij correcte uitvoering en prestaties.

We zullen idiomatische code in coroutines leren schrijven die praktische problemen oplost en op het eerste gezicht begrijpelijk is, zelfs zonder diepgaande kennis van hoe coroutines werken (wat niet gezegd kan worden over bibliotheken zoals RxJava). We zullen ook begrijpen hoe we complexere concepten, zoals het actormodel, kunnen gebruiken om complexere problemen op te lossen, zoals het datawarehouse in het MVI-concept.

Overigens nog meer goed nieuws. Terwijl het keuzevak werd opgenomen, werd er een update van de Kotlin Coroutines-bibliotheek uitgebracht, waarin de klas verscheen Flow - analoog van typen Flowable и Observable van RxJava. De update maakt de coroutines-functie compleet vanuit het oogpunt van de applicatie-ontwikkelaar. Toegegeven, er is nog steeds ruimte voor verbetering: ondanks het feit dat het dankzij de ondersteuning van coroutines in kotlin/native al mogelijk is om multi-platformapplicaties in Kotlin te schrijven zonder te lijden onder het gebrek aan RxJava of analogen in pure Kotlin, ondersteuning voor coroutines in kotlin/native is nog niet voltooid. Er bestaat bijvoorbeeld geen concept van acteurs. Over het algemeen heeft het Kotlin-team plannen om complexere actoren op alle platforms te ondersteunen.

Kotlin Coroutines - hoe helpen ze een Kotlin-ontwikkelaar?

Coroutines bieden een geweldige mogelijkheid om code te schrijven die leesbaar, onderhoudbaar en veilig, asynchroon en gelijktijdig is. U kunt ook adapters maken voor andere asynchrone raamwerken en benaderingen die mogelijk al in de codebase worden gebruikt.

Waarin verschillen Coroutines van threads?

Het Kotlin-team noemt coroutines lichtgewicht draden. Bovendien kan een coroutine een bepaalde waarde retourneren, omdat een coroutine in essentie een opgeschorte berekening is. Het is niet direct afhankelijk van systeemthreads; threads voeren alleen coroutines uit.

Welke praktische problemen zijn met Coroutine op te lossen, die met “pure” Kotlin niet of moeilijk op te lossen zijn?

Alle asynchrone, parallelle, ‘competitieve’ taken kunnen goed worden opgelost met behulp van coroutines – of het nu gaat om het verwerken van gebruikersklikken, online gaan of het abonneren op updates uit een database.

In pure Kotlin worden deze problemen op dezelfde manier opgelost als in Java - met behulp van duizenden raamwerken, die elk hun eigen voor- en nadelen hebben, maar geen van hen heeft ondersteuning op taalniveau.

Concluderend is het de moeite waard om te zeggen dat beide keuzevakken (en ook de hoofdgerechten) worden bijgewerkt in overeenstemming met veranderingen in externe omstandigheden. Als er belangrijke updates verschijnen in talen of raamwerken, houden docenten hier rekening mee en passen ze het programma aan. Hierdoor houd je als het ware de vinger aan de pols van het ontwikkelingsproces.

Bron: www.habr.com

Voeg een reactie