RxSwift und Coroutines bei Kotlin - optionale mobile Entwicklung von AGIMA und GeekBrains



Wissen ist gut, einfach großartig. Wir brauchen aber auch Übung, um die erhaltenen Daten nutzen zu können und sie vom Status „passiver Speicher“ in den Status „aktive Nutzung“ zu übertragen. Unabhängig davon, wie gut die theoretische Ausbildung ist, ist mehr Arbeit „vor Ort“ erforderlich. Das Vorstehende gilt für praktisch alle Studienbereiche, einschließlich natürlich der Softwareentwicklung.

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

Neulich haben wir mit Igor Vedeneev, einem iOS-Spezialisten, und Alexander Tizik, der sich auf Android spezialisiert hat, gesprochen. Dank ihnen wurde das Wahlfach für mobile Entwicklung durch einen praktischen Spezialkurs über das RxSwift-Framework und die Coroutinen in Kotlin bereichert. In diesem Artikel sprechen Entwickler über die Bedeutung jeder Richtung für Programmierer.

Reaktive Programmierung in iOS am Beispiel von RxSwift



Optionaler Lehrer Igor Vedeneev: „Mit RxSwift fliegt Ihre Bewerbung“

Welche Informationen erhalten Studierende im Wahlfach?

Wir sprechen nicht nur über die Funktionen des Frameworks, sondern zeigen auch, wie es im klassischen MVVM + RxSwift-Bundle angewendet wird. Es werden auch einige praktische Beispiele betrachtet. Um die empfangenen Daten zu konsolidieren, schreiben wir eine Anwendung, die den Feldarbeitsbedingungen so nahe wie möglich kommt. Es wird eine Musiksuchanwendung sein, die die iTunes-Such-API verwendet . 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 dieses Framework für iOS-Programmierer, wie erleichtert es dem Entwickler das Leben?

RxSwift-Stromlinien arbeiten mit Ereignisströmen und Beziehungen zwischen Objekten. Das einfachste und offensichtlichste Beispiel sind Bindemittel: Sie können beispielsweise die Schnittstelle aktualisieren, indem Sie in viewModel einfach neue Werte in einer Variablen festlegen. Somit wird die Schnittstelle datengesteuert. Darüber hinaus können Sie mit RxSwift das System in einem deklarativen Stil beschreiben, wodurch Sie den Code optimieren und die Lesbarkeit verbessern können. All dies hilft, Anwendungen effizienter zu entwickeln.

Für den Entwickler ist die Kenntnis des Frameworks auch ein gutes Plus im Lebenslauf, da ein Verständnis für reaktive Programmierung und insbesondere Erfahrung mit RxSwift auf dem Markt geschätzt wird.

Warum diesen Rahmen wählen und nicht andere?

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 von Bindemitteln aus der Box. Darüber hinaus ist RxSwift Teil von ReactiveX. Dies bedeutet, dass es beispielsweise ein Analogon für Android gibt (RxJava, RxKotlin) und Kollegen dieselbe Sprache miteinander sprechen können, obwohl einige mit iOS und andere mit Android arbeiten.

Das Framework wird ständig aktualisiert, kleinere Fehler werden behoben, Unterstützung für Chips aus neuen Versionen von Swift wird hinzugefügt, neue Ordner werden hinzugefügt. Da RxSwift Open Source ist, können Sie alle Änderungen verfolgen. Darüber hinaus ist es möglich, sie selbst hinzuzufügen.

Wo kann man RxSwift verwenden?

  1. Bindungen. In der Regel handelt es sich hier um die Benutzeroberfläche, die Möglichkeit, die Benutzeroberfläche so zu ändern, als würde sie auf Datenänderungen reagieren, und der Benutzeroberfläche nicht explizit mitzuteilen, dass es Zeit für eine Aktualisierung ist.
  2. Komponenten und Operationen verknüpfen. Sofort ein Beispiel. Wir müssen eine Liste der Daten aus dem Netzwerk erhalten. In der Tat ist dies keine so einfache Operation. Senden Sie dazu eine Anfrage, ordnen Sie die Antwort einem Array von Objekten zu, speichern Sie sie in der Datenbank und senden Sie sie an die Benutzeroberfläche. Verantwortlich für die Durchführung dieser Operationen sind in der Regel verschiedene Komponenten (lieben und befolgen wir die Prinzipien von SOLID ?). Wenn Sie ein Tool wie RxSwift zur Hand haben, können Sie beschreiben, WAS das System tun wird und wie es es tun wird - es wird an anderen Orten sein. Aufgrund dessen wird eine bessere Organisation des Codes erreicht und die Lesbarkeit verbessert. Relativ gesehen kann der Code in ein Inhaltsverzeichnis und das Buch selbst unterteilt werden.

