Introduction à SwiftUI

· 3 minutes de lecture
Introduction à SwiftUI

Apple a radicalement changé la façon dont nous développons des applications pour ses plateformes. Vous connaissez sans doute l'Objective-C, le langage qu'Apple utilisait avant Swift.

Pour comprendre d'où vient Objective-C, il faut remonter à ses origines. Ce langage s'inspire de Smalltalk, un ancien langage de programmation qui a révolutionné notre façon de coder en introduisant la programmation orientée objet. Smalltalk était en quelque sorte le précurseur de langages comme Java que nous connaissons aujourd'hui.

Oui. C'est le logo de SmallTalk

L'Objective-C est arrivé chez Apple en 1996 lors du rachat de NeXT, l'entreprise que Steve Jobs avait créée après avoir quitté Apple. Ce langage est devenu alors la référence pour développer sur Mac et plus tard sur iPhone.

Concrètement, l'Objective-C prend le langage C (très technique) et y ajoute des fonctionnalités modernes pour créer des applications plus facilement, en s'inspirant justement des idées de Smalltalk.

L'arrivé de Swift

Craig Federighi lors de la WWDC 2014

La naissance de Swift, destiné à être le successeur de l'Objective-C. Swift a été présenté pour la première fois lors de la fameuse WWDC d'Apple 2014 (Worldwide Developers Conference). Créé par Chris Lattner et son équipe, c'est le nouveau langage destiné au développement d'applications natives sur toutes les plateformes Apple.

Si vous avez déjà développé en C, C++ ou encore en Obj-C vous savez à quel point la gestion de la mémoire est cruciale et c'est notamment ce problème que Swift est venu résoudre grâce à une gestion automatique et sécurisée de la mémoire, corrigeant l'instabilité dans les applications pour éviter les memory leaks. Avec l'IDE (environnement de développement intégré) d'Apple, Xcode a permis aux développeurs de prendre en main ces deux langages avec notamment les storyboards utilisés pour le design des applications.

Objective-C vs Swift

La maturité de l'Obj-C en fait un langage encore populaire. Bien qu'il ne soit plus le seul langage pour le développement d'applications natives sur les plateformes Apple depuis l'arrivée de Swift, il y a encore beaucoup d'experts qui lui sont fidèles. Tout comme le Java, ces derniers ne trouvent aucun intérêt à apprendre un nouveau langage. Swift est quant à lui arrivé quelques années après, et depuis qu'il est devenu open source, c'est devenu le premier choix pour la plupart des projets.

SwiftUI : LA révolution des interfaces

Lors de la WWDC 2019, après son "Good morning" habituel, Tim Cook a présenté SwiftUI, le nouveau framework d'Apple venu à nouveau, comme Swift avant lui, changer l'ère du développement côté iOS. Conçu pour simplifier et moderniser la manière dont les développeurs créent des interfaces utilisateurs, il a littéralement révolutionné le monde iOS.

Avant SwiftUI, les développeurs utilisaient UIKit (iOS) et AppKit (macOS) utilisant une approche impérative (on doit décrire étape par étape ce que l'interface doit faire, un peu lourd...). SwiftUI est arrivé avec l'approche déclarative (au lieu de décrire comment faire quelque chose, on déclare simplement ce qu'on veut voir). SwiftUI se charge après d'actualiser automatiquement quand l'état change, par exemple :

Text("Bonjour")
  .font(.headline)
  .foregroundColor(.blue)

L'autre avantage, c'est qu'on produit moins de code pour exactement la même chose, et ça c'est plutôt pas mal du tout. À la différence de UIKit/AppKit, on utilise uniquement SwiftUI pour produire un code compatible avec toutes les plateformes Apple : iOS, macOS, watchOS, iPadOS...

Mieux encore ?

Il est conçu pour fonctionner main dans la main avec Swift, le langage de 2014. L'un des autres avantages est la prévisualisation en temps réel (live preview) qui n'était pas possible avec les frameworks précédents, obligeant à recompiler à chaque fois.

Un exemple de live preview, le code à gauche, le résultat à droite :)

Je vous propose dès les prochains articles de vous plonger dans les bases de SwiftUI avec des exemples mettant en valeur tout ce que vous pouvez faire avec ce langage moderne. :)