RxSwift und Coroutinen in Kotlin – ein Wahlfach in mobiler Entwicklung von AGIMA und GeekBrains

RxSwift und Coroutinen in Kotlin – ein Wahlfach in mobiler Entwicklung von AGIMA und GeekBrains

Wissen ist gut, einfach großartig. Aber auch Übung ist nötig, um die empfangenen Daten nutzen und vom Status „passive Speicherung“ in den Status „aktive Nutzung“ überführen zu können. So gut die theoretische Ausbildung auch ist, Arbeit „im Feld“ ist dennoch gefragt. Das oben Gesagte gilt für fast alle Studienbereiche, natürlich auch für die Softwareentwicklung.

In diesem Jahr begann GeekBrains als Teil der Fakultät für mobile Entwicklung der Online-Universität GeekUniversity mit der interaktiven Agentur AGIMA zusammenzuarbeiten, deren Team aus professionellen Entwicklern besteht (sie erstellen komplexe Hochlastprojekte, Unternehmensportale und mobile Anwendungen, das ist alles). AGIMA und GeekBrains haben ein Wahlfach geschaffen, um tief in die praktischen Aspekte der Entwicklung mobiler Anwendungen einzutauchen.

Neulich haben wir mit Igor Vedeneev, einem iOS-Spezialisten, und Alexander Tizik, einem Android-Spezialisten, gesprochen. Dank ihnen wurde das Wahlfach zur mobilen Entwicklung um praktische Aspekte bereichert Spezialkurs zum RxSwift-Framework и Coroutinen in Kotlin. In diesem Artikel sprechen die Entwickler über die Bedeutung jedes Bereichs für Programmierer.

Reaktive Programmierung in iOS am Beispiel von RxSwift

RxSwift und Coroutinen in Kotlin – ein Wahlfach in mobiler Entwicklung von AGIMA und GeekBrains
Wahlfachlehrer Igor Vedeneev: „Mit RxSwift wird Ihre Bewerbung fliegen“

Welche Informationen erhalten Studierende im Wahlfach?

Wir sprechen nicht nur über die Fähigkeiten des Frameworks, sondern zeigen auch, wie man es in der klassischen MVVM + RxSwift-Kombination nutzt. Außerdem werden einige praktische Beispiele besprochen. Um die gewonnenen Daten zu konsolidieren, schreiben wir eine Anwendung, die den Feldbetriebsbedingungen möglichst nahe kommt. Dies wird eine Musiksuchanwendung sein, die verwendet wird iTunes-Such-API. Dort werden wir alle Best Practices anwenden und eine einfachere Option für die Verwendung von RxSwift im MVC-Paradigma in Betracht ziehen.

RxSwift – warum braucht ein iOS-Programmierer dieses Framework, wie erleichtert es einem Entwickler das Leben?

RxSwift optimiert die Arbeit mit Ereignisströmen und Verbindungen zwischen Objekten. Das einfachste und offensichtlichste Beispiel sind Bindungen: Sie können beispielsweise die Schnittstelle aktualisieren, indem Sie einfach neue Werte in einer Variablen im ViewModel festlegen. Dadurch wird die Schnittstelle datengesteuert. Darüber hinaus können Sie mit RxSwift das System in einem deklarativen Stil beschreiben, wodurch Sie Ihren Code organisieren und die Lesbarkeit verbessern können. All dies trägt dazu bei, Anwendungen effizienter zu entwickeln.

Für einen Entwickler sind Kenntnisse des Frameworks auch ein gutes Plus im Lebenslauf, da Verständnis für reaktive Programmierung und insbesondere Erfahrung mit RxSwift auf dem Markt geschätzt werden.

Warum dieses spezielle Framework anderen vorziehen?

RxSwift hat die größte Community. Das heißt, es besteht eine größere Wahrscheinlichkeit, dass das Problem, mit dem der Entwickler konfrontiert ist, bereits von jemandem gelöst wurde. Auch eine große Anzahl Bindungen sofort einsatzbereit. Darüber hinaus ist RxSwift Teil von ReactiveX. Das bedeutet, dass es beispielsweise ein Analogon für Android gibt (RxJava, RxKotlin) und die Kollegen in der Werkstatt untereinander die gleiche Sprache sprechen können, obwohl manche mit iOS, andere mit Android arbeiten.

Das Framework wird ständig aktualisiert, kleinere Fehler behoben, Unterstützung für Funktionen neuer Versionen von Swift hinzugefügt und neue Bindungen hinzugefügt. Da RxSwift Open Source ist, können Sie alle Änderungen verfolgen. Darüber hinaus besteht die Möglichkeit, diese selbst hinzuzufügen.