Coroutinen in Kotlin



Optionaler Lehrer Alexander Tizik: „Moderne Entwicklung erfordert moderne technische Mittel“

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

Theorie, Vergleiche mit anderen Ansätzen, praktische Beispiele in reinem Kotlin und im Android-Anwendungsmodell. In Bezug auf die Praxis wird den Schülern eine Anwendung gezeigt, in der alles an Coroutinen gebunden ist. Tatsache ist, dass die meisten Anwendungen kontinuierliches asynchrones und paralleles Rechnen sind. Mit Kotlin-Coroutinen können verwirrende, heterogene oder übermäßig komplexe und anspruchsvolle Leistungscodes auf einen einzigen, leicht verständlichen Stil reduziert werden, wodurch die korrekte Ausführung und Leistung erzielt wird.

Wir werden lernen, wie man idiomatischen Code auf Coroutinen schreibt, was praktische Probleme löst und auf den ersten Blick verständlich ist, auch ohne tiefes Wissen darüber, wie Coroutinen funktionieren (was über Bibliotheken wie RxJava nicht gesagt werden kann). Wir werden auch verstehen, wie komplexere Konzepte wie ein Akteurmodell verwendet werden, um komplexere Aufgaben wie das Data Warehouse im MVI-Konzept zu lösen.

Übrigens mehr gute Nachrichten. Während das optionale aufgezeichnet wurde, wurde die Kotlin Coroutines-Bibliothek aktualisiert, in der die Flow Klasse erschien - ein Analogon der Flowable und Observable Typen von RxJava. Das Update vervollständigt im Wesentlichen die Coroutinen-Funktion aus Sicht des Anwendungsentwicklers. Zwar gibt es noch viel Raum für Entwicklung: Trotz der Tatsache, dass es dank der Unterstützung von Coroutine in Kotlin / Native bereits möglich ist, plattformübergreifende Anwendungen in Kotlin zu schreiben und nicht unter dem Fehlen von RxJava oder Analoga in reinem Kotlin zu leiden, ist die Unterstützung für Coroutine in Kotlin / Native noch nicht vollständig. Zum Beispiel gibt es kein Konzept von Schauspielern. Im Allgemeinen plant das Kotlin-Team, komplexere Akteure auf allen Plattformen zu unterstützen.

Kotlin Coroutines - wie helfen sie dem Kotlin-Entwickler?

Coroutinen bieten eine hervorragende Möglichkeit, lesbaren, unterstützten und sicheren, asynchronen und parallelen Code zu schreiben. Sie können auch Adapter für andere asynchrone Frameworks und Ansätze erstellen, die bereits in der Codebasis verwendet werden können.

Wie unterscheiden sich Coroutinen von Streams?

Das Kotlin-Team nennt Coroutinen leichte Flüsse. Außerdem kann Coroutine einen gewissen Wert zurückgeben, da Coroutine im Wesentlichen eine angehaltene Berechnung ist. Es hängt nicht direkt von System-Threads ab, Threads führen nur Coroutinen aus.

Welche praktischen Probleme können mit Corutin gelöst werden, die mit Hilfe von „sauberem“ Kotlin nicht oder nur schwer zu lösen sind?

Alle asynchronen, parallelen, "wettbewerbsfähigen" Aufgaben werden mithilfe von Coroutine gut gelöst - unabhängig davon, ob Benutzerklicks verarbeitet, das Netzwerk aufgerufen oder Aktualisierungen aus der Datenbank abonniert werden.

In reinem Kotlin werden diese Aufgaben auf die gleiche Weise wie in Java gelöst - mit Hilfe von Tausenden von Frameworks, von denen jedes seine Vor- und Nachteile hat, aber keines von ihnen auf Sprachebene unterstützt wird.



Abschließend ist anzumerken, dass beide Wahlfächer (und auch die Hauptfächer) entsprechend den Änderungen der äußeren Bedingungen aktualisiert werden. Wenn wichtige Aktualisierungen in Sprachen oder Frameworks angezeigt werden, berücksichtigen die Lehrer dies und ändern das Programm. All dies ermöglicht es Ihnen, sich über den Entwicklungsprozess auf dem Laufenden zu halten, wenn ich so sagen darf.

Source: https://habr.com/ru/post/de453962/


All Articles