Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités
    Avatar de Patrick Ruiz
    Homme Profil pro
    Redacteur web
    Inscrit en
    février 2017
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Redacteur web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2017
    Messages : 822
    Points : 28 147
    Points
    28 147
    Par défaut Dropbox explique pourquoi son appli pour Android et iOS passe du multiplateforme au natif
    Dropbox explique pourquoi son appli pour Android et iOS passe du multiplateforme via C++
    Au natif en Kotlin et Swift

    Le développement mobile multiplateforme offre à minima un avantage évident à entrevoir : l’équipe monte une base de code une seule fois, ce, pour diverses cibles ou plateformes. L’approche peut s’avérer utile pour les petites équipes aux compétences peu variées, mais que la nécessité d’aller en production le plus vite possible s’impose. Depuis 2013, l’équipe Dropbox s’appuie sur cette stratégie. Elle cible les plateformes Android et iOS via un unique base de code mise sur pied en langage C++. Dans une publication parue il y a peu, un ingénieur explique pourquoi l’entreprise préfère désormais le développement natif en Swift et en Kotlin.

    « En montant notre base de code d'une manière non standard, nous avons hérité de coûts dont nous n'aurions pas eu à nous soucier si nous nous étions alignés sur les canons par défaut dont des tiers font usage à grande échelle. Au finish, cela est revenu plus cher que d'écrire du code deux fois », a-t-il indiqué. De façon brossée, le retour d’expérience de l’ingénieur de Dropbox laisse filtrer que le choix de l’approche de développement multiplateforme introduit des coûts de développement additionnels liés à la mise sur pied de frameworks et bibliothèques personnalisés. Ça, c’est sans compter ceux relatifs à la mise sur pied d’outils de travail custom ou la nécessité de former ou recruter des tiers capables de s’adapter à une pile logicielle très personnalisée.

    En effet, Eyal Guthmann souligne que le choix de C++ pour le développement multiplateforme Android et iOS peut mener les développeurs à faire face à des difficultés qu’ils n’auraient pas eues en natif. Par exemple, indique-t-il, la mise sur pied d’un framework pour la gestion des tâches qui s’exécutent en arrière-plan peut s’imposer dans la filière développement multiplateforme en C++. À contrario, explique l’ingénieur de Dropbox, il ne s’agit pas d’un problème en natif. Eyal Guthmann relève même que l’équipe Dropbox a, dans le process, dû mettre sur pied une bibliothèque JSON pour C++11 ainsi qu’une autre pour la gestion des pointeurs NULL. L’ingénieur de la firme est même allé plus loin en mettant en exergue que c’est verser dans la théorie que de penser qu’on peut monter une unique base de code pour diverses plateformes. En effet, insiste-t-il, les spécificités de chaque plateforme constituent des facteurs auxquels on ne peut échapper. « La façon dont une application exécute une tâche en arrière-plan est spécifique à chaque plateforme et il faut en tenir compte dès le départ », précise-t-il.

    En plus des considérations qui touchent au code, il y a celles qui concernent les outils de travail. À ce propos, l’ingénieur de la firme développe sur deux axes : le débogage et la mise sur pied d’outils personnalisés. « L’expérience de débogage en natif est de façon générale supérieure à celle en C++ via l’IDE par défaut de la plateforme cible », écrit-il avant d’ajouter qu’ « en plus de devoir se détourner des outils disponibles, nous avons dû mobiliser des efforts de développement pour la mise sur pied d’autres à même de supporter l’approche multiplateforme en C++. »

    Enfin, pour ce qui est des aspects liés à la formation et au recrutement, Eyal Guthmann indique que l’aventure multiplateforme s’est construite autour d’un noyau d’ingénieurs avec une forte expérience en C++. Avec les départs de ces derniers vers d’autres équipes ou entreprises, l’entreprise a eu de plus en plus de mal à combler le gap technique pour maintenir la base de code C++. En interne comme en externe, la firme a eu du mal à former et à recruter sur cet axe, car il semble que très peu de développeurs mobiles portent un intérêt au C++.

    Nom : native-or-cross.jpg
