SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Module (M17) :
Programmation mobile
Chapitre 1 : Généralités sur le
développement des applications
mobiles et le système
d’exploitation Android
Pr. Yassine SADQI
y.sadqi@usms.ma
Pr. Yassine SADQI
Pr. Yassine SADQI
Plan
1. Généralités sur le développent d’application mobile
2. Généralités sur le système d’exploitation Android
3. Architecture de la plateforme Android
2
3
I. Généralités sur le
développement
d’application mobile
Pr. Yassine SADQI
Pr. Yassine SADQI
Développement d'applications
4
1. Desktop Apps:
Java SE; C#; C++, …
2. Web Apps:
PHP; Java EE; ASP;
3. Mobile Apps
Applications (Apps)
Pr. Yassine SADQI
Pr. Yassine SADQI
Développement Mobile
• Il existe trois manières pour développer des
applications mobiles:
1. Développement mobile natif
2. Développement mobile Web
3. Développement Cross-platform
5
Pr. Yassine SADQI
Pr. Yassine SADQI
Développement Mobile
6
Pr. Yassine SADQI
Pr. Yassine SADQI
Application mobile Native ?
• Application développé avec un langage spécifique et destinée à un est un seul
système d’exploitation.
• Les apps natives utilisent toutes les fonctionnalités offertes par l'appareil
mobile( GPS, SMS, Appels, Caméra, Gestion de l’énergie, ….)
7
Société Système
d’exploitation
Langage de
développement
Plateforme de
distribution
Google Android Java , ( Kotlin:
annoncé en 2017)
Google Playstore
Appel iOS Objective-C, Swift (
depuis 2014)
App Store
Microsoft Windows Phone C# Microsoft Store
Pr. Yassine SADQI
Pr. Yassine SADQI
Application mobile Native ? ( Kotlin Vs Java)
• The authors (Important results):
odid not observe any significant difference in terms of maintainability between
the two languages;
ofound a significant difference regarding the amount of code written, which
constitutes evidence of better conciseness of Kotlin
o concerning ease of development, the frequency of NullPointerExceptions
reported by the subjects was significantly lower when developing in Kotlin
othe IDE support was deemed better for Java than Kotlin
8
Ardito, L., Coppola, R., Malnati, G., & Torchiano, M. (2020). Effectiveness of Kotlin vs. Java in android
app development tasks. Information and Software Technology, 127, 106374.
Pr. Yassine SADQI
Pr. Yassine SADQI
Application mobile Native ?
• La figure ci-dessous montre l’architecture générale des applications mobiles
natives:
9
Pr. Yassine SADQI
Pr. Yassine SADQI
Application web mobile?
• Une application web mobile est une application développée en utilisant
les langages du web (HTML, CSS, Java Script,…)
• Elle est accessible et exécutable par le biais du navigateur web de
l’appareil mobile.
• Ces applications sont conçus spécifiquement pour
fonctionner dans les tailles d'écran des appareils mobiles quelques
soient leur marque et système d’exploitation.
• Ne nécessite pas de télécharger l'application.
• Par contre, il n’est pas possible d’accèder aux API
natives ni à la plateforme. Il est aussi difficile de créer des applications
conviviales sur ce type d’application.
10
Pr. Yassine SADQI
Pr. Yassine SADQI
Application web mobile?
• Elle est visuellement moins adaptée qu’une application native, car le
navigateur reste présent lors de l’exécution, comme le montre la figure ci-
dessous :
11
App Web App Native
Pr. Yassine SADQI
Pr. Yassine SADQI
Application web mobile?
• Architecture logique d'une application web mobile
12
Pr. Yassine SADQI
Pr. Yassine SADQI
Application web mobile?
13
Pr. Yassine SADQI
Pr. Yassine SADQI
Application web mobile?
14
https://getbootstrap.com/
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform mobile development?
• Le développement mobile cross-platform ou bien multiplateforme est
une approche qui offre la possibilité de réaliser une seule application
mobile capable de fonctionner sur les divers systèmes d’exploitation
mobile (Android, iOS, …): Write Once, Run Anytime (WORA) technique
across all platforms.
• Pour les start-ups et les PME, le développement multiplateforme est
peut-être un choix parfait en tant qu'excellente forme de technologie
sur diverses plateformes.
15
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform mobile development?
• Biørn-Hansen et al. ont proposé de spéraer les approaches de développement cross platform en
cinq approaches: Hybrid, Intrepreted, Cross-compiled, Model-Driven, and Progressive Web
Apps (PWA)
16
Biørn-Hansen, A., Grønli, T. M., & Ghinea, G. (2018). A survey and taxonomy of core concepts and research
challenges in cross-platform mobile development. ACM Computing Surveys (CSUR), 51(5), 1-34.
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform
17
• Biørn-Hansen et al. ont proposé de spéraer les approaches de développement cross platform en
cinq approaches: Hybrid, Intrepreted, Cross-compiled, Model-Driven, and Progressive Web
Apps (PWA)
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform: Approche hybride
• Une application hybride est constituée de deux grands éléments:
1. Éléments des apps web:
 Pour la partie présentation des éléments de l’interface on utilise:
