Swift et SwiftUI utilisés dans 15% des applications et des binaires d'iOS 15

Mickaël Bazoge |

Le langage de programmation Swift et le framework d'interface SwiftUI représentent une part de plus en plus importante d'iOS 15, mais ils sont encore très loin d'être majoritaires. Objective-C occupe toujours la part du lion et ce n'est pas près de changer avec iOS 16… ni même 17 ou 18 !

Le développeur Timac a livré son analyse annuelle des langages utilisés dans les binaires du système d'exploitation de l'iPhone. Il en ressort que dans iOS 15, 607 binaires ont été développées avec Swift (deux fois plus que dans iOS 14) et 114 l'ont été avec SwiftUI (quasiment trois fois plus que dans iOS 14).

Les applications pré-installées qui utilisent désormais SwiftUI sont donc plus nombreuses et surtout, ce ne sont pas d'obscures apps : Livres, Plans, Notes, Météo, Musique, Podcasts ainsi que certaines portions de FaceTime et des réglages s'appuient sur le framework d'interface. Ces logiciels s'ajoutent à Traduire, Raccourcis, Téléphone et à des parties de l'écran verrouillé et de l'assistant de connexion des AirPods qui utilisaient déjà SwiftUI.

Au vu de l'importance et de la popularité des applications ajoutées au tableau de chasse de SwiftUI, ce résultat est donc significatif et il démontre la souplesse et la puissance du framework. Le reste des binaires SwiftUI présents dans iOS 15 sont des widgets ou d'autres frameworks.

Tout cela est bel et bon, mais ces chiffres ne pèsent pas lourds face à Objective-C : 4 195 binaires ont été développés avec ce langage (soit 89%), pour 802 en C++ (17%) et 365 en C (8%). 13% des binaires reposent sur Swift, 2% sur SwiftUI. Le chemin sera donc très long avant que Swift renverse la vapeur et devienne le langage dominant dans iOS, ce d'autant que la part des binaires Objective-C progresse d'une année sur l'autre : ils étaient 88% dans iOS 14.

Toutefois, Swift poursuit son bonhomme de chemin en gagnant 5 points d'une année sur l'autre. Et si le langage lancé en 2014 a dépassé C en 2020, il est tout prêt d'en faire autant avec C++. C et C++ sont généralement utilisés dans des binaires liés à des fonctions bas niveau pour la téléphonie, l'audio, la vidéo, le web.

Tags
avatar Tomtomrider | 

Alors pour un mec comme moi qui n’a pas encore fini le premier tuto de Swift playground et qui n’y connait donc fifre en programmation, ça apporte quoi à l’utilisateur qu’une app soit dans tel ou tel language ? Est-ce plus du côté développeur que ça modifie / apporte quelque chose? De meilleures performances ? Faire des choses dans un langage que l’on ne peut pas faire avec un autre? Merci d’avance à ceux qui prendront le temps de répondre!

avatar cecile_aelita | 

@Tomtomrider

« ça apporte quoi à l’utilisateur »

Question qui m’intéresse aussi en effet 🥰

avatar Florent Morin | 

@Tomtomrider

Objective-C est le langage historique d’Apple qui est né il y a environ 35 ans (début des années 80) : il a donc été largement optimisé. Et il propose également plus de souplesse que Swift car il est moins « sécurisé » au sens où il est plus facile de se planter.

Donc forcément, il est difficile à détrôner. Même si Swift s’améliore d’année en année. Tout comme Objective-C a fini par détrôner le C historique pour les mêmes raisons.

Et côté utilisateur, ça apporte des apps plus performantes. Mais plus complexes à concevoir.

avatar Tomtomrider | 

@FloMo

Hum, d’accord.
Mais du coup vous dites d’un côté qu’Objective C « a été largement optimisé » et après que Swift offre des app plus performantes. Peut on dire qu’aujourd’hui, abstraction faite des difficultés dont vous parlez (rigueur du code par exemple) on pourrait faire un iOS 100% en Swift et que de facto ce système serait bien plus performant ?

avatar Florent Morin | 

@Tomtomrider

Swift s’améliore mais il faudra des années avant d’atteindre les performances d’Objective-C.

C’est l’objectif de Swift 6.

avatar Tomtomrider | 

@FloMo

Merci Florent

avatar mat16963 | 

@FloMo

En tout cas ce que je remarque du côté utilisateur que je suis c’est que les apps qu’Apple développe en swift semblent moins soignées: par exemple les animations de la nouvelle app Météo sont sacadées (même sur iPhone 12 !), la nouvelle version de FaceTime manque aussi cruellement de finition (rien que le changement caméra avant/caméra arrière fait très brut de décoffrage et sans l’animation « historique »).

En tant que développeur peux-tu m’éclairer ? Est-ce juste de la paraisse des dev d’Apple ou bien il y a vraiment quelque chose dans Swift (SwiftUI ?) qui amène à ce genre de conséquences d’animations qui laguent qui qui n’existent tout simplement pas ? Ça m’intéresse vraiment, car ça me saute aux yeux avec toutes ces nouvelles apps d’Apple 100% Swift…

avatar Florent Morin | 

@mat16963

C’est du SwiftUI et donc c’est encore un peu trop neuf.

Sachant que généralement, ce genre d’évolution commence avec des performances en retrait et finit avec de meilleures performances.

avatar mat16963 | 

@FloMo

D’accord merci…

avatar Bounty23 | 

C’est pas très LGBT comme titre 🤨🤓😏

avatar Mrleblanc101 | 

@Bounty23

Wtf

avatar anton96 | 

@Bounty23

G pa la ref

avatar Tomtomrider | 

@anton96

Binaire, non binaire…
Enfin je pense que c’est à ca qu’il fait référence

avatar chrisfrank | 

“avant que Swift renverse la vapeur” I see what you did there…

avatar Tibimac | 

À mes débuts j'adorais l'Objective-C et si la force des choses (le monde professionnel) ne m'avait pas forcé à passer à Swift je n'y serais peut-être pas passé car au début je ne l'aimais vraiment pas. Aujourd'hui je trouve le Swift bien plus élégant et agréable !
Certes il est plus rigide sur certains point surtout car plus type-safe mais en vrai c'est je préfère un code qui ne compile pas plutôt que passer des heures à debugger un truc qui ne fonctionne pas sans qu'on comprenne bien pourquoi. Car cette "souplesse" dont on parle elle est toute relative. Par exemple les enums sont mille fois plus souple et agréable en Swift qu'en Objective-C. Idem sur les struct !
Bref j'aurais BEAUCOUP de mal à revenir en arrière mais oui une app en Objective-C est, il me semble, toujours plus rapide à compiler et plus légère.

Swift a bientôt 7 ans et le fait de pouvoir faire du Swift sur serveur c'est vraiment génial aussi ! Objective est plutôt mort mais c'est un mort vivant car certaines parties nécessitent toujours de l'utiliser comme pour de l'ISA Swizzling et des trucs bas niveau mais j'ai hâte que Swift le remplace complètement et que Swift ne tourne plus sur le runtime d'Objective-C et qu'on puisse pour autant faire du Swizzling en pur Swift 🙂

CONNEXION UTILISATEUR