MEMOIRE M1 Quel type de développement utiliser pour une application mobile multiplateformes ? Dylan ouanounou - 2019 [Adresse de messagerie] Table des matières 1. Historique du développement mobile ............................................................................ 2 2. Développement d’application mobile ............................................................................ 6 3. Applications natives et hybrides d’un point de vu scientifique .................................... 18 4. Les Framework CSS ...................................................................................................... 24 a. b. c. d. e. a. b. c. d. e. f. a. b. c. d. e. f. g. h. L’application Native ........................................................................................................................ 6 L’application Web ........................................................................................................................... 9 L’application Hybride .................................................................................................................... 10 Les PWA ....................................................................................................................................... 14 React Native : ............................................................................................................................... 17 PWA : Progressive Web Apps ........................................................................................................ 19 Native app: ................................................................................................................................... 20 Hybrid App : ................................................................................................................................. 20 React: ........................................................................................................................................... 21 Vue.js : ......................................................................................................................................... 22 Angular 7 : .................................................................................................................................... 23 Bulma ........................................................................................................................................... 24 UIKIT ............................................................................................................................................ 25 Bootstrap ..................................................................................................................................... 26 Fondation ..................................................................................................................................... 27 Materialize ................................................................................................................................... 27 Ionic : ........................................................................................................................................... 33 React native :................................................................................................................................ 34 Flutter : ........................................................................................................................................ 35 1. Historique du développement mobile Utilisation des mobiles : 6,9 Milliard de terminaux vendu en 2014 La couverture atteint environ 95% de la population mondiale Il vend environ 130 millions de smartphones par mois dans le monde soit 1,56 milliard d'euros par an pour un chiffre d'affaires de 388,7 milliards d'euros (2017). C'est en Chine que nous trouvons le plus grand nombre d'utilisateurs de smartphones en 2017 (713,31 millions) devant l'Inde, les États-Unis, le Brésil et la Russie. En 2018, il y a plus de smartphones actifs (7,7 milliards) que d'habitants sur la planète (7,4 milliards). Les ventes de téléphones en France Les ventes de smartphones en France en 2018 32 200 000 Les ventes de smartphones ont chuté pour la première fois en France en 2016 avec 20,2 millions de téléphones vendus (-6%) pour un chiffre d'affaires de 3,7 milliards d'euros (+ 5%). L'usage du Smartphone en France Selon un sondage Credoc de juin 2018, les Français utilisent leur Smartphone pour : naviguer sur Internet (55%), télécharger des applications (48%), géolocaliser (42%), regarder des vidéos (34%). Avec un taux d'équipement de 70% en Smartphone en 2018, le marché français bascule davantage dans une logique de renouvellement que d'équipement. Autre développement, les consommateurs français se tournent de plus en plus vers les téléphones à grand écran et de milieu de gamme haut de gamme, donc plus chers. 70 % Avec un taux d'équipement de 70% dans les smartphones en 2016, le marché français bascule davantage dans une logique de renouvellement que d'équipement. Autre évolution, les consommateurs français se tournent de plus en plus vers les téléphones à grand écran et les téléphones moyens et haut de gamme, qui sont donc plus chers. Nous avons tous une calculatrice "intelligente" ou un téléphone portable, Avec le jeu Snake à installer. Le but du jeu était simple : Un serpent représente une longue ligne de pixels et des points à manger pour grandir. C'était l'ennui dans les années 80 et 90. À part les jeux comme Snake, Tic-Tac Toe ou Pong, les applications sur les appareils mobiles étaient très limitées à l'époque. Faits intéressants sur les téléphones mobiles utilisés au début : • Il a fallu 10 heures pour remplir la batterie, mais seulement 30 minutes d’appel pour la vider. La couverture réseau n'était pas optimale Puis vint le WAP : Le protocole d'application sans fil, ou WAP, est un système permettant d'accéder à des informations via un réseau mobile sans fil. Avant le développement des smartphones, les utilisateurs souhaitant accéder à Internet via une connexion cellulaire, le WAP était utile pour télécharger des applications supplémentaires proposées par l'opérateur ou le fabricant du téléphone. Cela aurait pu être une bonne idée dans la théorie, mais les utilisateurs ont rapidement remarqué qu’il fallait non seulement télécharger des applications spécifiques chez le fabricant ou le modèle, mais aussi qu’il était coûteux et difficile à télécharger. De nombreuses personnes ont cessé d'essayer de télécharger du contenu supplémentaire sur leur téléphone en raison de ces problèmes. 9 janvier 2007 Steve Job annonce une nouvelle ère dans l'industrie du téléphone. L’affichage multi-touch, l’absence de clavier physique, un navigateur Web fonctionnel et le fait qu’il offre un écran large lorsqu’il est tourné sur le côté en font un produit révolutionnaire. Chaque développeur souhaitait créer et ajouter ces fonctionnalités au téléphone, c'est donc la naissance des applications mobiles En 2008, l'industrie du téléphone est impatiente de lancer des applications téléchargeables sur l'App Store. 552 applications ont été lancées le premier jour, dont 135 téléchargements gratuits. En une semaine seulement, plus de 10 000 000 (dix millions) d'applications ont été téléchargées et plus de 800 applications disponibles au téléchargement. En 2009, la campagne "il y a une application pour cela" sonne toujours juste aujourd'hui. Apple store compte 6 millions d’applications et augmente chaque jour de façon exponentielle. En 2017, 977 milliards d'applications ont été téléchargées. Les applications mobiles sont une question vitale. Leur importance augmente avec le temps. Le développement mobile continue de croître avec des technologies toujours plus puissantes. Si nous revenons à l'époque traditionnelle de la conception et du développement d'applications mobiles, nous verrons probablement que les premières applications utilisées étaient principalement des calendriers mensuels, des calculatrices et même des jeux développés dans le cadre Java. Cependant, il est intéressant de noter que le tout premier smartphone connu a été lancé par IBM en 1993. Il comprenait des fonctionnalités telles que le carnet de contacts, l'agenda, l'horloge mondiale et la calculatrice. En 2017, plus de 1 000 applications ont été développées et lancées chaque jour. Le développement d'applications a créé plus de 600 000 emplois aux États-Unis et est même devenu son propre secteur en moins de dix ans. Le développement d'applications est énorme et il ne se développe que chaque année. Si cela ne suffisait pas à vous surprendre, voici quelques informations supplémentaires : • • • • • 85% des utilisateurs mobiles préfèrent les applications mobiles aux pages Web. 2 utilisateurs de smartphones et de tablettes sur 3 accèdent aux médias sociaux à partir de leur appareil. Le temps passé dans les applications mobiles dépasse maintenant l'utilisation du Web sur les ordinateurs de bureau aux États-Unis. 89% du temps utilisé sur un smartphone ou une tablette se trouve dans une application mobile. 224 millions d'utilisateurs utilisent activement des applications tous les mois aux États-Unis. Selon comScore, le pourcentage de minutes mobiles consacrées aux applications mobiles se situe entre 80% et 90% aux États-Unis, au Royaume-Uni, au Canada, en Espagne, en Chine, en Italie, en Indonésie, au Brésil et au Mexique. Sur les 7,676 milliards de personnes, il y a : • • • • 5,112 milliards d'utilisateurs de téléphones (67%) 4,388 milliards d’utilisateurs d’Internet (57%) 3 484 milliards d'utilisateurs de réseaux sociaux (45%) 3,256 milliards d'utilisateurs de réseaux sociaux mobiles (42%) 6H42 PAR JOUR SUR INTERNET En moyenne, un internaute passe 6h42 par jour sur Internet. Les Français sont beaucoup plus raisonnables, avec (seulement) 4h38. Les Philippins sont les seuls à passer plus de 10 heures par jour sur Internet. Cette année encore, la part du mobile augmente : il représente 48% du temps passé sur Internet. Si la tendance se confirme, le mobile devrait dépasser le desktop en 2020. 6,3 MILLIARDS D’UTILISATEURS DE SMARTPHONES EN 2021 Le nombre d'utilisateurs de smartphones passera de 5,1 à 6,9 milliards de personnes en 2021. En conséquence, la durée d'utilisation passera de 2,6 à 3,5 milliards de milliards d'heures au cours de la même période (chiffres du CDI). Trimestriel téléphone mobile Tracker). En France en 2019, sur 65,36 millions d'habitants, on compte : • • • • 64,70 millions d’abonnements mobiles (99%) 60,42 millions d'internautes (92%) 38 millions d'utilisateurs de réseaux sociaux (58%) 33 millions d'utilisateurs de réseaux sociaux mobiles (50%) Les applications mobiles évoluent constamment et il est peu probable qu'elles s'arrêtent dans un avenir proche. En termes simples, le paradigme qui a dominé l’ensemble du secteur de la téléphonie mobile au cours de la dernière décennie a changé. Pour les utilisateurs, l'UX mobile est désormais plus important que tous ces processeurs octacore, gigaoctets de RAM et modules de caméra supplémentaires. Deux systèmes d'exploitation dominent le marché : Android et iOS. Le premier est développé par Google et représente environ 80% du marché en France. Son principal concurrent, iOS, développé par Apple, représente un peu moins de 20% du marché. Comme vous le comprendrez certainement, ces deux systèmes d’exploitation sont destinés à des marchés distincts. Par exemple, les utilisateurs d'iOS sont généralement plus aptes à dépenser de l'argent pour des applications et sont également plus exigeants. Pour cette raison, il est courant de trouver une application payante sur iOS qui sera gratuite sur Android. Les modèles commerciaux ne sont donc pas les mêmes pour ces deux plateformes. On peut également comparer les deux systèmes d’exploitation mobiles avec des ordinateurs Windows et Mac. Une application Mac ne fonctionnera pas sous Windows et inversement. Les langues d'écriture sont différentes, les règles sont différentes, les possibilités sont différentes, sans parler de la partie immergée de l'iceberg. Aujourd'hui plus que jamais, les smartphones sont au cœur de nos vies et nous accompagnent au quotidien. Les applications que nous téléchargeons pour répondre à nos besoins confirment cette tendance. S'agissant du marché des applications mobiles, la domination de Google et d'Apple ne devrait pas s'arrêter de sitôt, car leur avance sur la concurrence est importante. 2. Développement d’application mobile a. L’application Native Bien que le terme application native ne soit pas largement connu du grand public, il représente la grande majorité des applications que nous téléchargeons tous les jours. L'évocation d'application mobile est immédiatement dans la référence inconsciente aux applications Une application native c'est quoi : C'est une application développée spécifiquement pour un système d'exploitation. Comme auparavant, une application Mac ne fonctionnerait pas sous Windows et inversement. Pour les applications natives, c'est le même principe. Cela signifie que le langage de programmation est différent d'un système d'exploitation à un autre. Pour iOS, Objective-C ou Swift, alors qu'Android utilise Java. Le développement en natif présente de nombreux avantages : Amélioration de la vitesse, de la fiabilité, de la réactivité et de la résolution pour une meilleure expérience utilisateur. Il permet un accès plus facile à toutes les fonctionnalités du téléphone, de l'accéléromètre à travers l'appareil photo et même du microphone. Notifications push, disponibles uniquement sur les applications natives. Ces notifications vous permettent d’alerter vos utilisateurs et d’attirer leur attention à tout moment, qu’il s’agisse d’un nouveau contenu ou d’une offre promotionnelle. Ne nécessite pas forcément Internet pour fonctionner, ce qui constitue un réel avantage. Même en 2017, il existe encore des zones très peu couvertes par Internet, et permettre aux utilisateurs d'accéder à l'application sans connexion Web est un atout majeur à ne pas négliger. Cependant, une application native ne permet pas seulement d’accroître les performances et d’accéder à toutes les fonctionnalités du téléphone. Bien conçus et réalisés, ils respectent les codes de conception de chaque plateforme. Il existe des centaines de différences entre le système d'exploitation de Google et celui d'Apple. Les applications natives permettent de s'adapter à chaque plate-forme afin d'offrir à vos utilisateurs une expérience optimale. Afin de mieux étudier les possibilités de développement dans les applications natives, nous allons nous concentrer sur les outils technologiques et techniques de développement : v IOS : Ø Objectif C : Objective-C est un langage de programmation orienté objet réflexif. C'est une extension du C ANSI, comme le C++, mais qui se distingue de ce dernier par sa distribution dynamique des messages, son typage faible ou fort, son typage dynamique et son chargement dynamique. Contrairement au C++, il ne permet pas l'héritage multiple mais il existe toutefois des moyens de combiner les avantages de C++ et d'Objective-C. Aujourd'hui, il est principalement utilisé dans les systèmes d'exploitation d'Apple : macOS et son dérivé iOS, basés sur la bibliothèque de classes Cocoa mais il existe aussi une bibliothèque de classes libre GNUstep sous GNU/Linux. Cocoa et GNUstep sont les successeurs de l'API OpenStep, utilisée dans les systèmes d'exploitation NeXTSTEP (à l'origine de macOS) et son pendant libre OPENSTEP. Ø Swift 4 : Swift a été́ développé́ afin de faciliter la réalisation des applications. En effet, il est beaucoup plus rapide, plus concis, plus simple que l’Objective-C, langage jusque-là̀ incontournable pour réaliser des applications iOS ou OS X (c’est-à-dire pour iPhone, iPad, iPod Touch ou encore Mac OS X). Swift est son successeur, et a d’ailleurs été́ annoncé comme « de l’Objective-C mais sans le C ». Il est néanmoins toujours possible aujourd’hui de développer des applications en Objective-C, ce qui fait que les deux langages coexistent. Avec Swift, moins de lignes de code, moins de fichiers et on dispose d’une syntaxe facile à comprendre. Cette dernière a été conçue de façon à ce qu’un débutant puisse rapidement prendre ses marques. Ø Android L'écosystème d'Android s'appuie sur deux piliers : • le langage Java • le SDK qui permet d'avoir un environnement de développement facilitant la tâche du développeur Le kit de développement donne accès à des exemples, de la documentation mais surtout à l'API de programmation du système et à un émulateur pour tester ses applications. Stratégiquement, Google utilise la licence Apache pour Android ce qui permet la redistribution du code sous forme libre ou non et d'en faire un usage commercial. Le SDK était : • anciennement manipulé par un plugin d'Eclipse (obsolète) • maintenant intègré à Android Studio (IntellJ) L'Operating System Android est en fait un système de la famille des Linux, pour une fois sans les outils GNU. L'OS s'appuie sur : • • • • • • • Un noyau Linux (et ses drivers) Une couche d'abstraction pour l'accès aux capteurs (HAL) Une machine virtuelle : Dalvik Virtual Machine (avant Lollipop) Un compilateur de bytecode vers le natif Android Runtime (pour Lollipop) Des applications (navigateur, gestion des contacts, application de téléphonie...) Des bibliothèques (SSL, SQLite, OpenGL ES, etc...) Des API d'accès aux services Google Anatomie d'un déploiement : b. L’application Web Une application Web est simplement un site Web qui s'adapte au mobile. Ce terme est adaptable à ce qui est sensible. Une application qui fonctionne comme un modèle de site Web, sans différence de plate-forme, de système d’exploitation, de code ... Cela signifie que les utilisateurs n’auront pas à installer l’application sur leur smartphone, le stockage reste intact. C'est un point de vue très rapide. Entre applications, musique et photos, les gigas s'accumulent rapidement et nous trouvons très rapidement un stockage malgré nous. En général, on peut toujours utiliser le Web. Elle se comporte comme une application normale, ressemble à une application normale, mais son accessibilité et son prix ne sont jamais vus avec les applications mobiles. En fait, une application Web coûte jusqu'à trois fois moins qu'une application native. Cependant, une application web a son lot d’inconvénients comme toute autre application. Elle ne permet pas d’utiliser les fonctionnalités au maximum de leur potentiel, et surtout, elle ne fonctionne généralement pas sans internet. Les applications web sont également plus lentes et moins adaptées à chaque plateforme. Elles ne sont pas développées spécifiquement pour une plateforme, ce qui limite leur adaptabilité. Le fait qu’une application web soit créée en une seule version pour toutes les plateformes et systèmes d’exploitation ne lui permet pas d’avoir des performances équivalentes à tout autre type d’application. De plus, le fait que l’on ne puisse pas télécharger d’application web sur les stores rend le processus de fidélisation extrêmement compliqué. Sans compter le fait que cela influe grandement sur le trafic de l’application et donc son nombre de téléchargements. L’envoi de notifications push est également impossible avec une application web. Bien sûr, tout n’est pas négatif avec les applications web, et les possibilités restent tout de même très larges. Il faut juste savoir que les cibles et objectifs de ce genre d’application sont différents des autres applications. c. L’application Hybride Une application hybride est un mélange entre le monde et le web Si vous devez comparer une application native, son développement est plus rapide et moins coûteux. Ils offrent également une application Web. Hybrid est une application rapide et native pour l'application native. La maintenance de l'application sera également plus facile à suivre une seule fois. Ce n'est pas un logiciel facile : les performances de l'application sont moins bonnes et moins stables. Bien sûr, il est possible de se rapprocher du fonctionnement d’une application native, mais avec le même niveau de qualité et de performances. Un autre grand avantage du développement hybride est que vous gérez une seule version, quel que soit le nombre de plates-formes sur lesquelles vous souhaitez être. Autrement dit, si vous souhaitez ajouter de nouvelles fonctionnalités ou mettre à jour, il vous suffit de le faire une fois. Nous avons une application native, ces modifications doivent être effectuées sur chaque plate-forme. Cela prend plus de temps et coûte plus cher. Afin de mieux étudier les possibilités de développement dans une application hybride, nous nous intéresserons aux outils techniques et techniques de développement : Cordova Anciennement PhoneGap, il a ouvert la route vers une uniformisation de l’accès aux fonctions natives des plates-formes mobiles. Non sans surprise, il reste aujourd’hui l’un des grands piliers du mobile hybride. Non seulement il continue d’être maintenu et amélioré très régulièrement mais surtout il sert de base à de nombreux Framework dont Ionic dont nous parlons ci-dessous. Cordova seul n’est pas suffisant, mais il convient parfaitement à certains types d’applications où la lourdeur d’un Framework complet est une chose dont on peut largement se passer. PhoneGap est aujourd'hui le nom du service propriétaire d'Adobe, construite sur Cordova. Avantages : • Compatible avec de très nombreuses plates-formes (Android, iOS, Windows Phone, Blackberry, Ubuntu mobile, Firefox OS, LG web OS, FireOS) ; • Liberté technologique • Performances entièrement dépendantes de ce que l’on en fait ; • Une base de plugins très complète et bien maintenue ; • Technologie mûre. Inconvénients : • Demande un travail plus conséquent pour avoir un résultat utilisable en production ; • Interface graphique non comprise ; • Absence de visualisation hors émulateur / périphérique par défaut. Ionic : Ionic est un Framework en partie open-source permettant de construire des applications natives en utilisant les technologies WEB. Par natives on doit comprendre : disponibles via les Stores et pouvant utiliser les fonctionnalités natives des OS. Créé en 2013, et après presque 12 000 commit et 128 releases différentes, il en est à sa version stable "3" avec les toutes premiers alphas de la version 4. Ionic s’appuie sur une sous couche d’Angular 7.X couplé à du Typescript pour nous assurer d'une bonne qualité de code. Les feuilles de style, elles, sont générées via SASS. Il faudra donc s'assurer d'avoir la dernière version de node.js sur sa machine. La puissance de ionic est de nous proposer une librairie complète de composants graphiques à utiliser dans notre application. Ces composants auront plusieurs avantages non négligeables lorsque l'on connait la difficulté de maintenir ce genre d'éléments sur une gamme de navigateurs : • Leur design correspond automatiquement à celui "natif" de la plateforme d'exécution. Un toggle switch aura un "design" Android sous Android et un design "IOS" sur un iPhone. À ce niveau il sera difficile de faire la différence entre du natif et du ionic sur un simple coup d'œil. • Leur comportement est aussi celui de la plateforme d'exécution. L'intégration avec la plateforme est complète : il est par exemple possible de naviguer vers la page précédente avec un slide depuis le bord gauche de l'écran sur IOS (la gesture classique sur cette plateforme). • Modernes et à jour : certains composants que l'on voit dernièrement dans les tendances designs sont disponibles. Les cards de matérial en sont un très bon exemple. • Personnalisables : nous sommes sur du développement web et de base ces composants sont donc facilement personnalisables à coup de CSS mais les composants sont pensés personnalisables dans la façon dont ils sont construits. Pour nous faciliter la vie, Ionic propose aussi un système de disposition par grille qui ressemble assez à ce dont on peut avoir l'habitude avec bootstrap. Rien ne nous oblige de passer par lui mais cela devient simple de créer des layouts à colonne/lignes. Une application mobile c'est aussi une navigation de page en page et ionic propose ainsi son propre modèle de navigation pour nous faciliter la vie. Tout est basé sur un composant de navigation racine "ion-nav" qui propose les différentes APIs nécessaires à la gestion des pages : affichage, retour en arrière, etc. En général on place le composant ion-nav dans la page principale (comme le fait le template "navigation de base") et on le récupère par injection de dépendances (il est du type NavController) pour accéder à ses APIs. Les applications natives finalement générées sont basées sur Cordova. Il est donc tout d'abord nécessaire de rajouter une plateforme ciblée en utilisant la CLI ionic Ionic propose aussi sous forme de services payants des fonctionnalités diverses. En général, ces fonctionnalités sont testables sous forme de version d'essai gratuite. • Creator : un éditeur d'interface graphique en ligne pour prototyper rapidement une application. • Ionic view App : une application sur les Stores qui permet d'afficher une application "servie" sur un poste de développement et la tester en conditions réelles. • Ionic deploy : un service de code push. • usine de build : qui génère le build IOS , ANDROID , WINDOWS PHONE • Monitor : un service de monitoring & analyse d'usage pour vos apps. Avantage : • • • • • • Vitesse de développement : on développe sur son PC/MAC dans un navigateur et on est donc ultra productif. Contrôles graphiques : la liste des composants très complète, simple. Ionic Pro : déploiement et teste directement sur un device comme le fait Xamarin Live Player (mais sans les plugins). La documentation est vraiment très bien faite : https://ionicframework.com/docs/components/ avec des exemples en live ! Ils proposent des icônes auto-désignées par plateformes : https://ionicframework.com/docs/ionicons/ Angular + Typescript Inconvénients : • Requêtes http limitées à la sécurité Web classique : • Intégration complète avec le natif : proches mais il reste des choses des points complexe exemple : afficher le clavier "numérique avec virgules et signes négatifs" sur ios. • Performances : on est loin du natif, même avec du virtual scroll pour afficher une liste de beaucoup d’éléments. • Web : pas de multi threading et donc freeze potentiel d’UI quand on fait des calculs. Différences entres navigateurs : même avec Ionic, il reste des choses différentes (css, comportement de la validation HTML par exemple, etc.) à prendre en compte sur les différentes plateformes si l'on souhaite une UI relativement uniforme. • • • Tendance à l’utilisation de plugin intempestive La difficulté à mettre en place une build d. Les PWA Une application Web progressive est une application Web composée de pages ou de sites Web et peut être facilement identique à une application native ou à une application mobile. Ce type d’application tente de combiner les offres d’achat avec les principaux navigateurs modernes avec les avantages de l’expérience offerte par les appareils mobiles. Un PWA est accessible sur un site Web régulier, à partir d'une URL sécurisée, mais permet une utilisation de l'application mobile comme un utilisateur, sans les contraintes de cette dernière (envoi à App-Stores, utilisation importante de la mémoire de l'appareil). .) Ils allient vitesse, fluidité et légèreté tout en limitant les coûts de développement : nul besoin de faire quoi que ce soit de spécifique aux plateformes basées sur des applications : iOS, Android ... Une application Web progressive combine le meilleur du Web et le meilleur d’une application. Plus concrètement, il s’agit d’un site Web ayant l’aspect et le comportement de l’application mobile native. Il peut donc : • Affichage en plein écran ; • charger très rapidement ; • envoyer des notifications push ; • fonctionner hors ligne. Ainsi, un PWA offre une expérience utilisateur à la hauteur de l'application native, tout en offrant des avantages supplémentaires : • Il n'est pas nécessaire d'installer et n'est pas stocké sur le téléphone. • Il n'était pas nécessaire de le publier sur les magasins d'applications (Apple Store, Google Play, ...); • Le référencement naturel de PWA est facile (optimisation du magasin d'applications); • Totalement réactif, il fonctionne sans problème sur tous les supports (smartphone, tablette, ordinateur ...) • Afin de mieux explorer les possibilités de développement dans l'application PWA, nous nous concentrerons sur les outils technologiques et les techniques de développement : v Native Script : NativeScript, le Framework open source qui permet de développer des apps mobiles natives en utilisant les technologies JavaScript, inclut désormais la version 1.0 du projet open source NativeScript-Vue. Grâce à un ensemble d'abstractions et de runtimes cross-platform, NativeScript permet de développer des apps mobiles natives avec JavaScript, TypeScript ou Angular. Le runtime NativeScript traduit les codes JavaScript, TypeScript, et Angular vers les API natives pour Apple iOS et Google Android, si bien que les développeurs peuvent écrire une seule fois leur application pour les deux plates-formes. NativeScript inclut désormais la version 1.0 du plug-in NativeScript-Vue qui permet aux développeurs d'utiliser simultanément le Framework JavaScript Vue.js et le Framework de développement mobile NativeScript. Le Framework JavaScript Vue.js sert à construire des interfaces utilisateurs en mode visuel. NativeScript-Vue, toujours en développement, est un Template basé sur Webpack lequel permet de partager du code entre applications web et mobiles. Un nouvel outil CLI pour Vue.js appelé vue-cli 3, destiné à accélérer le développement est également prévu. v Flutter Flutter est un Framework Dart Open Source et gratuit pour développer des applications Android et iOS. Son mantra est “Build beautiful native apps in record time”. Il est développé et maintenu par les équipes de Google. Flutter possède son propre moteur de rendu natif sur iOS et Android. Dart étant un langage compilé, les applications faites avec Flutter sont donc composées d’un code 100% natif. Flutter n’utilise pas les widgets natifs car son moteur de rendu dessine directement nativement dans un Canvas. Cela permet au SDK d’avoir de très bonnes performances, mais aussi une grande capacité de personnalisation. Flutter permet également d’avoir exactement le même code sur iOS et Android, et donc d’avoir exactement le même design. Flutter est principalement utilisé pour gagner en temps et en coup de développement pour développer des applications sur iOS et Android. Ses performances étant proches du natif, l’utiliser permet de développer des applications très performantes en un temps record. De plus, sa grande capacité de personnalisation permet de développer des applications aux designs originaux et de renforcer l’image de la marque de l’entreprise proposant l’application. Avantages : • • • • • • • • Le SDK est simple et rapide à installer La documentation est claire et simple à comprendre Le développement est réalisé par Google Le SDK est Open Source Les mises à jour sont courantes (toutes les 2 semaines) Les IDEs de Jetbrains (Android Studio et IntelliJ Ultimate) ainsi que Visual Studio disposent d’une très bonne intégration de Flutter Le Dart est compilé directement en langage natif sur iOS et Android L’application se recharge automatique quand le code est modifié de manière presque instantanée, malgré le fait que Flutter soit compilé (la compilation est extrêmement rapide) • • • • • • • • Un moteur de rendu natif est intégré, il n’y a donc pas besoin de manipuler des widgets natifs Il n’y a pas de bridge Javascript comparé à React Native Les performances sont proches des applications natives Flutter propose un nouveau système de layout et de style plus performant que le CSS Les possibilités de personnalisation du design des applications sont infinies Le code est exactement le même sur iOS et Android Le Material Design (design Android) et Cupertino (design iOS) sont directement intégrés au SDK Il n’y a aucune problématique de rétrocompatibilité sur les anciennes versions d’iOS et Android Inconvénients : • • • • • Le langage Dart est très peu connu, peu de développeurs ont cette compétence Le SDK est encore très jeune (Première version en alpha en Mai 2017) La communauté est encore petite Flutter n’utilisant pas de composant natif, les mises à jour des widgets de Flutter après une nouvelle version d’Android ou d’iOS peut prendre du temps Il n’y a pas à ce jour d’application importante faisant la vitrine de Flutter e. React Native : React Native est un Framework mobile hybride développé par Facebook depuis début 2015. Il continue d'évoluer avec le soutien de nombreux contributeurs sur Github. Facebook a développé l'application de sa dernière Keynote en React Native, qui est un très bon exemple de ce qu'il est possible de faire. Le but de React Native est de pouvoir réutiliser le maximum de code entre les différentes plateformes (iOS et Android). Il offre un gain de temps considérable par rapport à du développement spécifique, tout en étant aussi performant. L'écriture en JavaScript permet aux développeurs web de construire une application mobile native, contrairement à Cordova qui encapsule l'application dans une webview. React Native utilise le moteur JavaScriptCore avec le transpileur Babel, il est compatible ES5, ES6 ou ES7 sans problème. Avantages : • • • • • L’un des gros atouts de React Native est sans doute le gain de temps et d’efforts considérables qu’il permet, parce que, vous l’aurez compris, le développeur de l’application n’a pas à maîtriser les langages spécifiques à iOS & Android et à passer deux fois plus de temps pour créer l’application. Ils en ont d’ailleurs fait leur célèbre slogan : « Learn once, write anywhere ! » Un autre point fort est la rapidité d’apprentissage. En effet, on estime qu’il faut environ un mois pour se familiariser et maîtriser les outils React, là où il faudra des années pour maîtriser un Framework pour application native. React Native met à votre disposition des outils de développement cohérents basés sur JavaScript et vous permet de puiser dans la bibliothèque React pleine de ressources libres et gratuites, ce qui va réduire considérablement le coût de votre application et augmenter la vitesse de son développement. On peut citer également comme avantage l’applicabilité et la possibilité d’intégrer React Native dans une application IOS déjà existante. Inconvénients : • • • • Malgré ses nombreux avantages, React Native présente certains inconvénients qui pourraient dissuader les développeurs de l’utiliser, à savoir : L’inadéquation de JavaScript, qui est un langage qui ne garantit pas contre les erreurs de programmation. La plupart des entreprises citées ci-dessus l’ont utilisé pour des modules uniquement et non pas pour des applications toutes entières. Difficulté de s’organiser et de créer plusieurs pages en React. 3. Applications natives et hybrides d’un point de vu scientifique Une application native est une application smartphone pour un système d'exploitation mobile (pensez à Objective-C ou Swift pour iOS ou Java pour Android). Étant donné que l'application est en place dans un écosystème mature en respectant les consignes techniques et l'expérience utilisateur (paroles, gestes définis par l'application, entête Android, en-tête centralisé iOS, etc.), ses performances sont excellentes. L'interaction dans l'application semble cohérente avec la plupart des autres applications de périphérique natif. L'utilisateur final est donc susceptible d'apprendre à naviguer et à utiliser l'application plus rapidement. Enfin, les applications natives présentent l’avantage d’être significatives (par exemple, GPS, carnet d’adresses, appareil photo, etc.). Envoyez des messages texte, prenez des photos en utilisant l’application par défaut, définissez des rappels ou utilisez l’application de musique de l’utilisateur, elle utilise des applications natives. En bref, les applications natives sont exactement cela, le système d'exploitation de l'utilisateur et donc construites conformément à ces instructions. Les applications hybrides sont en quelque sorte des sites Web dans un environnement natif. Ils ressemblent à une application native, ils sont finalement alimentés par le site Web de la société. Fondamentalement, une application hybride est une application construite en HTML5 et JavaScript, avec un contenu natif utilisé pour la navigation dans l'application (Facebook, Twitter, Instagram, votre application de banque mobile ...). a. PWA : Progressive Web Apps Aujourd’hui les progressive web App va plus loin. Ils tirent parti de HTML5 et des fonctionnalités de l'environnement capacités de l'environnement de JavaScript. Le terme progressif désigne l'approche consistant à tirer parti des capacités disponibles dans l'environnement d'application plutôt que d'avoir des exigences rigides. Cela inclut l'utilisation d'une gamme d'appareils au lieu de se concentrer sur des catégories restreintes telles que l'approche mobile first. Passer à travers un éventail d'environnements devrait inclure l'utilisation des possibilités disponibles, telles qu'un écran plus grand et l'adaptation aux limites d'un petit écran. Peut-être qu’à l’avenir, nous considérerons l’écran comme une surface d’interaction facultative compte tenu de la disponibilité de la voix, du toucher et autres méthodes. Pour comprendre l’organisation de l’architecture d’une PWA voici un schéma explicatif d’une application sous Magneto : b. Native app: Les applications natives font référence à des applications spécialement écrites et développées pour un système d'exploitation mobile spécifique. Les trois principaux systèmes d’exploitation mobiles sont Android de Google, iOS d’Apple et Téléphone Windows. Pour créer de véritables applications natives, le langage de programmation Java doit être utilisé pour Android, le langage de programmation Objective C pour iOS et le framework .NET pour Windows Phone. Les applications natives se caractérisent généralement par le fait que ces applications ont un accès sans entrave au matériel du périphérique et prennent en charge toutes les interfaces utilisateur et interactions disponibles dans l'environnement d'exploitation mobile respectif. c. Hybrid App : Une application Web hybride est une application qui n'est ni vraiment un application web mobile ni application native. C'est fondamentalement une application écrite avec le site Web susmentionné techniques de HTML5, les API JavaScript et CSS, mais il s'exécute dans un conteneur d'applications natives tierces. La clé les caractéristiques d'une application hybride sont qu'elles sont développées avec les langues Web standard, mais ont généralement accès à les API de périphérique natif et le matériel. Certains des bien connus et les cadres mobiles hybrides utilisés sont PhoneGap, Appcelerator et Appspresso. Les nouveaux Framework tendance permette au JavaScript de tirer meilleure partie de sa puissance et d’être orientée de plus en plus mobile. 3 Frameworks se détache: React, Vue.Js, Angular 7 d. React: Construit et soutenu par Facebook, React est l’un des favoris des développeurs pour la création et la maintenance de produits, qu’il s’agisse d’un logiciel POC rapide ou de grandes entreprises. Il est actuellement utilisé par de nombreuses grandes entreprises telles que Instagram, Netflix, Walmart, Whatsapp, etc. Les avantages de React incluent son architecture à base de composants, Virtual DOM pour des performances exceptionnelles, une courbe d’apprentissage extrêmement rapide et une popularité auprès des développeurs disposant d’une énorme communauté de support. e. Vue.js : Créé par Evan You et adopté par Alibaba, Vue est en train de devenir un favori rapide parmi ceux qui le découvrent. La raison en est que Vue a été initialement conçu pour aider les concepteurs peu expérimentés en programmation. L'objectif était de les aider à se concentrer sur la création d'interfaces fonctionnelles plutôt que de se préoccuper de la programmation ellemême. Cela a rendu très facile l'apprentissage avec un seuil d'entrée minimal. De plus, Evan, un ancien employé de Google, a observé des choses encombrantes ou qui pourraient être améliorées dans Angular et les a appliquées à Vue. Il a fait de même lorsque React a été publié et a pu proposer un support qui est devenu l'un des cadres les plus prometteurs à apprendre et à adopter. En outre, Vue.js prend en charge le rendu déclaratif, les mises à jour asynchrones du DOM, la liaison de données bidirectionnelle, le respect strict des spécifications des composants Web et une intégration simple aux modèles HTML. f. Angular 7 : Construit et soutenu par Google et utilisé par Youtube, Paypal, Google Maps, etc. Angular a été un choix de premier plan pour les implémentations d'entreprise. Sa dernière version, Angular 7, a mis en avant deux points forts principaux. Une promesse avec son moteur de rendu Ivy d’accélérer le rendu dans l’application et les éléments angulaires qui permettent l’utilisation de composants angulaires en dehors d’Angular, comme dans Vue ou React. En utilisant Elements Package, vous pouvez créer des composants angulaires et les publier en tant que composants Web, qui peuvent ensuite être utilisés dans n'importe quelle page HTML. Angular est plus facile à mettre en œuvre et à apprendre pour ceux qui viennent d’un contexte OOP ou Java. 4. Les Framework CSS Afin de pouvoir rendre l’application design d’un point de vue UI ou ergonomique, des outils ont vu le jour dans les années 2011. Ces outils appelé Framework CSS ont permis d’avoir des composants réutilisables personnalisables et évolutifs à destination des plateformes web. Actuellement les plus populaires sont : a. Bulma : Il est l'un du Framework libre CSS open source qui est basée sur Flexbox., il est devenu très populaire et plus de 150000 développeurs utilisent ce Framework sans aucun souci. Ce Framework est destiné à inclure uniquement les exigences minimales pour vous lancer sur votre projet de développement web. Ce Framework léger est tout à fait réactif et basé sur un système de grille 12 de colonne. Si vous êtes un débutant, vous pouvez alors apprendre très facile et plus rapide avec Bulma. En cas de problème, une grande communauté est disponible pour ce Framework. Une fois que vous savez comment utiliser Bulma, vous pouvez personnaliser rapidement votre site Web. Ce cadre a 33.3K étoiles sur repo github et mis à jour très fréquemment. Avantage : • • Très rapide à personnaliser. Il intègre dans un environnement JS. Inconvénient : • CSS seulement - ne comprend pas de JS ou plugins jQuery. Ce Framework est idéal pour les débutants et les développeurs qui veulent créer des sites Web simple. b. UIKIT : UIKit est un Framework frontal très léger et très modulaire qui permet de développer des interfaces web puissantes et rapides. Ce fait puissant qui inclut dans ce Framework est, il comprend à la fois Sass et moins préprocesseurs CSS. UIKit est devenu l'un des les plus populaires Framework front-end là-bas avec un ensemble de composants sensibles agiles avec les conventions de nommage cohérentes. Ce Framework est livré avec plus de 30 composants modulaires extensibles, qui peuvent être combinés pour encore plus de polyvalence. Il comprend des éléments tels que des formulaires HTML et des tableau, composants de navigation tels que les barres de navigation latérale ; composants JavaScript comme les boîtes de dialogue modales et barres hors toile ; éléments communs tels que des badges, des boutons et des superpositions ; et les composants de mise en page avec un système de grille entièrement réactive. À l'heure actuelle, UIKit a 14k étoiles dans le dépôt github et mis à jour régulièrement. Avantage : • • • Remarquablement modulaire, de sorte que vous pouvez ajouter des composants à la feuille de style sans impact négatif sur votre style général. Hautement personnalisable. Créer des interfaces utilisateur avancées avec des composants comme nestables. Inconvénient : • Le nombre de ressources est très faible en raison de la nouveauté relative. Ce Framework est idéal pour les développeurs assez expérimentés en raison du manque de ressources. Dans le cas contraire, il est idéal pour des projets simples et complexes. c. Bootstrap : Le plus populaire, le Framework plus rapide et convivial, Bootstrap. Ce Framework est publié en 2011 et créé par les développeurs Twitter. À l'heure actuelle, il y a des millions de sites Web étonnants à travers le Web qui exécutent ce cadre étonnant. Vous pouvez vérifier sa popularité en comptant ses étoiles au repo GitHub, ses plus de 131K. Comme tous les autres cadres frontaux efficaces, Bootstrap comprend HTML, CSS et JavaScript. Vous pouvez facilement développer des sites sensibles de toutes tailles et complexités. Comme ce Framework est mis à jour régulièrement, il comprend toujours les meilleurs et les dernières fonctionnalités. Créez rapidement votre application entière ou prototyper vos idées avec des variables et mixins Bootstraps Sass. Auparavant, il était fondé sur moins mais que la popularité augmente à SASS, Bootstrap a sa version 4 en SASS. Notre version classique de constructeur de la page Quix Joomla est construit avec la version 3 Bootstrap, qui est basé sur LESS. Avantage : • • Une documentation complète. Support web design réactif, qui peut également être désactivé si nécessaire. Inconvénient : • • Un nombre démesuré d'éléments DOM et des classes HTML peut être source de confusion et de désordre. Sur la taille du fichier de la boîte de 276KB en raison d'un trop grand nombre de styles rarement utilisés. Ce Framework est idéal pour les débutants et les personnes qui préfèrent un cadre solide front-end. Fondation Le Framework Fondation est l'un des cadres très avancés qui a été créé par une société de conception web appelé Zurb. Il est un Framework frontal de qualité de l'entreprise qui est idéal pour le développement d'un site réactif, nimbles. De nombreuses organisations populaires comme Facebook, eBay, Mozilla, Adobe, HP, Cisco, Disney, et d'autres organisations populaires utilisent ce Framework sur leurs sites. Si vous êtes un débutant que sans aucun doute, ce n'est pas le Framework que vous recherchez. Il est assez complexe et ne convient pas pour les personnes qui ne sont pas connus des cadres. Si vous avez une expérience antérieure, vous pouvez facilement concevoir des applications belles, des courriels et des sites Web qui se penchera sur mindblowing tout appareil. Fondation est lisible, flexible, sémantique et entièrement personnalisable. Fondation est livré avec l'accélération GPU pour les animations ultra-rapide et lisse. Il offre Fastclick.js pour le rendu rapide à des appareils mobiles. Ce Framework polyvalent fonctionne sur Sass préprocesseur et inclut l'attribut d'échange de données qui est développé par la Fondation. Cet attribut vous permet de charger des sections HTML plus lourds pour les écrans plus grands et des sections HTML légers pour les écrans mobiles. À l’heure actuelle, ce Framework a plus de 28K étoiles dans le dépôt GitHub avec une grande communauté d'utilisateurs. Avantage : • • Grande flexibilité sans style verrouillage. Au lieu de pixels utilise REMS, élimine la nécessité d'une hauteur d'état explicitement, la largeur et d'autres attributs pour chaque appareil. Inconvénient : • • La taille est assez grande de la boîte. Un peu de complexe pour les débutants. Ce Framework est pour les développeurs qui ont une expérience plus tôt le développement et les préoccupations avec le développement de sites sensibles, rapides, attractifs. d. Materialize : Materialise est un framework de développement frontal réactif et moderne, basé sur les spécifications de conception des matériaux de Google. Ce cadre est fourni avec des icônes, des boutons, des formulaires, des cartes et d’autres composants prêts à l’emploi. Il est offert en version standard et en version SASS, utilisez celle que vous préférez. La fonctionnalité de grille de colonnes IZ est incluse dans Materialize afin de pouvoir être utilisée pour les présentations de sites Web. Ce framework est chargé avec CSS, qui est prêt à l'emploi pour les couleurs de conception de matériau, les ombres, la typographie et d'autres fonctionnalités. Les fonctionnalités supplémentaires de ce Framework incluent les menus mobiles, les mixins SASS, l’animation par effet d’entraînement, etc. Ce Framework est noté avec 35K étoiles sur le référentiel GitHub. Avantages : Un grand nombre de composants. Prise en charge de tous types d'appareils. Les inconvénients : Très grande taille. Pas de support de modèle de flexbox. Ce Framework est idéal pour les développeurs moins expérimentés, qui ont besoin des conseils de la spécification de conception matérielle de Google. e. Le design natif : Dans le développement natif, le design sur Android est construit en utilisant une hiérarchie de mises en page (ViewGroup objets) et widgets (View objets). Layouts sont des conteneurs qui contrôlent la façon dont leurs vues enfants sont placées sur l'écran. Les widgets sont des composants d’interface utilisateur tels que des boutons et des zones de texte. Android fournit un vocabulaire XML pour ViewGroup et les ViewClasses, donc la plupart de l’interface utilisateur est définie dans des fichiers XML. Cependant, au lieu de vous apprendre à écrire du XML, cette leçon vous montre comment créer une mise en page en utilisant l’éditeur de mise Android Studio, qui le rend facile de construire une mise en page en vue de glisser-déposer. Pour le développement natif IOS les choses sont un peu plus différentes, pour des interfaces simples, le design s’effectue par drag & drop grâce à l’Interface Builder Pour des interfaces plus complexes, il existe des librairies comme Cocoa et Cocoa Touch qui utilise le Model Vue Controller il est donc facile de concevoir indépendamment des interfaces, séparées de leurs implémentations. Les interfaces utilisateur sont en fait des objets archivés Cocoa ou Cocoa Touch (enregistré sous forme de fichiers. nib), et Mac OS et iOS crée de manière dynamique la connexion entre l'interface utilisateur et le code de l'application est exécutée. 5. Les applications mobiles coté serveur : Une fois l’application développer il faut pouvoir communiquer avec des bases de données physique, des apis ou encore les faires communiqués entre elles. Pour ce faire la manière de procéder n’est pas la même selon les différents systèmes utilisés Pour les développements d’application hybride comme Ionic, Cordova, les PWA ou toutes les technologies utiliser dans le web, des serveurs comme AWS, Node.js, Google’s cloud services ou encore Microsoft Azure seront de très bon parti prix. Pour le développement d’application mobile natif, les solutions de server se trouve plus dans des technologies structurales comme graph QL ou doc.ai sont conseillée. Une fois que l’application est prête il faut pouvoir la déployer La déployer où ? tout d’abord sur des serveurs et ensuite la rendre disponible sur les stores actuels Il existe différents types de déploiement sur les cloud prenons les 3 principaux IaaS, PaaS, SaaS . IaaS est une plate-forme où une infrastructure est prévue pour vous. Avec un clic sur un bouton, vous pouvez faire tourner des machines virtuelles hébergées par un fournisseur avec un système d'exploitation de votre choix. Le vendeur fournissant la machine est responsable de la connectivité et l'approvisionnement initial du système, et vous êtes responsable de tout le reste. Le vendeur fournit une machine et un système d'exploitation, mais vous devez installer tous les logiciels, runtimes d'applications / serveurs et bases de données que votre application a besoin. En général, IaaS exige que vous ayez une équipe d'administrateurs système pour gérer le système et appliquer des règles de pare-feu, des correctifs et errata de sécurité sur une base régulière. PaaS est une pile de technologie relativement nouvelle qui fonctionne audessus de IaaS et a été créé avec le développeur à l'esprit. Avec la plateforme PaaS, tout est prévu, sauf le code d'application, les utilisateurs et les données. En règle générale, lorsque vous utilisez un PaaS, le vendeur conserve le serveur d'applications, bases de données et tous les composants du système d'exploitation nécessaires, vous donnant le temps de se concentrer sur le code d'application. Étant donné que le fournisseur gère cette plate-forme pour vous, il est souvent difficile d'ouvrir les ports qui ne sont pas appelés spécifiquement pour le serveur d'application, l'exécution ou la base de données en cours d'utilisation. PaaS fournit également des fonctionnalités qui sont spécifiquement destinés à des applications, y compris la capacité à l'échelle le niveau d'application en fonction de la demande des utilisateurs de l'application. Dans la plupart des plates-formes, cela se produit avec peu à aucune interaction du développeur. Avec la plate-forme SaaS, tout est prévu pour vous, sauf les utilisateurs et les données d'application. Le vendeur fournit le code d'application et le développeur a un accès limité à modifier le logiciel utilisé. Ceci n’est généralement pas un choix pour le déploiement d'applications personnalisées, en tant que fournisseur fournit l'ensemble de la pile logicielle. Les clients de messagerie Web hébergés et hébergé des logiciels d'automatisation des ventes sont deux bons exemples de la façon dont le SaaS est utilisé. Pour les développeurs, le PaaS est le plus utilisés, parce que l'infrastructure est gérée pour eux, afin qu’il puisse se concentrer sur leur code d'application. Ensuite vient le choix de la base de données, Presque toutes les applications en cours de création reposent sur une base de données d'un type ou d'un autre pour stocker et récupérer les informations à présenter à l'utilisateur. Lors du développement d'applications pour le cloud, Il faut également prendre en compte les bases de données utilisé et l'emplacement de ces bases. La base de données doit-elle être hébergée sur les mêmes serveurs que l'application ou est-il préférable de loger la base de données sur un serveur ou un conteneur séparé ? Dans de nombreux cas, une application repose sur des informations stockées dans une base de données située derrière un pare-feu d’entreprise, tandis que l’application frontale est déployée sur le cloud public. Dans ce cas, Il y a deux options pour accéder efficacement aux informations que vous devez présenter à l'utilisateur dès le départ. Option 1 : Choisir un fournisseur qui permet d'ouvrir une connexion VPS distante dans la base de données. Option 2 : communication avec la base de données via un ensemble de services REST authentifiés déployés sur l'infrastructure ayant accès aux données. Ces deux options comportent des risques de sécurité inhérents que l’on doit prendre en compte lors de la connexion à une base de données derrière un pare-feu d'entreprise à partir d'une application cloud externe. Dans ce cas, la meilleure option consiste à sélectionner un fournisseur de cloud PaaS permettant de déployer les applications dans un environnement non multi-locataire. Si le code d'application n'a pas besoin de se connecter à une base de données d'entreprise existante, le nombre d'options dont l’on dispose est presque illimité. Il faut s’assurer également de choisir une base de données évolutive rapidement et facilement, qu’il s’agisse d’une base de données SQL ou NOSQL. 6. Développement d’une application mobile « Todolist » : Afin de mettre en pratique toutes les méthodes de développements mobile évoquer précédemment, Un Todolist sera développer dans les 3 types d’applications soit Native, Hybrid et PWA. Pour ce faire 3 différents Framework seront utilisés Ionic, React native et flutter. a. Ionic : NPM NPM est un package manager qui permet l’installation d’énormément d’outils et de librairies dont on aura besoin pour tout type de développement. Pour l’installer, il faut ouvrir une ligne de commande et taper la commande suivante : npm install -g npm@latest IONIC CORDOVA On va maintenant installer les outils Ionic et Cordova de manière globale sur la machine avec la commande suivante (avec sudo si besoin) : npm install -g ionic cordova À partir de là, la commande ionic est disponible depuis la ligne de commande, depuis n’importe quel dossier de l’ordinateur. Création d'un nouveau projet Maintenant que le CLI d'Ionic est installé de manière globale sur l’ordinateur, on peut s’en servir pour créer un projet Ionic. Il faut Naviguer vers le dossier où on a stocké le projet et exécutez la commande suivante : ionic start todolist-ionic blank Cette commande crée un nouveau projet de type "blank", c'est-à-dire sans contenu pré-généré, qui sera le projet sur lequel on travaillera. Pour lancer le serveur de développement, entrer dans le dossier créé et exécutez ionic serve : cd todolist-ionic ionic serve Tout comme ng serve pour Angular, ionic serve lance un serveur de développement qui se recharge à chaque modification de fichier. On Navigue à localhost :8100 pour visualiser l'application b. React native : Grâce à Node.js, on peut installer les lignes de commande CRNA. Ces lignes de commande nous permettront, de créer une CRNA. Ouvrez un terminal et taper : sudo npm install -g expo-cli Nous voici avec un environnement de développement fonctionnel pour créer une CRNA. Il est temps de créer votre première application React Native. Dans un terminal, se placer dans le dossier de votre choix. Pour ma part, j'ai créé un dossier exprès /ReactNative : $ cd /chemin_vers_votre_dossier/ReactNative/ Puis crée notre CRNA. On va appeler notre projet "Doctolibclone" : $ expo init todolist-ionic Expo vous demande de choisir le template de départ pour notre application : Nous allons partir d’un projet vierge, choisir donc blank , le premier choix. La création peut prendre un peu de temps ; il faut que le projet installe une multitude de librairies Javascript. Une fois que cela est fini, on devrez voir apparaître le message : Your project is ready at … create-react-native-app Une CRNA est une solution créée par la communauté React Native pour se lancer rapidement dans les développements ; elle nécessite peu de configuration. C'est le moyen le plus simple de créer une application mobile React Native. L'inconvénient est qu'elle ne permet pas d'utiliser du code natif et donc d'accéder aux composants du téléphone. Pour utiliser du code natif rien de plus simple Dès que on a besoin des composants du téléphone, on n'a qu'une commande à taper et notre projet passera automatiquement d'une CRNA à une application React Native avec du code natif. À ce moment-là, on peut utiliser autant de composants du téléphone que souhaité. c. Flutter : Qu'est-ce que Flutter ? C'est le SDK (ou Kit de développement en français) de Google. Il permet de créer des applications à la fois pour Android et iOS. Qu'est-ce que Dart? C'est un langage de programmation orienté objet, développé par Google. Il est facile à comprendre et à prendre en main et se rapproche de langages tels que Java ou Swift par exemple. Il faut télécharge le kit d'installation suivant pour obtenir la dernière version stable du kit de développement logiciel Flutter SDK : flutter_macos_v1.7.8 + correctif.4-stable.zip Extraire le fichier à l'emplacement souhaité, par exemple : cd ~/development unzip ~/Downloads/flutter_macos_v1.7.8+hotfix.4-stable.zip Ajouter l'outil Flutter à votre chemin : $ export PATH="$PATH:`pwd`/flutter/bin" Cette commande définit votre variable PATH pour la fenêtre de terminal actuelle uniquement. Pour ajouter définitivement Flutter à notre chemin. Une fois flutter installer place au développement ! Bibliographie Huynh, M. Q., Ghimire, P., & Truong, D. (2017). Hybrid app approach: could it mark the end of native app domination ?. Issues in Informing Science and Information Technology, 14, 049-065. Khandeparkar, A., Gupta, R., & Sindhya, B. (2015). An introduction to hybrid platform mobile application development. International Journal of Computer Applications, 118(15). Biørn-Hansen, A., Majchrzak, T. A., & Grønli, T. M. (2017, April). Progressive Web Apps: The Possible Webnative Unifier for Mobile Development. In WEBIST (pp. 344-351). A. Herden, P. P. M. Farias, P. R. M. de Andrade and A. B. Albuquerque,“Agile PDD – One Aproach to Software Development Using BPMN” in 11th International Conference Applied Computing, Porto, Portugal,2014. Adobe , PhonegGap [online], http://phonegap.com/ (Accessed: 20 October 2014). Francese, R.; Risi, M.; Tortora, G.; Scanniello, G., “Supporting the development of multi-platform mobile applications”, Web Systems Evolution (WSE), 2013 15th IEEE International Symposium on, vol., no., pp.87,90, 27-27 Sept. 2013 Intel, Intel's App Framework [ online ] , http://app-frameworksoftware.intel.com/ (Accessed: 20 October 2014). International Data Group, Market Analysis Perspective: Worldwide Mobile Phone Market [online], http://www.idc.com/getdoc.jsp?containerId=245240 (Accessed: 18 October 2014). Li Tian; Huaichang Du; Long Tang; Ye Xu, “The discussion of crossplatform mobile application based on Phonegap”, Software Engineering and Service Science (ICSESS), 2013 4th IEEE International Conference on, vol., no., pp.652,655, 23-25 May 2013. R. Gangundi, “Smartphone Application Development using Cross Platform Frameworks”, Proceedings of the National Conference on Information and Communication Technology, NMIMS University, Mumbai, India, 2010. W3C Draft: HTML5, A vocabulary and associated APIs for HTML and XHTML [ online ] , http://dev.w3.org/html5/spec/Overview.html (Accessed: 18 October 2014). B. Frankston, "Progressive Web Apps [Bits Versus Electrons]," in IEEE Consumer Electronics Magazine, vol. 7, no. 2, pp. 106-117, March 2018. doi: 10.1109/MCE.2017.2776463 keywords: {Consumer electronics;Web and internet services;Computer applications;Browsers;Servers;File systems;Mobile communications}, URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8287006&isnumber=8286979 B. Pete LePage « Progressive Web Apps on Desktop » juin 4, 2019 https://developers.google.com/web/progressive-web-apps/desktop Nayebi, Fatih & Desharnais, Jean-Marc & Abran, Alain. (2012). The State of the Art of Mobile Application Usability Evaluation. Canadian Conference on Electrical and Computer Engineering. 10.1109/CCECE.2012.6334930. Jobe, William. (2013). Native Apps Vs. Mobile Web Apps. International Journal of Interactive Mobile Technologies (iJIM). 7. pp. 27-32. 10.3991/ijim.v7i4.3226. https://ionicframework.com/docs/components B. Tkachenko (2018) Decentralizing with Server-side Rendering of Native apps https://techburst.io/decentralizing-with-server-side-rendering-of-native-apps-8fe6a5ee882c