
Introduction
Lorsque nous avons planifi� le d�veloppement de l'application de bureau OEDcoder, nous avons examin� diff�rentes solutions pour trouver celle qui r�pondrait le mieux � nos exigences techniques, financi�res, de performance, d'interop�rabilit�, d'UX ... etc. Il y a beaucoup d'options disponibles sur macOS et encore plus si l'on consid�re les solutions multiplateformes. macOS est notre principale plateforme cible mais nous pourrions distribuer notre application sur d'autres plateformes (Windows/Linux/ChromeOS). Apr�s avoir examin� et prototyp� de nombreux outils, nous avons r�dig� un comparatif de nos trois premiers choix :
- Qt avec C++
- Electron avec JavaScript/TypeScript
- macOS Native (en Swift et/ou Objective-C)
Comparaison rapide
Exigences
Distinguer OEDcoder des autres outils d'encodage/d�codage base64 existants :
- Simplicit� d'utilisation : Doit �tre simple � utiliser pour tous les utilisateurs, quel que soit leur bagage technique.
- Haute performance
- Doit �tre capable d'encoder et de d�coder rapidement avec un minimum d'�tapes
- Doit �tre capable de maintenir un fonctionnement normal du bureau pendant l'utilisation en optimisant l'utilisation des ressources, notamment l'unit� centrale, la m�moire et l'espace disque.
- Doit prendre en charge tous les fichiers d'entr�e, quelle que soit la taille du fichier ou du lot.
- S�curit�
- Doit utiliser les meilleures pratiques de s�curit� de macOS, y compris la notarisation, le sandboxing et le runtime renforc�.
- Ne doit pas utiliser de serveurs en ligne, de services ou de biblioth�ques tierces non fiables.
- Confidentialit� : Tous les traitements doivent �tre effectu�s sur l'appareil local. Personne d'autre que l'utilisateur ne doit avoir acc�s aux donn�es encod�es ou d�cod�es dans notre application.
- Support de premi�re classe pour macOS : Utiliser les �l�ments natifs de l'interface utilisateur de macOS et bien s'int�grer � macOS, comme le glisser-d�poser.
- Prise en charge de la distribution via le macOS App Store : Utiliser le macOS App Store pour le traitement des paiements, la distribution et les r�visions.
- Documentation : Doit fournir une documentation claire dans l'application, disponible en ligne et t�l�chargeable.
- Multiplateforme (souhaitable) : Doit prendre en charge macOS avec la possibilit� de distribuer sur d'autres plateformes
Voici la d�mo du produit fini :
Comparaison des outils
Qt
L'un des premiers outils que nous avons essay� est Qt. Qt pr�sente les avantages suivants :
- Multiplateforme : Qt fournit d'excellents outils et une assistance pour macOS, Windows et Linux. Il prend �galement en charge les plates-formes mobiles, bien que cela ne fasse pas partie du champ d'application d'OEDcoder.
- Choix du langage de programmation : Le langage de programmation � primaire � associ� � Qt est le C++, avec un support pour d'autres langages, y compris leur propre langage Quick/QML qui ressemble � du JavaScript. Python est probablement le deuxi�me langage le mieux support� en termes de liaisons et il existe une liste d'options parmi lesquelles choisir.
- Soutien commercial de la Qt Company : Nous n'avons pas n�cessairement besoin ou besoin d'un support de niveau "entreprise" pour nos outils, mais il est bon de savoir que c'est une option.
- Excellent EDI C++ : Qt Creator est un excellent choix pour un EDI C++ et le concepteur d'interface utilisateur int�gr� fonctionne bien pour cr�er rapidement des interfaces utilisateur.
- Aspect quasi natif et int�gration au syst�me d'exploitation : Widgets d'interface utilisateur � l'aspect natif, mode sombre, glisser-d�poser ... etc.
- Haute performance : Les versions de Qt App pour macOS p�sent environ 200 Ko (sans les dylibs, 47 Mo avec les dylibs int�gr�s ou 17 Mo statiques) et ont le m�me nombre minimum de threads, mais une utilisation minimale de la m�moire plus importante :
Pour une application minimale de type � Hello, World �, Qt utilise deux fois plus de m�moire qu'Objective-C. - Une documentation abondante : La Qt Company et sa Qt Academy fournissent de bonnes ressources d'apprentissage et il existe des tonnes de tutoriels, de livres et de vid�os YouTube de qualit� variable.
La principale consid�ration pour l'utilisation de Qt dans les logiciels commerciaux est le prix. Bien qu'il soit possible d'utiliser Qt sous la LGPL, le respect de la LGPL pour les logiciels commerciaux peut s'av�rer d�licat. OEDcoder �tant un projet � source ferm�e, nous sommes r�ticents � utiliser Qt sous LGPL, m�me si nous pouvions le faire l�galement. De plus, Qt n'a pas une apparence native sur la plupart des plateformes.
Electron
La solution multiplateforme suivante que nous avons �tudi�e est Electron. Nous avons r�alis� une petite d�monstration de faisabilit� bas�e sur un navigateur et il a �t� facile de l'int�grer dans une application de bureau. Voici quelques-uns des avantages d'Electron
- Multiplateforme : Avec un bon support pour macOS, Windows et Linux
- Choix du langage de programmation : Electron permet d'utiliser JavaScript, TypeScript ou tout autre langage pouvant se compiler en JavaScript.
- Mise en page standard : Pouvoir utiliser HTML et CSS pour la mise en page au lieu d'avoir � apprendre un autre syst�me de mise en page propri�taire.
- Open Source avec le soutien d'une entreprise : Electron est soutenu par Github, qui appartient � Microsoft. Ils ont donc les ressources pour corriger les bugs et maintenir les choses �
jour. - Bonne documentation : Le site principal d'Electron dispose d'une documentation bien r�dig�e et de nombreuses autres ressources sont disponibles en ligne.
- Utilis� par des entreprises de renom : De nombreuses entreprises de renom utilisent Electron pour leurs applications, notamment Github (pour Github desktop), Microsoft (VS Code, Skype, Teams), Figma, Twitch, Slack et d'autres.
Si l'utilisation d'Electron pr�sente de nombreux avantages, elle pr�sente �galement des inconv�nients �vidents :
- Utilisation �lev�e des ressources :
- L'utilisation de l'espace disque est �norme. Une application Electron � hello world � pour macOS p�se plus de 240 Mo pour une architecture � un seul processeur.
Pour une application minimale de type � Hello, World �, Electron utilise 120 000 % d'espace disque en plus qu'une application minimale en Objective-C. - Utilisation de la m�moire et du CPU/thread :
Pour une application minimale � Hello, World �, Electron utilise plus de 400% de m�moire qu'une application minimale en Objective-C. - Un poids important pour un petit outil : Il existe de nombreuses applications bas�es sur Electron qui fonctionnent bien (nous utilisons VS Code et Github Desktop presque tous les jours). Cependant, la comparaison est difficile pour le d�veloppement d'un outil l�ger comme OEDcoder.
- L'utilisation de l'espace disque est �norme. Une application Electron � hello world � pour macOS p�se plus de 240 Mo pour une architecture � un seul processeur.
- Performance de JavaScript vs C/C++/Swift : Les performances de JavaScript sur le moteur V8 sont bonnes, mais elles ne sont pas comparables � celles des langages compil�s.
- Aspect non natif ressenti et vu : Vous pouvez cr�er de superbes interfaces utilisateur avec HTML et CSS, mais en g�n�ral, elles n'auront pas un aspect "natif". Des choses comme la prise en charge du mode sombre dans macOS et Windows sont possibles, mais pas aussi faciles qu'une solution native.
- Architecture de l'application : Les applications Electron sont divis�es en processus back-end et front-end et vous devez utiliser la communication inter-processus pour communiquer entre les deux. Ce n'est pas r�dhibitoire, mais ce n'est certainement pas aussi simple qu'un ex�cutable monolithique.
Native MacOS
Apr�s avoir pass� en revue toutes les solutions possibles, nous avons d�cid� de nous concentrer sur la fourniture de la meilleure exp�rience pour macOS en utilisant des outils natifs. Il nous restait � choisir le langage de programmation et la bo�te � outils � utiliser. Nous avons essay� Swift, � la fois avec SwiftUI et Storyboards, mais nous avons finalement opt� pour Objective-C. Les principaux avantages de l'utilisation d'Objective-C avec AppKit sont les suivants :
- Taille r�duite de l'application : Bien moins de 1 Mo pour l'ensemble de l'application
- Excellentes performances : Les frameworks Objective-C d'AppKit sont hautement optimis�s et il est difficile de battre le C en termes de performances d'ex�cution. L'utilisation de la m�moire est �galement l'une des plus faibles parmi les solutions que nous avons essay�es.
- Aspect natifs vu et ressenti : Le glisser-d�poser, le mode sombre, les widgets de l'interface utilisateur et les jeux de couleurs ont un aspect familier et fonctionnent exactement comme l'attendent les utilisateurs de macOS.
- Support commercial : Objective-C, AppKit et Xcode sont tous "pris en charge" par Apple, m�me si les d�veloppeurs individuels ne b�n�ficient pas toujours de l'attention n�cessaire.
- Concepteur visuel facile : Les Storyboards et Autolayout sont relativement faciles � utiliser et vous pouvez cr�er une interface utilisateur rapidement.
- Documentation h�t�roclite : Le site web d'Apple destin� aux d�veloppeurs contient des tonnes de documentation et il existe de nombreux livres, vid�os et r�ponses Stack Overflow � consulter.
Quelques inconv�nients li�s � l'utilisation de la plateforme native macOS :
- Pas multiplateforme : Si nous d�cidons de distribuer OEDcoder sur Windows ou Linux, nous devrons �crire de nouvelles versions � partir de z�ro.
- Outils et langages de programmation propri�taires : Xcode ne fonctionne que sur macOS, tandis que Objective-C et Swift peuvent �tre utilis�s en dehors de macOS/iOS techniquement, mais dans des cas d'utilisation de niche tels que GNUStep. Swift est mieux support� par Linux et Windows que Objective-C, mais l'accent est toujours mis sur les plateformes Apple, ce qui est compr�hensible.
- Xcode : Nous ne nous attendons pas � ce qu'il n'y ait pas de bogues, mais les fonctions critiques telles que le contr�le de la source doivent �tre fiables. Lors de l'utilisation du seul contr�le de source int�gr� (c'est-�-dire Git), l'interface utilisateur de Xcode se d�synchronise r�guli�rement avec le d�p�t Git. Fermer et rouvrir Xcode r�sout temporairement le probl�me, mais apr�s avoir remarqu� des divergences de temps en temps et avoir perdu du travail par la suite, nous sommes pass�s � l'utilisation de Github Desktop pour le contr�le de version.
- Plusieurs solutions "officielles" : Apple fournit de nombreuses solutions "officielles" pour le d�veloppement macOS (Swift vs Objective-C, AppKit, Catalyst, Storyboards, SwiftUI, etc.) L'approche "recommand�e" est toujours "la derni�re et la meilleure", mais il se peut que vous deviez vous rabattre sur des technologies plus anciennes pour prendre en charge certaines fonctionnalit�s ou du mat�riel plus ancien.
- La documentation peut �tre difficile � trouver : Apple fournit une documentation abondante, mais il arrive que les r�ponses � des bogues ou � des "fonctionnalit�s" obscures ne se trouvent que dans des articles de blog et des vid�os WWDC datant de plusieurs ann�es. Nous avons �t� touch�s par une "fonctionnalit�" de macOS mal document�e et sans d�tails sp�cifiques, la limite de fichiers de macOS Sandbox (qu'est-ce que cette limite exactement ?). La fa�on dont elle est mise en �uvre signifie qu'il n'y a pas de r�ponse d�finitive.
R�flexions finales
Les performances impressionnantes d'OEDcoder ont prouv� que le d�veloppement natif sous macOS �tait le bon choix pour r�pondre � nos besoins. Nous aurions probablement opt� pour Qt si OEDcoder devait �tre multiplateforme ou si nous disposions d'un budget plus important. Electron est parfait pour les d�veloppeurs et les entreprises qui se concentrent principalement sur le d�veloppement web, mais ce n'est pas notre cas.
Si vous �tes un d�veloppeur web et que vous vous demandez � Qu'en est-il de Wails ou de Tauri ? Ils r�solvent certains des probl�mes d'utilisation des ressources d'Electron �. Nous les avons essay�s, mais le fait de devoir utiliser plusieurs langages de programmation (Go ou Rust pour le back-end, JavaScript/TypeScript pour le front-end) augmente la complexit� et le changement de contexte. De plus, seul Electron permet d'acc�der au chemin d'acc�s complet des fichiers lorsqu'on les fait glisser depuis le Finder (c'est-�-dire notre condition sine qua non). Electron int�gre une version de Chrome qui a �t� modifi�e pour fournir le chemin d'acc�s complet lors du d�p�t de fichiers depuis le Finder, tandis que Wails et Tauri utilisent tous deux WKWebView sur macOS, qui ne permet pas d'acc�der au chemin d'acc�s complet.
Source : "Desktop Development Tool Comparison"
Et vous ?


Voir aussi :



Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.