Najveća novost s godišnje WWDC konferencije održane u lipnju bilo je Appleovo uvođenje potpuno nove paradigme programiranja - SwiftUI-a.
Tu temu već je načeo Zoran Pleško iz Mašinerije u svom članku o novostima iz Apple svijeta za programere, a Petra Čvrljević, iOS programerka iz iste tvrtke, provela je neko vrijeme testirajući novu paradigmu koja je još uvijek u beti. Evo teksta s njezinim iskustvima.
Na ovogodišnjem WWDC-u Apple je predstavio SwiftUI - novi framework koji mijenja paradigmu pisanja korisničkog sučelja iz imperativne u deklarativnu. Deklarativna paradigma zapravo omogućuje da određen set informacija ima jasno zadan način na koji se prikazuje na ekranu, dok kod imperativnog načina pisanja sučelja programer mora napisati logiku za prikazivanje seta informacija na ekranu. Kod velikog broja informacija i velikog broja interakcija, ta logika raste, postaje komplicirana i podložna bugovima. Kod deklarativnog pisanja, te logike nema, ili je ima puno manje, te stoga imamo bolju kontrolu nad korisničkim sučeljem i manje bugova.
SwiftUI JOŠ NIJE SPREMAN ZA PRODUKCIJSKI RAZVOJ
Obećanja i prednosti ovakvog programiranja su znatno manji trošak za klijenta i brže vrijeme razvoja iOS, iPadOS, macOS i tvOS aplikacija, tako da smo odmah htjeli isprobati koliko je od onoga što je Apple prezentirao istina. Za to smo odabrali video-on-demand iOS aplikaciju koju razvijamo za američkog klijenta i odlučili ju napisati ponovno, kotisteći SwiftUI. Odmah moram napomenuti da je prvotni ushit i entuzijazam relativno brzo razbijen jer SwiftUI još uvijek nije niti blizu spreman za produkcijski razvoj, no zelenilo s onu strane ograde se defintivno nazire!
Ustvari, SwiftUI jedan je jednim dijelom sloj iznad postojećeg UIKit-a koji se do sada koristio za razvoj, no drugim dijelom, dodani su elementi koji su potpuno novi i ne koriste postojeće UIKit elemente.
Samo dizajniranje ekrana više ne koristi AutoLayout za pozicioniranje već se elementi grupiraju na različite načine (grupiranjem) čime se postiže željeni izgled ekrana. Kreiranje ekrana može se istovremeno raditi preko koda ili sučelja, čime je oboje sinkronizirano pa ako se nešto napiše u kodu, isto je odmah vidljivo i na ekranu. Sami elementi od kojih se može sastojati ekran dosta su slični UIKit-u koji je do sada korišten, iako svi imaju nešto drugačije nazive (većina je samo izbacila UI, a neki su dobili potpuno nova imena).
COMBINE OLAKŠAVA RAZVOJ
Combine se čini kao najbolja stvar koju je Apple predstavio. U suradnji s novim SwiftUI omogućuje programerima da definiraju određena stanja i pravila koje aplikacija, odnosno dijelovi aplikacije, moraju zadovoljavati, dok se o svemu ostalom (praćenju promjena) brine sam Combine. To uvelike olakšava razvoj, jer su do sada programeri morali brinuti o tome kada će ažurirati ekran, zbog čega, na koji način će to proslijediti nekom drugom ekranu - što je bio najveći problem kada je trebalo ažurirati nešto na razini cijele aplikacije. Sada se to može rješiti na vrlo jednostavan način: npr. na login ekranu se može definirati da gumb za log in može biti omogućen samo ako su upisani username i password. U Swiftu bi za to trebalo puno više logike i koda nego u SwiftUI. Sada se samo definira varijabla koja će pratiti treba li gumb biti omogućen ili onemogućen, a na programeru je da napiše da omogućavanje gumba ovisi o tom stanju.
U samo nekoliko tjedana koliko sam radila sa SwiftUI, izašle su četiri nove bete. Dio stvari koje su postojale u početku je potpuno maknut, nešto je promijenjeno, a nove stvari se konstantno dodaju. U trenutno aktualnoj verziji beta 4 još uvijek fale elementi kao što je Search (može se implementirati pomoću drugih elemenata), još uvijek nije jasno definiran način prelaska s jednog na drugi ekran kada to nije defaultni NavigationLink preko kojeg se radi push na novi ekran te još fali sitnica koje su programerima možda trn u oku. Međutim, činjenica je da su stalne promjene normalne u beta razvoju te se može očekivati da će se sve posložiti do izlaska javne verzije koja bi trebala izaći u rujnu (iako se malo pitam kako će stići).
Sve u svemu, iako je SwiftUI pokazao velike prednosti, trenutno je previše podložan bugovima pa je stoga nestabilan i ne bih preporučila da se krene u ozbiljan razvoj s njime. S obzirom na trenutno stanje, za produkcijski razvoj pomoću SwiftUI trebati će pričekati još dosta vremena dok se sve ustabili, no SwiftUI je svakako pokazao da će biti način na koji će se aplikacije moći puno bolje, jednostavnije i brže pisati u budućnosti. Naravno, bez obzira na SwiftUI, postojeći način pisanja aplikacija koristeći XIB-ove i Storyboarde biti će aktualan još dugo vremena kao i UIKit, međutim prema onome što SwiftUI planira pružiti, sigurno je da će jednoga dana potpuno zamijeniti postojeći način pisanja aplikacija, no taj dan ipak nije toliko blizu kao što smo se možda veselili.