ReactXP : Un langage universel pour les écrans : Vues, Animations, Styles. Mise à jour temps réel des écrans à la modification de code = agilité dans le développement. On reste concentré sur l'expérience utilisateur, les besoins du client, et la performance.
2. Qui suis-je ?
26 années dans le développement
Full Stack sous Windows
1,5 années en tant que freelance
Spécialisé migration
d’applications vers le cloud et le
mobile
CTO associé chez Hygeex :
https://www.hygeex.com
@omatrot
https://matrot.tech/
2
3. Préambule - Contexte
Ceci est mon
expérience
01
Ceci n’est pas
nécessairement
la solution dans
votre contexte
02
Je ne suis pas
un expert
03
3
4. Enjeux de ReactXP
Rester
concentré sur
l’UX
•Besoins
•Performance
Un langage
universel pour
les écrans :
•Vues
•Animations
•Styles
Un langage
populaire pour
la logique
métier
•TypeScript
•Sur ensemble de
JavaScript
•Typage statique
optionnel
•Classes et
interfaces
Agilité dans le
développement
et en bonus
•Voir les
modifications d’UI
instantanément
•Import de
modules externes
•Choix de la
cible JavaScript
Our mission is to empower every person and every organization on the planet to achieve more
4
6. ReactXP chez Hygeex
Plateforme pour l’éducation thérapeutique du patient (ETP)
Processus continu d’aide au patient vis-à-vis de sa maladie chronique.
Réseau de soignant autour du patient.
Existant Proto/V1 (2018/2019)
Xamarin.Android pour le mobile (patients)
PHP/HTML/Bootstrap pour le web (soignants et patients)
Future V2 (courant 2019)
ReactXP
Appli mobile iOS et Android pour les patients (Mobile First)
Site web pour les soignants et patients.
6
7. ReactXP chez
B2bot
Mise en œuvre dans le cadre du
POC de la société B2bot
Backend natif de vision
artificielle en C++ 11 multi-
plateformes
A exposer sur une application
Android et iOS
ReactXP ouvre les possibilités
futures.
7
9. Zoom sur « Native » de React Native
iOS Android
Objective C Java
C++ 11
Javascript
Moyens de liaisons pour le C++ (djinni-react-native)
Moyens de liaison JavaScript/ObjC-Java
fournis en standard par React Native
9
10. djinni-react-native
Description des objets métiers et des interfaces en IDL
Djinni est Initié par Dropbox
Génération des liaisons Javascript vers Java/ObjC
Ce fork permet la génération du code Java/Objective C de liaison
Javascript/C++.
On reste concentré sur le cœur de métier.
10
11. Démarrage
Installer Visual Studio Code
create-rx-app
Permet de créer une application de démarrage
sinon partir d'un exemple de Microsoft
Récupèrer les dépendances (yarn/npm)
Exécution
npm run-android
npm run-ios
npm run web-watch
Ouvrir index.html dans le navigateur de votre choix
11
12. Problèmes rencontrés
Styles (CSS/Flexbox) versus composants de layout
L’Open Source au sens large peut être problématique
Manque parfois de réactivité
Pb sur tél Android peu cher (32 bits/anciens périphériques)
Divergence de fonctionnalités entre les plateformes cibles.
Changements dans React Native qui cassent une fonctionnalité
Composant <Image>
Lourdeur/incompatibilité des modules NodeJS entre eux.
12
13. Merci pour votre attention
A retenir
Couche métier écrite en C++ portable exposée en Javascript
Plateformes cible de l’application potentiellement infinies.
Uniquement du code lié à l’UX
13
Notes de l'éditeur
Librairie Open Source créé par l’équipe Skype de Microsoft
Dzbut de carrière en 1993. Crise de la pré cinquantaine, décision de devenir freelance.
Grosse expérience sur le SaaS sur cloud privé.
Cloud public monte en puissance, ainsi que les plateformes mobiles.
Renverser la table !
Je suis hors de ma zone de confort à cet instant, je préfère résoudre des problèmes avec mes clients en parlant en face à face aux membres des équipes.
Je ne pourrais peut-être pas répondre à vos questions mais je ferai de mon mieux.
Enjeux : aider les développeurs à rester concentré sur l’expérience utilisateur.
Ce n’est pas la première tentative en la matière de la part de Microsoft, il y a eu Silverlight.
L’agilité est spécifique à React et non à ReactXP.
Mission de Microsoft : Accomplir d’avantage
Langage universel
On notera la proximité avec React Native ajout du prefixe ‘RX’
Balises XML correspondant aux Briques de base pour composer des contrôles plus complexes
Dénominateur commun à toutes les plateformes
ETP : processus continu d’aide au patient vis-à-vis de sa maladie chronique.
Je ne vais pas parler de ReactXP dans le cadre d’Hygeex, mais dans le cadre d’une mission pour un autre client
J’ai cependant évalué ReactXP pour Hygeex.
On passe de la nécessité de maitriser 2 ensembles de technologies à une seule pou la production de la plateforme.
Cas un peu particulier.
Pour l’instant application mobile uniquement mais on reste ouvert en terme de plateformes cibles pour le futur.
Ce schéma à été réalisé par mon client, je ne suis pas tout à fait d’accord avec la représentation qui est faite de ReactXP, nous verrons cela dans une diapo à suivre.
ReactJS est une librairie, React Native est un framework(projets ios/Android et ponts vers Java ObjC)
React Native et React JS partagent une librairie commune pour la gestion du cycle de vie des composants (non représenté ici)
ReactXP permet d’adresser toutes les plateformes existantes.
Il est possible d’encapsuler des application React JS avec Electron pour fonctionner comme application de bureau sur Linux/Mac/Windows (non représenté ici)
Rappelons nous que nous devons mettre notre énergie sur l’expérience utilisateur.
Je cherche comment résoudre ce problème et trouve le projet OSS parfait.
Les moyens de liaisons sont Javascript / ObjC – Java sont fournies en standard mais doivent être écrites à la main.
Il nous fallait les moyens de liaison JavaScript vers le C++
L’idée initiale à été poussée plus loin pour faire du code de liaison Javascript/C++
Il faut être familarisé avec le CSS (Flexbox), je trouve les layout Android /WPF plus aisément utilisables…quoi que…
OpenCV à été difficile à mettre en œuvre par manque de recul sur les architectures 32 bits.
Ce qui marche sur Android ne marche pas sur iOS et vice versa… (Camera interne, appels HTTP).