Wo soll RxSwift eingesetzt werden?

  1. Bindungen. In der Regel sprechen wir von der Benutzeroberfläche, der Möglichkeit, die Benutzeroberfläche zu ändern, als würde man auf Datenänderungen reagieren, und der Benutzeroberfläche nicht explizit mitteilen, dass es Zeit für eine Aktualisierung ist.
  2. Beziehung zwischen Komponenten und Vorgängen. Nur ein Beispiel. Wir müssen eine Liste der Daten aus dem Netzwerk erhalten. Tatsächlich ist dies kein so einfacher Vorgang. Dazu müssen Sie eine Anfrage senden, die Antwort einem Array von Objekten zuordnen, sie in der Datenbank speichern und an die Benutzeroberfläche senden. In der Regel sind verschiedene Komponenten für die Durchführung dieser Vorgänge verantwortlich (wir lieben und befolgen die Prinzipien). SOLIDE?). Mit einem Tool wie RxSwift ist es möglich zu beschreiben, WAS das System tun wird und WIE es an anderen Stellen tun wird. Dadurch wird eine bessere Organisation des Codes erreicht und die Lesbarkeit erhöht. Relativ gesehen lässt sich der Code in ein Inhaltsverzeichnis und das Buch selbst unterteilen.

Coroutinen in Kotlin

RxSwift und Coroutinen in Kotlin – ein Wahlfach in mobiler Entwicklung von AGIMA und GeekBrains
Wahlfachlehrer Alexander Tizik: „Moderne Entwicklung erfordert moderne technische Mittel“

Was wird an der GeekBrains-Fakultät im Rahmen des Markenviertels gelehrt?

Theorie, Vergleiche mit anderen Ansätzen, praktische Beispiele in reinem Kotlin und im Android-Anwendungsmodell. Zur Übung wird den Studierenden eine Anwendung gezeigt, in der alles an Coroutinen gebunden ist. Tatsache ist, dass die meisten Anwendungen vollständig asynchron und parallel rechnen. Aber Kotlin-Coroutinen ermöglichen es, verwirrenden, heterogenen oder übermäßig komplexen und leistungsintensiven Code auf einen einzigen, leicht verständlichen Stil zu reduzieren, was Vorteile bei der korrekten Ausführung und Leistung bringt.

Wir werden lernen, idiomatischen Code in Coroutinen zu schreiben, der praktische Probleme löst und auch ohne tiefe Kenntnisse über die Funktionsweise von Coroutinen auf den ersten Blick verständlich ist (was man von Bibliotheken wie RxJava nicht behaupten kann). Wir werden auch verstehen, wie man komplexere Konzepte wie das Akteurmodell verwendet, um komplexere Probleme zu lösen, wie zum Beispiel das Data Warehouse im MVI-Konzept.

Übrigens noch mehr gute Nachrichten. Während das Wahlfach aufgezeichnet wurde, wurde ein Update der Kotlin Coroutines-Bibliothek veröffentlicht, in dem die Klasse erschien Flow - Analogon der Typen Flowable и Observable von RxJava. Das Update vervollständigt die Coroutinen-Funktion aus Sicht des Anwendungsentwicklers im Wesentlichen. Zwar gibt es immer noch Raum für Verbesserungen: Trotz der Tatsache, dass es dank der Unterstützung von Coroutinen in Kotlin/Native bereits möglich ist, plattformübergreifende Anwendungen in Kotlin zu schreiben und nicht unter dem Mangel an RxJava oder Analoga in reinem Kotlin zu leiden, Die Unterstützung für Coroutinen in Kotlin/Native ist noch nicht vollständig. Beispielsweise gibt es kein Konzept für Akteure. Generell hat das Kotlin-Team Pläne, komplexere Akteure auf allen Plattformen zu unterstützen.

Kotlin-Coroutinen – wie helfen sie einem Kotlin-Entwickler?

Coroutinen bieten eine großartige Möglichkeit, Code zu schreiben, der lesbar, wartbar, sicher, asynchron und parallel ist. Sie können auch Adapter für andere asynchrone Frameworks und Ansätze erstellen, die möglicherweise bereits in der Codebasis verwendet werden.

Wie unterscheiden sich Coroutinen von Threads?

Das Kotlin-Team nennt Coroutinen Lightweight-Threads. Außerdem kann eine Coroutine irgendeinen Wert zurückgeben, da es sich bei einer Coroutine im Kern um eine unterbrochene Berechnung handelt. Es hängt nicht direkt von System-Threads ab; Threads führen nur Coroutinen aus.

Welche praktischen Probleme lassen sich mit Coroutine lösen, die mit „reinem“ Kotlin nicht oder nur schwer zu lösen sind?

Alle asynchronen, parallelen, „konkurrierenden“ Aufgaben lassen sich gut mit Coroutinen lösen – sei es die Verarbeitung von Benutzerklicks, das Gehen ins Internet oder das Abonnieren von Updates aus einer Datenbank.

In reinem Kotlin werden diese Probleme auf die gleiche Weise wie in Java gelöst – mit Hilfe von Tausenden von Frameworks, von denen jedes seine eigenen Vor- und Nachteile hat, aber keines von ihnen Unterstützung auf Sprachebene bietet.

Zusammenfassend lässt sich sagen, dass beide Wahlfächer (und auch die Hauptfächer) entsprechend den veränderten äußeren Bedingungen aktualisiert werden. Wenn wichtige Updates in Sprachen oder Frameworks erscheinen, berücksichtigen Lehrer dies und passen das Programm an. All dies ermöglicht es Ihnen, sozusagen am Puls des Entwicklungsprozesses zu bleiben.

Source: habr.com

Kommentar hinzufügen