Introduction
État des lieux du développement mobile
1. Un marché en progression
Le développement mobile est un marché très important. Selon le rapport d’App Annie, en 2018, il y aurait eu 194 milliards de téléchargements dans le monde tous stores d’applications confondus.
Cela représente une progression de 35 % en deux ans, ce qui reste considérable. Il y a donc un vrai potentiel au même titre que le marché du Web.
De ce fait, les offres d’emploi dans le domaine ne sont pas rares. Mais comme toujours, tout dépend des compétences possédées.
En effet, il existe, là aussi, une multitude de façons de créer des applications. La plus courante est le développement dans un langage natif soit sur Android, soit sur iOS. Il existe également beaucoup de façons de créer des applications pour les différentes plateformes à partir d’un seul et unique code.
2. Application Android
Concernant Android, il existe deux langages possibles : Java et Kotlin.
Le premier a longtemps été le plus prisé des entreprises puisque ce langage très courant ne demandait souvent pas de formation supplémentaire aux équipes. En effet, il y a sur le marché du travail beaucoup de développeurs Java. Quant à Kotlin, qui est beaucoup plus récent (à ce sujet, lire l’excellent ouvrage d’Anthony COSSON : Kotlin, les fondamentaux du développement d’applications Android aux Éditions ENI), il a eu plus de mal à s’imposer.
Toutefois, lors des dernières conférences Google IO qui se sont tenues courant mai 2019, Kotlin est devenu le moyen privilégié pour le développement d’applications Android. Cette position de Google ne fait qu’entériner les choses. Depuis longtemps déjà, officieusement, Java avait perdu son trône.
Plusieurs raisons peuvent expliquer cela. Tout d’abord, il existe un partenariat fort entre Google et JetBrains, le propriétaire de Kotlin. L’interface de développement (IDE) Android Studio est d’ailleurs fournie par ces derniers. De plus, ce langage est plus moderne que Java.
Mais la raison principale est qu’Oracle a entamé depuis 2010 un procès à Google pour atteinte au copyright.
Après de multiples rebondissements, Google a perdu. Reste à connaître le montant des dommages qu’ils devront payer. Mais, il est évident que les sommes seront élevées.
Autant de bonnes raisons, donc, pour laisser tomber Java au profit de Kotlin.
3. iOS
Apple, de son côté, a une philosophie très différente de Google. Plus refermée sur elle-même, l’entreprise a la volonté de contrôler toute sa chaine de production. Des produits, en passant par le système d’exploitation et jusqu’aux langages de programmation.
Objective-c est sorti en 1983. Un peu vieillissant, il n’était pas étonnant qu’un autre lui succède. Swift est donc arrivé en 2014....
Flutter
1. Présentation
L’arrivée de Flutter provoque un séisme dans le développement mobile. Officiellement, la version 1.0 est sortie en décembre 2018. La technologie est donc très récente.
De quoi s’agit-il ?
Flutter est un SDK (Software Development Kit) ou kit de développement en français. En d’autres mots, c’est un trousseau, une caisse à outils qui va faciliter le développement.
Comme cela a été détaillé dans la section Application Android de ce chapitre, les moyens de création d’applications mobiles sur Android ne sont pas la propriété de Google. Quand bien même Kotlin est poussé en avant, il n’en reste pas moins que ce langage n’appartient pas non plus à Google. Autrement dit, jusqu’à l’arrivée de Flutter, Google ne disposait d’aucun outil permettant la création d’applications qui devait se reposer sur des entreprises tierces.
Il lui fallait donc avoir ses propres outils.
Il ne faut pas oublier non plus leur projet d’un nouvel OS (système d’exploitation) maison nommé Fuchsia qui a l’ambition de remplacer à terme Android et Chrome OS. Ce nouveau système a une visée cross-platform, ce qui signifie qu’il pourrait fonctionner sur n’importe quel type d’appareils.
La firme américaine a voulu dès le début contrôler la chaine de production des applications qui pourraient être développé dessus.
Flutter est donc né de ces besoins.
Mais l’idée va plus loin. Car si Fuchsia se veut cross-platform, il fallait que Flutter le soit aussi.
Au constat de ce qui a été évoqué précédemment, il restait à choisir une technologie qui permette cela. JavaScript n’a pas été retenu. La réponse se trouve peut-être dans un document interne paru en novembre 2010 nommé "Future of JavaScript" doc from our internal "JavaScript Summit" où Google fait état de son inquiétude vis-à-vis de JavaScript et de son avenir en raison, entre autres, de son manque de structure. Il indique notamment deux pistes qui pourraient être envisagées. La première, la plus facile, serait de contribuer à l’amélioration de celui-ci. Dans la mesure où cette option reste limitée, il est évoqué, dans un second temps, d’élaborer un nouveau langage qui viendrait remplacer JavaScript en comblant ses défauts.
C’est à ce titre que Google a sorti le langage Dart en 2011. Flutter s’appuie sur Dart comme langage de base, il a donc une structure solide.
Ce sujet sera abordé un peu plus loin dans la section Dart de ce chapitre.
2. Historique et versions
Voici les différentes versions stables de Flutter :
Version |
Date de sortie |
1.0 |
04/12/2018 |
1.2.1 |
26/02/2019 |
1.5.4 |
07/05/2019 |
1.7.8 |
24/07/2019 |
1.9.1 |
10/09/2019 |
Ce qui est remarquable, c’est le nombre élevé de versions sorties en si peu de temps. Cela montre l’engouement de Google vis-à-vis du projet.
D’autant plus que chaque mise à jour apporte son lot de corrections et de nouveautés.
Par exemple, lors des conférences Google IO qui se sont déroulées en mai 2019, Google a sorti la version 1.5 de Flutter dans laquelle le projet Hummingbird a été révélé. Il permet à Flutter de ne plus se cantonner au développement mobile mais de toucher également au Web !
Dans la dernière version sortie en septembre 2019, il y a eu plus de 1540 contributions, corrections ou améliorations.
Le support pour les derniers OS d’Apple, MacOs Catalina et iOS 13 a été rendu effectif alors que ceux-ci sont très récents ou même pas encore officiellement mis en production (Catalina date de juin 2019 et iOS 13 du 19 septembre 2019).
3. Dart
Logo de Dart
Dart est le langage choisi par Google pour les applications Flutter. Comme cela a été évoqué précédemment, il a d’abord été conçu pour supplanter JavaScript.
Sorti en 2011, il n’a pas finalement eu le succès escompté. Malgré tout, il est intéressant de noter qu’il est devenu une norme de l’ECMA (European Computer Manufacturers Association) au même titre que JavaScript.
Tombé un peu aux oubliettes, Dart refait surface avec l’arrivée de Flutter et se refait une nouvelle jeunesse avec l’arrivée d’une version 2.0.
C’est à ce titre qu’en septembre 2019, Google sort la version 2.5.
Dart est un langage qui a été conçu avec l’optique d’être facilement appréhendable par les développeurs maîtrisant déjà les langages C, C++ ou encore Java.
Les chapitres Dart, les fondamentaux et Dart, notions avancées permettront de détailler ses spécificités.
4. Développement cross-platform
Le point fort incontestable de Flutter est la possibilité de pouvoir réaliser des applications pour différents supports tels qu’Android et iOS à partir d’un seul et unique code source.
Le problème avec ce type de technologie reste dans la part de code « spécifique » à adapter sur chaque OS qui peut être plus ou moins conséquente.
Avec Flutter, il n’y a quasiment aucun reste à charge. Pourquoi ? Cela est dû à la façon dont Flutter est constitué. En effet, il n’utilise pas les composants natifs mais l’ensemble de ces éléments a été recréé. Dès lors, le développeur dispose d’un ensemble de fonctionnalités (boutons, champs, dispositions…) propres à chaque plateforme (voir juste après Organisation par Widgets).
Il n’est pas faux de dire qu’une application peut être...