• Des Framework CSS créées pour les applications mobiles (Bootstrap, …)
• Des Framework Java Script ( Angular JS, JQuery Mobile, Dojo, Sencha Touch, …)
 Pour la partie Interaction avec le serveur, on utilise des Framework Ajax
2. Eléments des apps natives permettent d’utiliser toutes les fonctionnalités natives des
smartphones ( SMS, caméra, ….)
 Pour interagir avec les fonctionnalités natives, on utilise deux Frameworks de base:
• Apache CORDOVA
• Adobe PhoneGab
18
Pr. Yassine SADQI
Pr. Yassine SADQI
Application hybride?
Architecture logique d'une application hybride typique
19
Une webview, c'est un composant
disponible sous Android et iOS pour
afficher, par exemple, de l'HTML ou
l'URL d'un site web. Grâce à une
webview, nous ne sommes donc pas
obligé de créer une vue en langage
natif.
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform: React Native & Flutter
• Ces dernières années, React Native et Flutter ont largement contribuer au
dévelopepment de l’approche cross plateforme:
20
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform: React Native & Flutter
• React Native et Flutter sont les technologies les plus populaires pour le
développement de logiciels multiplateformes d'applications mobiles pendant deux
années consécutives, selon Statista.
21
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform: React Native & Flutter
22
Stack Overflow
Trends
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform: React Native & Flutter
23
Who's using React Native?
https://reactnative.dev/showcase
Apps take flight with Flutter:
https://flutter.dev/showcase
Pr. Yassine SADQI
Pr. Yassine SADQI
Cross platform: React Native & Flutter
“In today’s modern tech world everything is changing rapidly. The earlier
you appear on the market, the bigger pie of it you can obtain. React
Native launched two years earlier than Flutter and that is the main reason
React Native dominates in cross-platform development. However,
Flutter is on the right track, as its adoption rate is growing quicker. It’s
only a matter of time before Flutter overtakes the leadership of the
market”
24
https://nix-united.com/blog/flutter-vs-react-native/
Pr. Yassine SADQI
Pr. Yassine SADQI
Quelle approche utiliser ?
• Le choix de l’un des ces approches est une phase très importante qui
précède le développement d’une application mobile.
oQuestion 1: Quelle est la meilleure approche?
oQuestion 2: Comment choisir l'approche la plus appropriée pour un
besoin particulier?
• Pour répondre à ces questions LACHGAR et ABDALI ont proposé une
série de questions (14 questions) afin de dégager la bonne approche
pour développer une application mobile avec des exigences bien
spécifiques.
25
Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv.
Comput. Sci. Appl, 8(2).
Pr. Yassine SADQI
Pr. Yassine SADQI
Quelle approche utiliser ?
• Q 1: Doit-il être publié sur un magasin d'applications principal?
• Q 2: fonctionne-t-il en mode hors ligne?
• Q 3: Voulez-vous le vendre?
• Q 4: Est-ce une application simple?
• Q5: Sera-t-il fréquemment utilisé par l'utilisateur?
• Q 6: Y a-t-il un besoin immédiat de livrer l'application sur le marché?
• Q 7: Avez-vous un budget distinct pour les développeurs dans chaque
système d'exploitation?
26
Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv.
Comput. Sci. Appl, 8(2).
Pr. Yassine SADQI
Pr. Yassine SADQI
Quelle approche utiliser ?
• Q8: Avez-vous besoin de nombreuses fonctionnalités natives dans l'application
mobile?
• Q 9: La sécurité des applications est-elle une priorité élevée?
• Q 10: Doit-il être très fluide?
• Q 11: Voulez-vous beaucoup d'animations?
• Q 12: Construisez-vous une application qui nécessite beaucoup de calcul
algorithmique?
• Q 13: Voulez-vous être toujours à jour avec les dernières versions du système
d'exploitation?
• Q 14: Voulez-vous avoir la meilleure expérience utilisateur?
27
Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv. Comput.
Sci. Appl, 8(2).
Pr. Yassine SADQI
Pr. Yassine SADQI
Quelle approche utiliser ?
• Le tableau ci-dessous donne les réponses à ces 14 questions pour chaque
approche de développement mobile (native, hybride et web):
28
Lachgar, M., & Abdali, A. (2017). Decision framework for mobile
development methods. Int. J. Adv. Comput. Sci. Appl, 8(2).
Pr. Yassine SADQI
Pr. Yassine SADQI
Quelle approche utiliser ?
“Our results indicate that the use of cross-platform frameworks
for the development of mobile apps may lead to decreased
performance compared to the native development approach.
Nevertheless, the results also indicate that certain cross-
platform frameworks can perform equally well or even better
than native on certain metrics but no framework scores best
across all features in this study.”
29
Biørn-Hansen, A., Rieger, C., Grønli, T. M., Majchrzak, T. A., & Ghinea, G. (2020). An empirical
investigation of performance overhead in cross-platform mobile development frameworks. Empirical
Software Engineering, 25, 2997-3040.
Pr. Yassine SADQI
Pr. Yassine SADQI
Quelle approche utiliser ?
• « Our findings suggest that cross-platform development has seen much progress
but the challenges are ever growing. Therefore, additional support for app
developers is warranted”
30
Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app
development approaches. Journal of Systems and Software, 153, 175-199.
Pr. Yassine SADQI
Pr. Yassine SADQI
Quelle approche utiliser ?
31
Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app
development approaches. Journal of Systems and Software, 153, 175-199.
Pr. Yassine SADQI
Pr. Yassine SADQI 32
Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app
development approaches. Journal of Systems and Software, 153, 175-199.
Pr. Yassine SADQI
Pr. Yassine SADQI 33
Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app development
approaches. Journal of Systems and Software, 153, 175-199.
34
II. Généralités sur le
système d’exploitation
Android
Pr. Yassine SADQI
Pr. Yassine SADQI
Un peu d’histoire: plateformes type Symbian
• Historiquement, les développeurs utilisaient des langages bas
niveau e.g. C ou C++
oBesoin de connaître le matériel spécifique pour lequel ils
codaient
oApproche dépassée avec les avancées d’Internet et de
l’accès mobile.
35
Pr. Yassine SADQI
Pr. Yassine SADQI
Un peu d’histoire: L’apparition des MIDlets Java
• L’avancée la plus importante dans le développement mobile.
• Un MIDlet Java est exécuté par une machine virtuelle Java:
oProcessus qui fait abstraction du matériel sous-jacent
oPossibilité de créer des applications pour une large gamme
d’équipements supportant l’environnement d’exécution
Java –malgré l’accès restreint au matériel
36
Pr. Yassine SADQI
Pr. Yassine SADQI
Un peu d’histoire: L’arrivée d’Android
• Android (date de sortie initiale 2008) arrive aux côtés d’autres
systèmes d’exploitation pour mobiles, comme Windows Mobile et l’iOS
oBâtis sur des systèmes propriétaires, qui, dans certains cas:
 Donnent la priorité aux applications natives au détriment de celles
