IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

Vous �tes nouveau sur Developpez.com ? Cr�ez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et �tre connect� pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Cr�ez-en un en quelques instants, c'est enti�rement gratuit !

Si vous disposez d�j� d'un compte et qu'il est bien activ�, connectez-vous � l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oubli� ?
Cr�er un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Comparaison des outils de d�veloppement de bureau, Qt, Electron et Native macOS (Objective-C et Swift)
Par BumbleMeow

Le , par BumbleMeow

484PARTAGES

5  0 
Comparaison des outils de d�veloppement de bureau, Qt, Electron et Native macOS (Objective-C et Swift) , par BumbleMeow

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.

  • 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 ?

Pensez-vous que cette comparaison est cr�dible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

La version 6.7 de Qt est disponible avec de nombreuses am�liorations pour construire des applications modernes et une meilleure exp�rience utilisateur

Electron 12 est disponible avec la prise en charge de l'API Web Serial et de nouvelles API pour activer/d�sactiver le correcteur orthographique

OrbStack : un outil permettant d'ex�cuter des conteneurs Docker et des distributions Linux sur macOS qui se veut rapide, l�ger et simple. Il est pr�sent� comme un substitut natif � Docker Desktop sur macOS
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.

Une erreur dans cette actualit� ? Signalez-nous-la !

Avatar de der�en
Membre exp�riment� https://www.developpez.com
Le 17/01/2025 � 9:41
Il aurait d� aussi �valuer Delphi et son framework FMX ou Lazarus / FPC !
2  0 
Avatar de doc
Membre confirm� https://www.developpez.com
Le 19/01/2025 � 15:17
multiplatforme -> java
3  1 
Avatar de Rep.Movs
Membre actif https://www.developpez.com
Le 27/01/2025 � 13:33
J'adore l'environnement Qt, je ne le cache pas. Il permet de faire du C++ "� la fa�on" de langages plus modernes (Java, C#). Il permet de faire de l'UI comme maintenant (plein de scripts) ou � l'ancienne (en glisser/d�poser sous Qt creator).
Et c'est un environnement complet et coh�rent: pas besoin d'un autre environnement pour traiter le XML, les pages web, l'impression ou les acc�s BDD.
Je l'utilise d'ailleurs autant pour l'UI que pour des outils en ligne de commande.

Alors oui, soit on fait de l'opensource, soit on passe durement � la caisse. Mais c'est un des rares environnement qui est comp�titif par rapport � Visual Studio par exemple.
1  0 
Avatar de archqt
Membre �m�rite https://www.developpez.com
Le 07/02/2025 � 20:53
Pour Qt, la licence LGPL autorise la liaison statique ou dynamique, � condition que l'utilisation puisse changer la version de Qt.
Il faut donc pr�voir, un r�pertoire qui contient les DLL par exemple OU la possibilit� de "cr�er" l'ex�cutable en embarqu� en donnant le code objet et un m�canisme permettant la liaison statique.

L� o� c'est compliqu� c'est que l'entreprise qui fabrique le syst�me doit permettre que celui-ci puisse �tre flash�, par le client, qu'il puisse faire cela. Pas �vident pour des IHMs m�dicales ou de voiture.

Si quelqu'un a d�j� fait cela pour l'embarqu� son t�moignage serait sympa.
1  0 
Avatar de emilie77
Membre �prouv� https://www.developpez.com
Le 17/01/2025 � 11:44
Flutter, Fyne.io avec go, Maui, Uno platform ...
Si je lis la license de QT, �a me passe l'envie de l'utiliser
0  2