L’image ci-dessous résume les débuts des mobiles :
On peut dater les tous débuts des mobiles aux alentours de 1990. À cette époque apparaît en effet une nouvelle norme permettant des communications sans fil. Il s’agit de la norme GSM 2G. GSM est l’acronyme de « Global System for Mobile communications). La norme 2G permet un débit de 9,6 kbit/s. Ce n’est pas encore top moumoute, mais, pour l’époque, ce n’est pas si mal, d’autant que les contenus multimédias que nous connaissons aujourd’hui n’existent pas encore.
Toujours à cette époque apparaît le premier smartphone. On peut débattre de quel est le tout premier engin de cette sorte. Sans doute s’agit-il de l’IBM Simon que vous voyez tout en haut de l’image ci-dessus. Même s’il a un « look » très différent des smartphones actuels, c’est tout de même un « smart phone » car il est doté d’un écran tactile et, en plus de permettre des appels téléphoniques, il permet de transmettre et de recevoir des messages radio (pager).
En 1999 est lancé un nouveau téléphone cellulaire, le Nokia 3210. C’est l’un des premiers succès des smartphones auprès du grand public. Il est doté d’un dictionnaire d’écriture prédictive T9 :
À chaque touche du clavier du téléphone sont associées des lettres, en tapant consécutivement sur la même touche, on accède aux différentes lettres et un programme prédit et affiche le mot le plus probable correspondant dans son dictionnaire. C’est révolutionnaire pour l’époque et c’est une des raisons du succès de ce smartphone (160 millions d’exemplaires vendus).
Les smartphones ont besoin de systèmes d’exploitation et l’entreprise Research In Motion (RIM) en développe un en C++, qu’elle nomme BlackBerry OS et qui constituera le coeur des BlackBerries. RIM changera finalement son nom pour devenir BlackBerry. Les blackBerries se distinguent de leurs concurrents par leurs écrans XXL et la foultitude de touches de leurs claviers, ce qui permet d’avoir des applications sophistiquées.
Les smartphones sont, comme leur nom l’indique, intelligents et on peut exécuter dessus des applications mais ils sont toujours limités en termes de communications : le débit est toujours limité à 9,6Kbit/s. C’est moche… Heureusement, en 2006 apparaît une nouvelle norme, GSM 3G, qui permet enfin d’avoir des vitesses de transfert acceptables : 3,6 Mbit/s.
On peut enfin surfer sur internet avec un smartphone… heu, non, pas vraiment parce que les écrans ne permettent pas vraiment cela. Mais un nouvel arrivant va tout changer : en 2007, l’iPhone 1, aussi appelé iphone 2G, est lancé. Un look révolutionnaire, plus de clavier avec des touches qui prennent les 3/4 du smartphone, un écran tactile qui permet de tout faire. L’iphone 1 n’est pas compatible 3G mais il supporte l’EDGE (Enhanced Data Rates for GSM Evolution), qui se situe entre la 2G et la 3G en termes de rapidité. 2007 correspond également, et c’est logique, au lancement d’iOS (qui s’appuie sur un système hybride, fondé sur le micro-noyau Mach et des service Unix, appelé XNU). 2007 est l’année des OS puisque c’est également la naissance d’Android qui, lui, s’appuie sur Linux plutôt que XNU.
Résumons : on a maintenant des smartphones avec des capacités de communications rapides (3,6 Mbit/s), des écrans qui permettent de faire plein de choses, des OS qui permettent d’envisager l’exécution de pleins d’applications. Il ne reste plus qu’à mettre à disposition ces applications. C’est fait en 2008 avec l’apparition de l’App Store et d’Android Market. Pour frapper fort, l’app store est lancé avec plus de 500 applications. On est maintenant dans l’ère des smartphones avec foultitudes d’applications.
En 2009 Samsung arrive enfin dans le paysage. Il propose son Samsung Galaxy i7500. On voit maintenant que les smartphones font la part belle aux grands écrans tactiles. Il manque encore Windows avec ses Windows Phones. Ils apparaissent l’année suivante.
La 3G est une nette amélioration par rapport à la 2G mais l’évolution des technologies web, notamment la publication de contenus multimédias de plus en plus sophistiqués la rend trop lente. En 2010 apparaît donc une nouvelle norme, la GSM 4G, supportant des débits jusqu’à 3Gbit/s. Il faudra attendre environ 7-8 ans, vers 2017, 2018, pour la génération d’après : la 5G.
Pour terminer, notons que, côté Google, une fusion entre Android Market, Google Movies et Google Music a lieu en 2012, qui résulte en le Google Play que nous connaissons maintenant.
Il existe plusieurs types d’applications mobiles. On peut au moins citer :
les applications natives, qui sont écrites dans un langage source puis compilées pour la plateforme que l’on souhaite (Android, iOS, etc.).
Dans cette catégories d’applications, les langages les plus utilisés sont :
iOS : traditionnellement Objective-C mais, depuis 2014, il est sans doute plus judicieux d’utiliser swift.
Android : traditionnellement Java, C++, et depuis 2017 Kotlin.
Windows Phone : C++ et, surtout, C#.
Avantages | Inconvénients |
---|---|
Rapidité (compilé pour l'OS) | Pas cross-plateforme |
Accès aux fonctionnalités de l'OS (GPS, photo, etc.) | Updates sur l'App store ou Google play |
Les applications web :, qui sont écrites comme des pages web et qui utilisent des frameworks de type WebView pour les afficher, donnant ainsi l’apparence que ce sont des applications comme les autres. WebView permet en effet de un contenu web dans une application native.
iOS : ce framework s’appelle UIWebView ou WKWebView. Apple considère que ce type d’application n’est pas une « vraie » application et se réserve le droit de les bannir de l’App Store.
Android : Le framework s’appelle vraiment WebView.
Avantages | Inconvénients |
---|---|
Cross-plateforme | Exécution plus lente (il faut interpréter le DOM) |
Développement simple (c'est juste du web) | Support (App Store) |
Les applications hybrides : l’idée c’est d’essayer d’avoir le meilleur des deux mondes (natif/web). Le code est écrit comme une application web mais il utilise une librairie lui permettant d’accéder aux fonctionnalités de l’OS. Du coup, l’application a les mêmes capacités qu’une application native.
Les technologies populaires pour ce type d’application sont :
Apache Cordova : sorti en 2009. Le code de l’application est écrit en JavaScript, HTML, CSS.
Xamarin : sorti en 2011. Le code de l’application est écrit en C#.
NativeScript : sorti en 2014. Le code de l’application est écrit en Javascript.
React Native : sorti en 2015. Le code de l’application est écrit en Javascript + du code natif en Java pour Android ou Objective-C ou Swift pour iOS.
Flutter : sorti en 2017. Le code de l’application est écrit en Dart.
Ionic Capacitor : sorti en 2018. Le code de l’application est écrit en JavaScript, HTML, CSS.
Avantages | Inconvénients |
---|---|
Cross-plateforme | 1 mise en production spécifique par OS |
Accès aux fonctionnalités de l'OS | Installations via l'app Store et Google Play |
Tous ces types d’applications, si elles ont besoin d’accéder à des données extérieures au smartphone, considèrent qu’elles y ont accès via le réseau qui, c’est bien connu, est toujours disponible. Mais quid lorsque l’on est en voiture dans un tunnel et que l’on perd le signal ? Ou bien si l’on est dans un avion ? Il pourrait être utile de posséder des applications capables d’anticiper ce genre de situations. Fort heureusement, de telles applications existent :
Les Progressive Web Applications (PWA) : ce sont des améliorations des applications hybrides qui doivent vérifier certaines contraintes :
Fiabilité : les PWA peuvent fonctionner en l’absence de réseau (utilisation d’un cache)
Sécurité : Les PWA doivent exclusivement utiliser des liaisons sécurisées (https).
Installable : Les PWA possèdent leur propre mécanisme d’installation, qui ne nécessite pas d’utiliser l’App Store ou Google Play.
Progressif : Les updates de l’application se font de manière automatiques via des notifications.
Techniquement, pour pouvoir être considérée comme une PWA, une application doit impérativement respecter les 3 caractéristiques suivantes :
Utilisation exclusive de https pour les échanges réseau,
Avoir un manifeste (ce qui permet les installations),
Utiliser un Service Worker, qui permet de réaliser les updates, les sauvegardes dans le caches, etc.