créées par des tiers
 Limitent la communication entre les applications et les données
natives du téléphone
 Restreignent ou contrôlent la distribution d’applications tierces
sur leurs plateformes.
37
Pr. Yassine SADQI
Pr. Yassine SADQI
Un peu d’histoire: L’arrivée d’Android
• Android offre un environnement de développement ouvert,
construit sur un noyau Linux open-source
oL’accès au matériel est permis à toutes les applications au
travers d’une série de bibliothèques d’API;
oL’interaction entre applications est entièrement supportée,
bien que soigneusement contrôlée;
oToutes les applications ont les mêmes droits –utilisation
des mêmes API et exécutées par le même moteur.
38
Pr. Yassine SADQI
Pr. Yassine SADQI
Qu'est ce que Android?
• Système d'exploitation pour appareils mobiles basé sur le noyau Linux
• Interface utilisateur pour écrans tactiles
• Utilisé sur plus de 80% de tous les smartphones
• Utiliser dans des appareils tels que les montres, les téléviseurs et les
voitures
• Plus de 2 millions d'applications Android dans Google Play Store
• Hautement personnalisable pour les périphériques / par les vendeurs
39
Pr. Yassine SADQI
Pr. Yassine SADQI
Pourquoi développer des applications pour Android?
• Plateforme la plus populaire pour les applications mobiles
• Des applications faciles à développer:
oSDK et bibliothèques
• Documentation riche
• Open source
40
Pr. Yassine SADQI
Pr. Yassine SADQI
Pourquoi développer des applications pour Android?
41
Stack Overflow
Trends
https://insights.stackoverflow.com/trends
42
III. Architecture de la
plateforme Android
Pr. Yassine SADQI
Pr. Yassine SADQI
Platform Architecture
43
The Android software stack
Pr. Yassine SADQI
Pr. Yassine SADQI
Noyau
• Toute l'architecture Android repose sur le
noyau Linux 3.4
oL'environnement d'exécution (Android
Runtime) –pour le déploiementde
fonctionnalités comme la gestion des
threads
oLes différents drivers utilisés par les
applications
• A intégré de nombreuses modifications
• Seuls les constructeurs et les
intégrateurs s'intéressent à ce niveau (ex:
LG, Huawei, …)
44
Pr. Yassine SADQI
Pr. Yassine SADQI
Hardware Abstraction Layer (HAL)
• Besoin d'abstraire le niveau matériel?
• Cette couche est imposée par le fait que les applications Google Play doivent
s'exécuter sur toutes les plateformes matérielles Android, quel que soit le
constructeur (Samsung, LG, …)
• Les entrées/sorties (e.g. Bluetooth ou caméra) possèdent des appels standard
définis dans cette couche, en lien avec le driver associé.
• Tous les équipements Android doivent respecter l'Android Compatibility Definition
document (CDD)
oComportement des interfaces –pour une intégration correcte du logiciel dans
l'écosystème de la plateforme Android
• Le Compatibility Test Suite (CTS) définit les différentes phases de tests associées.
45
Pr. Yassine SADQI
Pr. Yassine SADQI
Librairies natives C/C++
• Beaucoup de composants et services
Android (par exemple, ART, HAL) sont
construits à partir de code natif
nécessitant des librairies C/C++.
• La plateforme Android repose sur un
framework d'APIs Java pour exposer les
fonctionnalités de ces librairies aux
applications.
• Pour le développement d'une application
nécessitant du code C/C++, il est possible
d'utiliser Android NDK (Android Native
Development Kit)
oAccès aux librairies natives
directement depuis le code de
l'application.
46
Pr. Yassine SADQI
Pr. Yassine SADQI
ART
• Avant l'API 21, l'ART utilisait une machine virtuelle appelé
Dalvik.
• Pour les applications à partir de l'API 21 (Android 5.0),
chaque application s'exécute dans son propre processus,
avec sa propre instance d'Android Runtime (ART)
• ART permet d'exécuter plusieurs VM sur des terminaux à
faible mémoire, en exécutant des fichiers DEX (Dalvik
Executable File)
47
Pr. Yassine SADQI
Pr. Yassine SADQI
Java API Framework
• L'ensemble des fonctionnalités Android est disponible à travers des APIs (Application Programming
Interface) Java.
• L’objectif de ce Framework des APIs Java est de simplifier la réutilisation de composants de base,
des modules et de services.
• Ces APIs comprennent les éléments suivants:
1. Système de vues (View System)–pour la création d'IHM (Interface Homme Machine)
2. Gestionnaire de ressources ( Ressource Manager) –pour la gestion de chaînes de caractères, images, fichiers
de mise en page (layout)
48
Pr. Yassine SADQI
Pr. Yassine SADQI
Exercice 1: Platform Architecture (Java API Framework)
3. Gestionnaire de notifications (Notification Manager)–pour permettre aux
applications d'afficher des notifications dans la barre de statut.
4. Gestionnaire d'activités (Activity Manager)–pour gérer le cycle de vie des
activités
5. Fournisseurs de contenu (Content Provider)–pour permettre aux applications
d'accéder à des données provenant d'autres applications (par exemples les
contacts du téléphone)
49
A bien noter: Les développeurs Android ont un
accès complet aux mêmes API que les
applications système Android utilisent:
https://developer.android.com/reference/packages.html
Pr. Yassine SADQI
Pr. Yassine SADQI
Exercice 1: Platform Architecture (Applications système /natives )
• Un ensemble d'applications de base: email, SMS, agenda, navigation Internet,
contacts, etc.
• Les applications déjà présentes sur la plateforme Android ( System Apps) n'ont
pas de statut particulier par rapport aux autres applications que l'utilisateur choisit
d'installer.
• Avec possibilité d'avoir une autre application pour la navigation Internet ou pour le
clavier, …
50
Pr. Yassine SADQI
Pr. Yassine SADQI
Applications système /natives
• Les applications génériques préinstallées faisant partie de
l’Android Open Source Project (AOSP):
51
https://source.android.com/