Affichages : 56481
Taille : 134,5 Ko

    Le passage de l’équipe Dropbox au natif via Kotlin et Swift pour Android et iOS vient avec des avantages. De façon classique, on attribue à cette approche de générer des applications capables de tirer un excellent parti des ressources du système d’exploitation et du matériel à disposition. Au-delà du besoin d’écrire du code une seule fois pour plusieurs plateformes, l’on peut arguer que le choix de C++ dès le départ permet de rester sur ledit axe. En effet, le langage C++ fait, à côté du C qu’on ne cite plus, office de dénominateur commun pour la gestion de telles problématiques. Il n’est pas difficile d’imaginer que le groupe initial d’ingénieurs l’avait intégré pour la gestion de certains aspects critiques du backend. Seulement, des questions sur la qualité de l’interfaçage du langage C++ avec les plateformes cibles peuvent être mises sur la table. À ce propos, il faut noter que l’équipe Dropbox s’est appuyée sur Djinni – un framework qui permet d’interfacer du code multiplateforme C++ à du code Java ou Objective-C. D’après les retours de développeurs tiers, ce dernier opacifie l’interface avec la plateforme cible, ce qui finit par transformer le flux d’exécution en un chaos d’appels incontrôlables.

    Source : billet de blog

    Et vous ?

    Qu’en pensez-vous ?

    Est-il mieux d’écrire tout le code pour chaque plateforme comme l’a décidée l’équipe Dropbox ?

    Quand est-ce que le développement multiplateforme est-il plus bénéfique ? Quelles sont alors les solutions les plus rapides ?

    Ces approches ne présentent-t-elles pas trop d’avantages en commun de nos jours ? Surtout avec l’avènement de frameworks comme Flutter ?

    Voir aussi :

    Google publie la Preview finale de Flutter, son SDK mobile Android et iOS, la dernière étape majeure avant la publication de la version stable 1.0
    Quels sont vos environnements de développement intégrés (EDI) préférés en 2018 ? Et pourquoi ? Partagez vos avis
    Le mode sombre d'Android permet-il d'économiser l'énergie de la batterie des smartphones ? Oui, confirme Google
    Kotlin 1.3 est disponible : coroutines désormais stables, Kotlin/Native Beta, bibliothèques multiplateformes et bien plus encore
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre expérimenté Avatar de onilink_
    Profil pro
    Inscrit en
    juillet 2010
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 28
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 379
    Points : 1 446
    Points
    1 446
    Par défaut
    Donc en gros C++ c'est pas natif (???) car faut implémenter soit même une lib json et une gestion des pointeurs null?

    Je comprend qu'avec leur équipe qui perd ses membres compétents en C++ il fallait passer à quelque chose d'autre (à défaut de trouver de nouveau ingénieurs) mais de la à rationaliser comme il le font...
    Je comprend pas en quoi du C++ pourrait être moins natif sur Android et iOS que Kotlin et Swift.
    J'imagine qu'ils veulent parler des accès à l'API de l'OS, mais bon ça c'est pas vraiment la faute d'un langage si l'API de la plateforme est mauvaise... et surtout tu t'en rends compte pendant le choix de la techno, pas après avoir codé le logiciel en entier.

    Leur façon de présenter les choses est très mal tournée... et ça me conforte dans l'idée à jamais aller faire du dev pour smartphone, s'il est plus efficace de réécrire 2x un logiciel plutôt que faire une basecode cross-platform, quelle horreur.
    Des tutos de pixel art: https://twitter.com/OniMille

  3. #3
    Membre confirmé
    Inscrit en
    juin 2010
    Messages
    618
    Détails du profil
    Informations forums :
    Inscription : juin 2010
    Messages : 618
    Points : 636
    Points
    636
    Par défaut
    Citation Envoyé par onilink_ Voir le message
    Donc en gros C++ c'est pas natif (???) car faut implémenter soit même une lib json et une gestion des pointeurs null?

    Je comprend qu'avec leur équipe qui perd ses membres compétents en C++ il fallait passer à quelque chose d'autre (à défaut de trouver de nouveau ingénieurs) mais de la à rationaliser comme il le font...
    Je comprend pas en quoi du C++ pourrait être moins natif sur Android et iOS que Kotlin et Swift.
    J'imagine qu'ils veulent parler des accès à l'API de l'OS, mais bon ça c'est pas vraiment la faute d'un langage si l'API de la plateforme est mauvaise... et surtout tu t'en rends compte pendant le choix de la techno, pas après avoir codé le logiciel en entier.

    Leur façon de présenter les choses est très mal tournée... et ça me conforte dans l'idée à jamais aller faire du dev pour smartphone, s'il est plus efficace de réécrire 2x un logiciel plutôt que faire une basecode cross-platform, quelle horreur.
    Perso je n'utilise que Xamarin/Xamarin Forms suivant le besoin ça permet de ne pas avoir à me taper deux fois la même appli. Et oui je confirme les apis androids sont vraiment mal foutu, sur iOS Apple adore les bonnes grosses variables globale .

  4. #4
    Membre expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2017
    Messages
    794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2017
    Messages : 794
    Points : 3 500
    Points
    3 500
    Par défaut
    Citation Envoyé par onilink_ Voir le message
    faut implémenter soit même une lib json et une gestion des pointeurs null?
    C'est à partir de là que j'ai commencé à avoir des doutes... Des lib C++ pour gérer du JSON ou des null, ça existe depuis des années. S'ils veulent tout coder eux-mêmes, faut pas s'étonner que ça demande du travail...

    Citation Envoyé par onilink_ Voir le message
    tu t'en rends compte pendant le choix de la techno, pas après avoir codé le logiciel en entier
    C'est surtout, qu'ils devaient déjà avoir une base de code avec les applis desktop, qu'ils devront continuer à maintenir d'ailleurs.

    Citation Envoyé par onilink_ Voir le message
    ça me conforte dans l'idée à jamais aller faire du dev pour smartphone, s'il est plus efficace de réécrire 2x un logiciel plutôt que faire une basecode cross-platform, quelle horreur.
    Oui, au lieu de perdre du temps à rendre leur base multiplateforme ils vont perdre du temps à la développer 2 fois en parallèle. Pas sûr que ce soit beaucoup plus efficace. Et dans quelques années, ils vont peut-être nous sortir un article expliquant pourquoi ils ont migré vers un framework déjà multiplateforme, comme Qt mobile.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    mars 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2008
    Messages : 67
    Points : 76
    Points
    76
    Par défaut
    Bah c'est sûr, si ils supportaient à bout de bras leur appli + leur propre framework, développé ad-hoc pour leur appli....

    Mais qu'en est-il de la comparaison d'un appli développé deux fois de zéro pour deux plateformes différente, ou d'une appli développé une seule fois, mais reposant sur un vrai framework multiplateforme, fais par d'autres, dont c'est l'unique objectif (Qt, React Native, Flutter, Xamarin, ...) (je n'ai pas l'impression qu'on peut considérer Djinni de ce calibre là).

  6. #6
    Membre actif Avatar de der§en
    Homme Profil pro
    Meaux
    Inscrit en
    septembre 2005
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Meaux
    Secteur : Transports

    Informations forums :
    Inscription : septembre 2005
    Messages : 359
    Points : 291
    Points
    291
    Par défaut
    Tu as oubliés dans ta liste Delphi et son framework multiplateforme FIREMONKEY.

  7. #7
    Expert éminent sénior

    Avatar de Neckara
    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    décembre 2011
    Messages
    8 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 8 186
    Points : 20 604
    Points
    20 604
    Par défaut
    Je dois avouer que je ne comprend pas pourquoi ont ils besoin d une bibliotheque pour gerer les pointeurs nuls ?
    "Parce que le diable est dans les détails, une vision sans nuance ne peut prétendre à la compréhension du monde."

    Mon ancienne page perso : https://neckara.developpez.com/

  8. #8
    Membre éprouvé
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2004
    Messages
    818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : juin 2004
    Messages : 818
    Points : 1 125
    Points
    1 125
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par onilink_ Voir le message
    Donc en gros C++ c'est pas natif (???) car faut implémenter soit même une lib json et une gestion des pointeurs null?

    Je comprend qu'avec leur équipe qui perd ses membres compétents en C++ il fallait passer à quelque chose d'autre (à défaut de trouver de nouveau ingénieurs) mais de la à rationaliser comme il le font...
    Je comprend pas en quoi du C++ pourrait être moins natif sur Android et iOS que Kotlin et Swift.
    J'imagine qu'ils veulent parler des accès à l'API de l'OS, mais bon ça c'est pas vraiment la faute d'un langage si l'API de la plateforme est mauvaise... et surtout tu t'en rends compte pendant le choix de la techno, pas après avoir codé le logiciel en entier.

    Leur façon de présenter les choses est très mal tournée... et ça me conforte dans l'idée à jamais aller faire du dev pour smartphone, s'il est plus efficace de réécrire 2x un logiciel plutôt que faire une basecode cross-platform, quelle horreur.
    Je pense que le choix de C++ étaient basé sur l’existence de GUI multi-plateforme. Elles existent, mais leur problèmes est qu'elles ont uniquement des composantes communes aux trois plateformes (Microsoft, Apple, Linux). Avec résultat que l'on doit faire des interface sans certains éléments d'interface spécifique à chaque OS.
    intel i7
    OpenSuse Leap 42.2
    Plasma et Cinnamon

  9. #9
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    avril 2002
    Messages
    3 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : avril 2002
    Messages : 3 885
    Points : 11 233
    Points
    11 233
    Par défaut
    Citation Envoyé par onilink_ Voir le message
    Donc en gros C++ c'est pas natif (???) car faut implémenter soit même une lib json et une gestion des pointeurs null?

    Je comprend qu'avec leur équipe qui perd ses membres compétents en C++ il fallait passer à quelque chose d'autre (à défaut de trouver de nouveau ingénieurs) mais de la à rationaliser comme il le font...
    Je comprend pas en quoi du C++ pourrait être moins natif sur Android et iOS que Kotlin et Swift.
    J'imagine qu'ils veulent parler des accès à l'API de l'OS, mais bon ça c'est pas vraiment la faute d'un langage si l'API de la plateforme est mauvaise... et surtout tu t'en rends compte pendant le choix de la techno, pas après avoir codé le logiciel en entier.
    Disons que tout dépend de la définition de natif que l'on se donne. Si ta définition c'est ce qui se compile directement en code machine alors oui C++ est on ne peut plus natif.

    Mais la définition de natif dans ce cas là c'est ce qui s'intègre le mieux avec les environnement de développement standard avec notamment, en effet, une API adaptée. Et là, force est de constater que Android et iOS, n'ont pas du tout été prévus avec le C++ comme langage principal, particulièrement en ce qui concerne l'interface graphique, qui n'est pas du tout facile a utiliser dans ce cas là. Mozilla a fait la même constatation, l'IHM de Firefox mobile a été refaite en Java sous Android, car le C++ n'est pas adapté à un fonctionnement optimal dans ce domaine.

    Alors oui ce n'est pas la faute du langage en soi, si les OS mobile avaient été concu avec des API standards adaptées au C++, la situation serait probablement inverse, mais c'est le constat que l'on fait aujourd'hui dans la pratique.

  10. #10
    Membre expérimenté Avatar de onilink_
    Profil pro
    Inscrit en
    juillet 2010
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 28
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 379
    Points : 1 446
    Points
    1 446
    Par défaut
    Oui, j'avais cru comprendre mais je ne suis pas sur que du coup natif soit le terme le plus adapté étant donné qu'il à déjà un autre sens.
    Triste pour le C++ en tout cas de ne pas bénéficier de bonnes APIs... ça simplifierais quand même énormément les choses pour du vrai dev crossplatform.

    Citation Envoyé par Neckara Voir le message
    Je dois avouer que je ne comprend pas pourquoi ont ils besoin d une bibliotheque pour gerer les pointeurs nuls ?
    J'imagine que c'est pour le fameux not_null<T>, mais y a déjà une implé: gsl::not_null, du coup je ne comprend pas trop l'idée de le réimplémenter... si c'est bien ça.
    Des tutos de pixel art: https://twitter.com/OniMille

  11. #11
    Membre confirmé
    Profil pro
    retraité
    Inscrit en
    décembre 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : décembre 2010
    Messages : 274
    Points : 564
    Points
    564
    Par défaut
    S'ils voulaient une interface commune pourquoi ne pas se baser sur Skia comme le fait Flutter ? Après il y a évidemment les APIs des capteur, les notifications d’événements...mais cela limite quand même le code à faire ensuite.

  12. #12
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2013
    Messages
    565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 565
    Points : 871
    Points
    871
    Par défaut Ha ha !
    Citation Envoyé par Neckara Voir le message
    Je dois avouer que je ne comprend pas pourquoi ont ils besoin d une bibliotheque pour gerer les pointeurs nuls ?
    Ce n'est pas une bibliothèque pour gérer les pointeurs nuls, c'est une bibliothèque pour gérer les développeurs nuls

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/10/2017, 12h20
  2. Salaire ingénieur études et dévelopement sur Paris
    Par Samir-1975 dans le forum Salaires
    Réponses: 4
    Dernier message: 11/11/2010, 00h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo