Reactive Programming in iOS Application Development
Määttä, Matti (2017)
Määttä, Matti
2017
Information Technology
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2017-10-04
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201709201902
https://urn.fi/URN:NBN:fi:tty-201709201902
Tiivistelmä
Today's mobile applications are highly interactive, which means the applications must react to various events originating from the applications or their outside environment. The use of conventional sequential programming approaches, such as callbacks, make these applications difficult to implement, because having to manually orchestrate asynchronous tasks leads to programs that are complex, error-prone and hard to maintain. Reactive programming paradigm is proposed to be a more suitable approach to implement these applications.
This master's thesis examines how a reactive extension library is used to implement an iOS application utilising the reactive programming paradigm. The research is done by implementing an iOS application utilising the paradigm, and by evaluating the implementation to describe the benefits and problems of reactive programming.
The benefits of reactive programming are reduced program complexity when compared to the use of callbacks, the ability to express application logic declaratively by chaining observable sequences with operators, and data-binding enabled by reactive extensions. The problems are strong reference cycles and compiler type inference errors in the Swift programming language caused by a few common patterns, and maintainability concerns related to the complexity of the reactive extension model and its implementation differences in other programming languages. Nykymobiilisovellukset ovat hyvin interaktiivisia, jonka johdosta sovellusten täytyy reagoida moniin sovellusten sisältä tai ulkomaailmasta lähtöisinä oleviin tapahtumiin. Tavanomaisten sekventiaalisten ohjelmointikäytäntöjen, kuten takaisinkutsujen, käyttö tekee edellä mainittujen sovellusten toteuttamisesta vaikeaa, koska käsin tehtävä asynkronisten tehtävien orkestrointi johtaa monimutkaisiin, virhealttiisiin ja hankalasti ylläpidettäviin ohjelmiin. Reaktiivisen ohjelmointiparadigman on ehdotettu olevan sopivampi tapa toteuttaa edellä mainittuja sovelluksia.
Tässä diplomityössä tutkitaan, kuinka reaktiivista laajennoskirjastoa käytetään reaktiivista ohjelmointiparadigmaa hyödyntävän iOS-sovelluksen toteuttamiseen. Tutkimus suoritetaan toteuttamalla kyseistä paradigmaa hyödyntävä iOS-sovellus, ja kuvaamalla käytettyjen reaktiivisten ohjelmointitekniikoiden hyödyt ja ongelmat toteutusta arvioimalla.
Reaktiivisen ohjelmoinnin hyödyt ovat vähentynyt ohjelman monimutkaisuus verraten takaisinkutsujen käyttöön, sovelluslogiikan kuvaaminen deklaratiivisesti ketjuttamalla tarkkailtavia sekvenssejä operaattoreilla ja tiedon sidonta käyttäen reaktiivisia laajennoksia. Ongelmat ovat vahvat viitesyklit ja kääntäjän tyypitysten päättelyn virheet Swift-ohjelmointikielessä aiheutuen muutamasta yleisestä toimintamallista toteutuksessa, sekä ylläpidolliset huolet liittyen reaktiivisen laajennosmallin monimutkaisuuteen ja sen toteutuseroihin muissa ohjelmointikielissä.
This master's thesis examines how a reactive extension library is used to implement an iOS application utilising the reactive programming paradigm. The research is done by implementing an iOS application utilising the paradigm, and by evaluating the implementation to describe the benefits and problems of reactive programming.
The benefits of reactive programming are reduced program complexity when compared to the use of callbacks, the ability to express application logic declaratively by chaining observable sequences with operators, and data-binding enabled by reactive extensions. The problems are strong reference cycles and compiler type inference errors in the Swift programming language caused by a few common patterns, and maintainability concerns related to the complexity of the reactive extension model and its implementation differences in other programming languages.
Tässä diplomityössä tutkitaan, kuinka reaktiivista laajennoskirjastoa käytetään reaktiivista ohjelmointiparadigmaa hyödyntävän iOS-sovelluksen toteuttamiseen. Tutkimus suoritetaan toteuttamalla kyseistä paradigmaa hyödyntävä iOS-sovellus, ja kuvaamalla käytettyjen reaktiivisten ohjelmointitekniikoiden hyödyt ja ongelmat toteutusta arvioimalla.
Reaktiivisen ohjelmoinnin hyödyt ovat vähentynyt ohjelman monimutkaisuus verraten takaisinkutsujen käyttöön, sovelluslogiikan kuvaaminen deklaratiivisesti ketjuttamalla tarkkailtavia sekvenssejä operaattoreilla ja tiedon sidonta käyttäen reaktiivisia laajennoksia. Ongelmat ovat vahvat viitesyklit ja kääntäjän tyypitysten päättelyn virheet Swift-ohjelmointikielessä aiheutuen muutamasta yleisestä toimintamallista toteutuksessa, sekä ylläpidolliset huolet liittyen reaktiivisen laajennosmallin monimutkaisuuteen ja sen toteutuseroihin muissa ohjelmointikielissä.