Mais conteúdo relacionado

Semelhante a 02_Chapitre_1_.pdf

Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageLaFrenchMobile
 
Kit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursKit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursStéphanie Hertrich
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 
Applications mobiles - quels choix ?
Applications mobiles  - quels choix ?Applications mobiles  - quels choix ?
Applications mobiles - quels choix ?odemarez
 
Genivi
Genivi Genivi
Genivi FabMob
 
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIRRapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIRAHMEDAKHACHKHOUCH
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)Sanaa Guissar
 
Cahier de charges Site web DRUPAL
Cahier de charges Site web DRUPALCahier de charges Site web DRUPAL
Cahier de charges Site web DRUPALLaribi Aicha
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogySacha Leprêtre
 
Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...
Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...
Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...Philippe Beraud
 
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !Rossi Oddet
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Saâd Zerhouni
 
Présentation Ionic Framework
Présentation Ionic FrameworkPrésentation Ionic Framework
Présentation Ionic FrameworkNdongo Samb
 
Présentation Voirin Club DSI EST 150217
Présentation Voirin Club DSI EST 150217Présentation Voirin Club DSI EST 150217
Présentation Voirin Club DSI EST 150217VOIRIN Consultants
 
DrupalCamp Paris 2013 : Sites mobiles avec Drupal
DrupalCamp Paris 2013 : Sites mobiles avec DrupalDrupalCamp Paris 2013 : Sites mobiles avec Drupal
DrupalCamp Paris 2013 : Sites mobiles avec DrupalActency
 

Semelhante a 02_Chapitre_1_.pdf (20)

Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Parlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usageParlons App Economie : du dev à l'usage
Parlons App Economie : du dev à l'usage
 
