Bonjour,
Pour ma part, je me suis penché énormément sur le QML (Qt) pour mes interfaces graphiques et le C++ pour la partie logique de mes applications.
Pourquoi avoir fait ce choix ? En particulier, pourquoi préférer une technologie native ou héritée du Web ?En général, les gens n'apprécient pas forcément le C++ pour le développement d'applications mobiles, étant donné que ce genre d'application nécessite en général d'être développé rapidement. De même, sur le plan des performances, on peut difficilement apprécier réellement plus le C++ que le C#, ce qui fait plutôt pencher la balance en défaveur du C++. Cependant, je code depuis des années avec ce qui me mène à avoir une productivité suffisante pour ne pas considérer ces points.
Mon choix se tourne en réalité autour du QML. À l'aide de cette technologie, on décrit notre interface un peu comme on écrirait du CSS, c'est-à-dire en associant des expressions à des propriétés, automatiquement mises à jour lors d'une modification de l'un des paramètres de l'expression. Il s'agit d'une arborescence d'éléments, par exemple un Rectangle arborant pour couleur un dégradé sombre et une MouseArea à l'intérieur permettant de notifier d'un clic, pour un bouton très simple. Cela peut sans doute vous paraître peu engageant comme manière de coder. Vous avez l'impression de recoder la roue. Si vous souhaitez l'éviter, vous pouvez utiliser les Qt Quick Controls qui vous permettront d'avoir un design natif, selon la plateforme ciblée. De mon point de vue, ce "recodage" est extrêmement pratique car il me permet de développer des interfaces graphiques modernes et avec mon propre design sans aucune complication. Les animations se codent en général en une ligne, et le résultat est fluide. Du fait que je code avec cela depuis des années (lorsqu'il n'en était qu'à sa version 1.0), ce choix peut sans doute être considéré comme un choix de facilité.
Étant très regardant sur les performances, et ne souhaitant pas que les utilisateurs se retrouvent à voir leur batterie flancher de manière significative, j'ai - c'est peut-être un préjugé - une certaine réticence à m'orienter vers des technologies Web exploitant un viewer. De plus, pour du contenu dynamique, la charge derrière me paraît à première vue un peu trop laborieuse pour être utilisée ailleurs que pour des applications simples (cela reprend un peu ce que disait Francis Walter dans le premier post).
En ce qui concerne les technologies natives, je pense que c'est la meilleure solution dans le cas utopique où le(s) développeur(s) ou l'entreprise aurait du temps à revendre pour faire les choses au mieux. J'emploie le terme utopique dans le sens où je ne considère pas aujourd'hui que les gens aient réellement le temps ou l'argent permettant de recoder en plusieurs exemplaires une même application ayant pour cible plusieurs plateformes. Dans le cas d'une application ne visant qu'Android, par exemple, le choix d'une technologie native me paraît cependant tout à fait adapté.
Quels sont vos critères de choix d'un langage pour développer une application mobile ? Le coût ? Les performances ? La licence ? Le temps de développement ? L'ergonomie ? Autres ?Tout les points évoqués me semblent importants. Les classer en est ainsi assez difficile ; je m'y essaye cependant :
- L'ergonomie ;
- Les performances ;
- Le temps de développement ;
- La licence ;
- Le coût.
J'ai placé la licence et le coût à la fin, mais cela mérite à mon avis que l'on s'y attarde un peu. Une entreprise n'aura en général aucun problème à payer quelques licences permettant de développer avec une technologie donnée ainsi que les coûts liés aux stores d'applications mobiles, d'où le placement à la fin de la liste. Cependant, si l'on regarde du point de vue d'un particulier développant avec quelques amis une application mobile, les possibilités se trouvent très impactées. Xamarin, malgré son éclat actuel, coûte un peu d'argent, Qt pour iOS, par exemple, va nécessiter d'utiliser la version commerciale pour pouvoir builder statiquement les applications, bref, il ne reste alors plus que peu de choix, ce qui est plutôt dommage à mes yeux, car le développement d'une application mobile prend tout de suite une ampleur plus importe que s'il s'agissait d'un simple projet.
Quels sont les points forts / positifs (avantages) ?Je reprends ici un peu ce que je disais en répondant à la première question :
- Facilité du développement de l'interface graphique (ergonomie, animations, design, etc.) ;
- Les performances sont intéressantes ;
- Possibilités d'interactions avec le matériel (senseurs, etc.) ;
- Un code pour plusieurs plateformes (iOS, Android, Windows Phone, notamment).
Quels sont les points faibles / négatifs (inconvénients) ?- Il est obligatoire d'envisager du Model/View pour aboutir si l'on souhaite utiliser C++ et non uniquement du QML ;
- Le JavaScript exploité pour les expressions du QML peuvent s'avérer lentes si non optimisées ;
- Il n'y a pas réellement de règles de codage, ce qui mène le développeur à devoir être consciencieux pour ne pas finir avec une bouillie de code dans tous les sens ;
- Qt Commercial est nécessaire dans certains cas (iOS nécessite un build statique) ;
- La croissance de la technologie a beau être importante, la technologie est jeune.
Pour quel genre de projets l'utilisez-vous ?J'ai pu l'utiliser en entreprise à quelques reprises en développant des applications exploitant des Web services. Je l'ai également utilisé à maintes reprises pour des projets personnels, le dernier en date étant un jeu de tactique tour par tour où l'on contrôle des unités dans le cadre de batailles contre des IA, avec des objectifs donnés.
Êtes-vous satisfait des résultats ?Les performances sont très bonnes, les animations fluides, etc., ce qui fait que oui, mais je n'ai pour le moment pas pu comparer sur de gros projets Qt/QML avec les autres technologies mobiles, ce qui fait que cette réponse n'est que peu objective.
Quels sont les avantages et inconvénients d'un langage générique (utilisable sur plusieurs plateformes) ?En général, un langage générique va permettre de faire l'essentiel du travail mais nécessitera toujours des ajustements entre les plateformes cibles. Android nécessite par exemple de se plier à quelques contraintes de qualité, de performances et d'ergonomie (par exemple, si l'on a de la musique dans l'application, au moment où l'utilisateur sort de l'application pour regarder ses mails, la musique doit être coupée, à moins qu'il s'agisse d'une application vouée à jouer de la musique). De plus, certains devices pourront nécessiter pour l'utilisation de certaines capacités des outils natifs. Tout dépend vraiment de ce que l'on souhaite développer.
Utilisez-vous d'autres langages ? Lesquels ? Pourquoi ?Dans le cas présent, non, je suis pour le moment immergé avec Qt/QML.
Quel autre langage voudriez-vous utiliser ? Pourquoi ?J'aimerais assez me lancer un peu avec Xamarin de sorte de coder en C# et de me familiariser avec les WPF. J'ai jusque là seulement effleuré le sujet, et je me dis que je loupe peut-être quelque chose à rester cloîtré avec Qt.
Voilà pour moi. Je me rends compte d'avoir écrit une certaine quantité, mais j'espère avoir répondu de manière adaptée.
Bonne journée,
Louis
2 |
0 |