Kit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des EntrepreneursKit De Survie Techno et Web à l'usage des Entrepreneurs
Kit De Survie Techno et Web à l'usage des Entrepreneurs
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Applications mobiles - quels choix ?
Applications mobiles  - quels choix ?Applications mobiles  - quels choix ?
Applications mobiles - quels choix ?
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
 
Cv dridi-lotfi
Cv dridi-lotfiCv dridi-lotfi
Cv dridi-lotfi
 
Genivi
Genivi Genivi
Genivi
 
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIRRapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIR
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)
 
Cahier de charges Site web DRUPAL
Cahier de charges Site web DRUPALCahier de charges Site web DRUPAL
Cahier de charges Site web DRUPAL
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...
Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...
Créez vos apps métier Windows 8 sans expertise en programmation, grâce à Proj...
 
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
 
Cv fr-gharsallah yassine
Cv fr-gharsallah yassineCv fr-gharsallah yassine
Cv fr-gharsallah yassine
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
Présentation Ionic Framework
Présentation Ionic FrameworkPrésentation Ionic Framework
Présentation Ionic Framework
 
Présentation Voirin Club DSI EST 150217
Présentation Voirin Club DSI EST 150217Présentation Voirin Club DSI EST 150217
Présentation Voirin Club DSI EST 150217
 
Cv analyste programmeur
Cv analyste programmeurCv analyste programmeur
Cv analyste programmeur
 
DrupalCamp Paris 2013 : Sites mobiles avec Drupal
DrupalCamp Paris 2013 : Sites mobiles avec DrupalDrupalCamp Paris 2013 : Sites mobiles avec Drupal
DrupalCamp Paris 2013 : Sites mobiles avec Drupal
 

02_Chapitre_1_.pdf

  • 1. Module (M17) : Programmation mobile Chapitre 1 : Généralités sur le développement des applications mobiles et le système d’exploitation Android Pr. Yassine SADQI y.sadqi@usms.ma
  • 2. Pr. Yassine SADQI Pr. Yassine SADQI Plan 1. Généralités sur le développent d’application mobile 2. Généralités sur le système d’exploitation Android 3. Architecture de la plateforme Android 2
  • 3. 3 I. Généralités sur le développement d’application mobile
  • 4. Pr. Yassine SADQI Pr. Yassine SADQI Développement d'applications 4 1. Desktop Apps: Java SE; C#; C++, … 2. Web Apps: PHP; Java EE; ASP; 3. Mobile Apps Applications (Apps)
  • 5. Pr. Yassine SADQI Pr. Yassine SADQI Développement Mobile • Il existe trois manières pour développer des applications mobiles: 1. Développement mobile natif 2. Développement mobile Web 3. Développement Cross-platform 5
  • 6. Pr. Yassine SADQI Pr. Yassine SADQI Développement Mobile 6
  • 7. Pr. Yassine SADQI Pr. Yassine SADQI Application mobile Native ? • Application développé avec un langage spécifique et destinée à un est un seul système d’exploitation. • Les apps natives utilisent toutes les fonctionnalités offertes par l'appareil mobile( GPS, SMS, Appels, Caméra, Gestion de l’énergie, ….) 7 Société Système d’exploitation Langage de développement Plateforme de distribution Google Android Java , ( Kotlin: annoncé en 2017) Google Playstore Appel iOS Objective-C, Swift ( depuis 2014) App Store Microsoft Windows Phone C# Microsoft Store
  • 8. Pr. Yassine SADQI Pr. Yassine SADQI Application mobile Native ? ( Kotlin Vs Java) • The authors (Important results): odid not observe any significant difference in terms of maintainability between the two languages; ofound a significant difference regarding the amount of code written, which constitutes evidence of better conciseness of Kotlin o concerning ease of development, the frequency of NullPointerExceptions reported by the subjects was significantly lower when developing in Kotlin othe IDE support was deemed better for Java than Kotlin 8 Ardito, L., Coppola, R., Malnati, G., & Torchiano, M. (2020). Effectiveness of Kotlin vs. Java in android app development tasks. Information and Software Technology, 127, 106374.
  • 9. Pr. Yassine SADQI Pr. Yassine SADQI Application mobile Native ? • La figure ci-dessous montre l’architecture générale des applications mobiles natives: 9
  • 10. Pr. Yassine SADQI Pr. Yassine SADQI Application web mobile? • Une application web mobile est une application développée en utilisant les langages du web (HTML, CSS, Java Script,…) • Elle est accessible et exécutable par le biais du navigateur web de l’appareil mobile. • Ces applications sont conçus spécifiquement pour fonctionner dans les tailles d'écran des appareils mobiles quelques soient leur marque et système d’exploitation. • Ne nécessite pas de télécharger l'application. • Par contre, il n’est pas possible d’accèder aux API natives ni à la plateforme. Il est aussi difficile de créer des applications conviviales sur ce type d’application. 10
  • 11. Pr. Yassine SADQI Pr. Yassine SADQI Application web mobile? • Elle est visuellement moins adaptée qu’une application native, car le navigateur reste présent lors de l’exécution, comme le montre la figure ci- dessous : 11 App Web App Native
  • 12. Pr. Yassine SADQI Pr. Yassine SADQI Application web mobile? • Architecture logique d'une application web mobile 12
  • 13. Pr. Yassine SADQI Pr. Yassine SADQI Application web mobile? 13
  • 14. Pr. Yassine SADQI Pr. Yassine SADQI Application web mobile? 14 https://getbootstrap.com/
  • 15. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform mobile development? • Le développement mobile cross-platform ou bien multiplateforme est une approche qui offre la possibilité de réaliser une seule application mobile capable de fonctionner sur les divers systèmes d’exploitation mobile (Android, iOS, …): Write Once, Run Anytime (WORA) technique across all platforms. • Pour les start-ups et les PME, le développement multiplateforme est peut-être un choix parfait en tant qu'excellente forme de technologie sur diverses plateformes. 15
  • 16. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform mobile development? • Biørn-Hansen et al. ont proposé de spéraer les approaches de développement cross platform en cinq approaches: Hybrid, Intrepreted, Cross-compiled, Model-Driven, and Progressive Web Apps (PWA) 16 Biørn-Hansen, A., Grønli, T. M., & Ghinea, G. (2018). A survey and taxonomy of core concepts and research challenges in cross-platform mobile development. ACM Computing Surveys (CSUR), 51(5), 1-34.
  • 17. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform 17 • Biørn-Hansen et al. ont proposé de spéraer les approaches de développement cross platform en cinq approaches: Hybrid, Intrepreted, Cross-compiled, Model-Driven, and Progressive Web Apps (PWA)
  • 18. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform: Approche hybride • Une application hybride est constituée de deux grands éléments: 1. Éléments des apps web:  Pour la partie présentation des éléments de l’interface on utilise: • Des Framework CSS créées pour les applications mobiles (Bootstrap, …) • Des Framework Java Script ( Angular JS, JQuery Mobile, Dojo, Sencha Touch, …)  Pour la partie Interaction avec le serveur, on utilise des Framework Ajax 2. Eléments des apps natives permettent d’utiliser toutes les fonctionnalités natives des smartphones ( SMS, caméra, ….)  Pour interagir avec les fonctionnalités natives, on utilise deux Frameworks de base: • Apache CORDOVA • Adobe PhoneGab 18
  • 19. Pr. Yassine SADQI Pr. Yassine SADQI Application hybride? Architecture logique d'une application hybride typique 19 Une webview, c'est un composant disponible sous Android et iOS pour afficher, par exemple, de l'HTML ou l'URL d'un site web. Grâce à une webview, nous ne sommes donc pas obligé de créer une vue en langage natif.
  • 20. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform: React Native & Flutter • Ces dernières années, React Native et Flutter ont largement contribuer au dévelopepment de l’approche cross plateforme: 20
  • 21. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform: React Native & Flutter • React Native et Flutter sont les technologies les plus populaires pour le développement de logiciels multiplateformes d'applications mobiles pendant deux années consécutives, selon Statista. 21
  • 22. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform: React Native & Flutter 22 Stack Overflow Trends
  • 23. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform: React Native & Flutter 23 Who's using React Native? https://reactnative.dev/showcase Apps take flight with Flutter: https://flutter.dev/showcase
  • 24. Pr. Yassine SADQI Pr. Yassine SADQI Cross platform: React Native & Flutter “In today’s modern tech world everything is changing rapidly. The earlier you appear on the market, the bigger pie of it you can obtain. React Native launched two years earlier than Flutter and that is the main reason React Native dominates in cross-platform development. However, Flutter is on the right track, as its adoption rate is growing quicker. It’s only a matter of time before Flutter overtakes the leadership of the market” 24 https://nix-united.com/blog/flutter-vs-react-native/
  • 25. Pr. Yassine SADQI Pr. Yassine SADQI Quelle approche utiliser ? • Le choix de l’un des ces approches est une phase très importante qui précède le développement d’une application mobile. oQuestion 1: Quelle est la meilleure approche? oQuestion 2: Comment choisir l'approche la plus appropriée pour un besoin particulier? • Pour répondre à ces questions LACHGAR et ABDALI ont proposé une série de questions (14 questions) afin de dégager la bonne approche pour développer une application mobile avec des exigences bien spécifiques. 25 Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv. Comput. Sci. Appl, 8(2).
  • 26. Pr. Yassine SADQI Pr. Yassine SADQI Quelle approche utiliser ? • Q 1: Doit-il être publié sur un magasin d'applications principal? • Q 2: fonctionne-t-il en mode hors ligne? • Q 3: Voulez-vous le vendre? • Q 4: Est-ce une application simple? • Q5: Sera-t-il fréquemment utilisé par l'utilisateur? • Q 6: Y a-t-il un besoin immédiat de livrer l'application sur le marché? • Q 7: Avez-vous un budget distinct pour les développeurs dans chaque système d'exploitation? 26 Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv. Comput. Sci. Appl, 8(2).
  • 27. Pr. Yassine SADQI Pr. Yassine SADQI Quelle approche utiliser ? • Q8: Avez-vous besoin de nombreuses fonctionnalités natives dans l'application mobile? • Q 9: La sécurité des applications est-elle une priorité élevée? • Q 10: Doit-il être très fluide? • Q 11: Voulez-vous beaucoup d'animations? • Q 12: Construisez-vous une application qui nécessite beaucoup de calcul algorithmique? • Q 13: Voulez-vous être toujours à jour avec les dernières versions du système d'exploitation? • Q 14: Voulez-vous avoir la meilleure expérience utilisateur? 27 Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv. Comput. Sci. Appl, 8(2).
  • 28. Pr. Yassine SADQI Pr. Yassine SADQI Quelle approche utiliser ? • Le tableau ci-dessous donne les réponses à ces 14 questions pour chaque approche de développement mobile (native, hybride et web): 28 Lachgar, M., & Abdali, A. (2017). Decision framework for mobile development methods. Int. J. Adv. Comput. Sci. Appl, 8(2).
  • 29. Pr. Yassine SADQI Pr. Yassine SADQI Quelle approche utiliser ? “Our results indicate that the use of cross-platform frameworks for the development of mobile apps may lead to decreased performance compared to the native development approach. Nevertheless, the results also indicate that certain cross- platform frameworks can perform equally well or even better than native on certain metrics but no framework scores best across all features in this study.” 29 Biørn-Hansen, A., Rieger, C., Grønli, T. M., Majchrzak, T. A., & Ghinea, G. (2020). An empirical investigation of performance overhead in cross-platform mobile development frameworks. Empirical Software Engineering, 25, 2997-3040.
  • 30. Pr. Yassine SADQI Pr. Yassine SADQI Quelle approche utiliser ? • « Our findings suggest that cross-platform development has seen much progress but the challenges are ever growing. Therefore, additional support for app developers is warranted” 30 Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app development approaches. Journal of Systems and Software, 153, 175-199.
  • 31. Pr. Yassine SADQI Pr. Yassine SADQI Quelle approche utiliser ? 31 Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app development approaches. Journal of Systems and Software, 153, 175-199.
  • 32. Pr. Yassine SADQI Pr. Yassine SADQI 32 Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app development approaches. Journal of Systems and Software, 153, 175-199.
  • 33. Pr. Yassine SADQI Pr. Yassine SADQI 33 Rieger, C., & Majchrzak, T. A. (2019). Towards the definitive evaluation framework for cross-platform app development approaches. Journal of Systems and Software, 153, 175-199.
  • 34. 34 II. Généralités sur le système d’exploitation Android
  • 35. Pr. Yassine SADQI Pr. Yassine SADQI Un peu d’histoire: plateformes type Symbian • Historiquement, les développeurs utilisaient des langages bas niveau e.g. C ou C++ oBesoin de connaître le matériel spécifique pour lequel ils codaient oApproche dépassée avec les avancées d’Internet et de l’accès mobile. 35
  • 36. Pr. Yassine SADQI Pr. Yassine SADQI Un peu d’histoire: L’apparition des MIDlets Java • L’avancée la plus importante dans le développement mobile. • Un MIDlet Java est exécuté par une machine virtuelle Java: oProcessus qui fait abstraction du matériel sous-jacent oPossibilité de créer des applications pour une large gamme d’équipements supportant l’environnement d’exécution Java –malgré l’accès restreint au matériel 36
  • 37. Pr. Yassine SADQI Pr. Yassine SADQI Un peu d’histoire: L’arrivée d’Android • Android (date de sortie initiale 2008) arrive aux côtés d’autres systèmes d’exploitation pour mobiles, comme Windows Mobile et l’iOS oBâtis sur des systèmes propriétaires, qui, dans certains cas:  Donnent la priorité aux applications natives au détriment de celles créées par des tiers  Limitent la communication entre les applications et les données natives du téléphone  Restreignent ou contrôlent la distribution d’applications tierces sur leurs plateformes. 37
  • 38. Pr. Yassine SADQI Pr. Yassine SADQI Un peu d’histoire: L’arrivée d’Android • Android offre un environnement de développement ouvert, construit sur un noyau Linux open-source oL’accès au matériel est permis à toutes les applications au travers d’une série de bibliothèques d’API; oL’interaction entre applications est entièrement supportée, bien que soigneusement contrôlée; oToutes les applications ont les mêmes droits –utilisation des mêmes API et exécutées par le même moteur. 38
  • 39. Pr. Yassine SADQI Pr. Yassine SADQI Qu'est ce que Android? • Système d'exploitation pour appareils mobiles basé sur le noyau Linux • Interface utilisateur pour écrans tactiles • Utilisé sur plus de 80% de tous les smartphones • Utiliser dans des appareils tels que les montres, les téléviseurs et les voitures • Plus de 2 millions d'applications Android dans Google Play Store • Hautement personnalisable pour les périphériques / par les vendeurs 39
  • 40. Pr. Yassine SADQI Pr. Yassine SADQI Pourquoi développer des applications pour Android? • Plateforme la plus populaire pour les applications mobiles • Des applications faciles à développer: oSDK et bibliothèques • Documentation riche • Open source 40
  • 41. Pr. Yassine SADQI Pr. Yassine SADQI Pourquoi développer des applications pour Android? 41 Stack Overflow Trends https://insights.stackoverflow.com/trends
  • 42. 42 III. Architecture de la plateforme Android
  • 43. Pr. Yassine SADQI Pr. Yassine SADQI Platform Architecture 43 The Android software stack
  • 44. Pr. Yassine SADQI Pr. Yassine SADQI Noyau • Toute l'architecture Android repose sur le noyau Linux 3.4 oL'environnement d'exécution (Android Runtime) –pour le déploiementde fonctionnalités comme la gestion des threads oLes différents drivers utilisés par les applications • A intégré de nombreuses modifications • Seuls les constructeurs et les intégrateurs s'intéressent à ce niveau (ex: LG, Huawei, …) 44
  • 45. Pr. Yassine SADQI Pr. Yassine SADQI Hardware Abstraction Layer (HAL) • Besoin d'abstraire le niveau matériel? • Cette couche est imposée par le fait que les applications Google Play doivent s'exécuter sur toutes les plateformes matérielles Android, quel que soit le constructeur (Samsung, LG, …) • Les entrées/sorties (e.g. Bluetooth ou caméra) possèdent des appels standard définis dans cette couche, en lien avec le driver associé. • Tous les équipements Android doivent respecter l'Android Compatibility Definition document (CDD) oComportement des interfaces –pour une intégration correcte du logiciel dans l'écosystème de la plateforme Android • Le Compatibility Test Suite (CTS) définit les différentes phases de tests associées. 45
  • 46. Pr. Yassine SADQI Pr. Yassine SADQI Librairies natives C/C++ • Beaucoup de composants et services Android (par exemple, ART, HAL) sont construits à partir de code natif nécessitant des librairies C/C++. • La plateforme Android repose sur un framework d'APIs Java pour exposer les fonctionnalités de ces librairies aux applications. • Pour le développement d'une application nécessitant du code C/C++, il est possible d'utiliser Android NDK (Android Native Development Kit) oAccès aux librairies natives directement depuis le code de l'application. 46
  • 47. Pr. Yassine SADQI Pr. Yassine SADQI ART • Avant l'API 21, l'ART utilisait une machine virtuelle appelé Dalvik. • Pour les applications à partir de l'API 21 (Android 5.0), chaque application s'exécute dans son propre processus, avec sa propre instance d'Android Runtime (ART) • ART permet d'exécuter plusieurs VM sur des terminaux à faible mémoire, en exécutant des fichiers DEX (Dalvik Executable File) 47
  • 48. Pr. Yassine SADQI Pr. Yassine SADQI Java API Framework • L'ensemble des fonctionnalités Android est disponible à travers des APIs (Application Programming Interface) Java. • L’objectif de ce Framework des APIs Java est de simplifier la réutilisation de composants de base, des modules et de services. • Ces APIs comprennent les éléments suivants: 1. Système de vues (View System)–pour la création d'IHM (Interface Homme Machine) 2. Gestionnaire de ressources ( Ressource Manager) –pour la gestion de chaînes de caractères, images, fichiers de mise en page (layout) 48
  • 49. Pr. Yassine SADQI Pr. Yassine SADQI Exercice 1: Platform Architecture (Java API Framework) 3. Gestionnaire de notifications (Notification Manager)–pour permettre aux applications d'afficher des notifications dans la barre de statut. 4. Gestionnaire d'activités (Activity Manager)–pour gérer le cycle de vie des activités 5. Fournisseurs de contenu (Content Provider)–pour permettre aux applications d'accéder à des données provenant d'autres applications (par exemples les contacts du téléphone) 49 A bien noter: Les développeurs Android ont un accès complet aux mêmes API que les applications système Android utilisent: https://developer.android.com/reference/packages.html
  • 50. Pr. Yassine SADQI Pr. Yassine SADQI Exercice 1: Platform Architecture (Applications système /natives ) • Un ensemble d'applications de base: email, SMS, agenda, navigation Internet, contacts, etc. • Les applications déjà présentes sur la plateforme Android ( System Apps) n'ont pas de statut particulier par rapport aux autres applications que l'utilisateur choisit d'installer. • Avec possibilité d'avoir une autre application pour la navigation Internet ou pour le clavier, … 50
  • 51. Pr. Yassine SADQI Pr. Yassine SADQI Applications système /natives • Les applications génériques préinstallées faisant partie de l’Android Open Source Project (AOSP): 51 https://source.android.com/