Quel langage pour faire une appli desktop

Quels sont les avantages/inconvénients des différents langages pour faire une appli desktop (et donc avec une interface graphique)

L’appli desktop modeste, genre un lecteur pour Qobuz ou Spotify, un client git ou Twitter … on reste sur des appli modeste qui se connectent à des API ou des actions simples (genre formater une clé usb).

Ps: concernant le cross plateforme, refaire une partie du code pour faire changer de plateforme, c’est chiant mais c’est cross plateforme.

J’ai déjà fait un tour de plusieurs langages :
C++ avec Qt

Avantages:

  • Qt fait bien le job d’interface graphique
  • on sort un exécutable (donc facilement déployable)

Inconvénients:

  • le C++ ça pique les yeux (surtout si on veut faire qu’une petite appli)

Java avec Swing

Avantages:

  • On sort un exécutable

Inconvénients:

  • Swing (je suis le seul à faire des cauchemars en y pensant ??)
  • Swing est laid

Python avec PyQt (ou un autre module gérant Qt)

Avantages:

  • les avantages de Python
  • les modules permettant d’utiliser Qt

Inconvénients:

  • impossible d’expliquer à un utilisateur comment déployer Python pour faire fonctionner l’appli
  • l’enfer pour générer un exécutable

Ruby avec qtbindings (ou une autres gem gérant Qt)

Avantages:

  • les avantages de Ruby
  • les gem permettant d’utiliser Qt

Inconvénients:

  • comme Python, l’enfer pour faire un exe ou expliquer comment installer Ruby pour faire fonctionner l’appli

Golang:

  • j’ai rien trouvé pour faire une interface graphique

Gecko (le moteur de rendu de Mozilla, ils l’utilisent pour Firefox ou Thunderbird)

Avantages:

  • facilement cross-plateforme
  • spécialement conçu pour faire du rendu

Inconvénients:

  • absences de tuto
  • personne ne semble l’utiliser (sur stackoverflow les questions n’ont pas de réponses … )
  • je ne vois pas encore les limites de ce qu’on peut faire (et comment les contourner)

Alors vous utilisez quel langage pour les appli desktop ??

2 « J'aime »

Bonjour,

Je m’était penché sur la question il y a un moment pour en venir à pensé que c’était un peu dépasser de faire des application de bureau uniquement, à moins d’un besoin spécifique. Avec des outils comme Ember/Angular, tu peux faire des applications web aussi interactive que des applications de bureau. Il est également possible de faire des applications de bureau avec des application web avec node webkit.

Si tu as des arguments en faveur des applications traditionnels, je suis tout ouïe.

1 « J'aime »

Quelques expériences perso :

C++
C’est vrai que C++ çà pique un peu (bcp), mais Qt reste une solution plus que crédible pour faire du cross-platform…
Ca marche du tonnerre. J’ai codé une sorte de process-viewer pour une appli. perso. et ca tourne nickel sous Linux, Windows et OSX (et même Android !!) avec juste une recompil à chaque fois. Gain de temps monstrueux.
Par contre prise en main pas aussi évidente…

Python
Le top (à mon avis)
WxWidget a un binding python mais je ne sais pas ce que ca donne en terme de déploiement, et en plus on dirait que le projet est au point mort…

Java
C’est pas si dégueu que ca Swing (Enfin tu souffres quand même hein), regarde un peu le boulot qu’a fait Jetbrains.
Bon par contre l’histoire ne dit pas s’ils sont pas devenu fou pour en arriver là :)

Sinon y’a JavaFX. Mais pour le moment les softs “desktop” utilisent tous Swing (SoapUI, AquaDataStudio, IntelliJ, …)

Delphi
Y’aurait bien DelphiXE mais -si je me souviens bien- pas de support Linux :( donc…

1 « J'aime »

Personnellement, je n’ai trouvé aucun langage permettant de faire des interfaces aussi simples, correctes et rapidement que HTML/CSS/JS…
Donc je serai tenté de passer par des solutions sur ces technologies. Cependant, étant dédiés au web, il faut une interface supplémentaire pour réaliser des opérations dont tu parles (ex: formater la clef USB).

Tu peux essayer de voir ce sujet, mais je n’ai testé aucune solution proposée.

Si l’application est petite, tu peux toujours utiliser Java et swing. Avec le form designer de Intellij, tu fais une interface assez rapidement. Tu peux prendre un thème sur le web et tu as ton application prête et pas trop moche. J’ai fait ça pour un outil interne au boulot, et ça ne m’a pas pris beaucoup de temps à réaliser (mais j’avoue qu’en HTML/CSS, j’aurai quand même été plus rapide ^^).

En espérant aider.

2 « J'aime »

Merci pour ton lien @kneelnrise ça a répondu à ma question (il utilise le moteur de Chrome pour Spotify donc ça semble répondre à ma question)

@guirec_corbel: tu dois faire une appli desktop si tu dois manipuler des périphériques ou si tu es offline. Dans mon cas, je dois manipuler des disques externes (formatage et partitionnement) et il ya de fortes chances d’être offline. Actuellement je fais des scripts (bash en générale) et j’aimerais livrer des trucs plus userfriendly.

Node Webkit ressemble beaucoup à Chromium Embeded FrameWork, vu qu’il utilise Chromium avec Node.Js …

Je vais me concentrer sur Node Webkit, CEF (Chromium Embeded FrameWork) et Gecko. Je vous ferais le point quand j’aurais tester tout ça :D

Ps: Adobe utilise CEF pour faire Brackets (un éditeur Web):



Salut,
Tu as aussi Atom/electron qui est pas mal du tout.

Après comme d’habitude, tout dépend, in fine, de ce que tu veux faire.
Si ce sont des appli. comme Spotify (écrit avec nw.js je crois) ou PopcornTime c’est ok, sinon c’est autre chose.
Par exemple l’aspect “natif” des composants (ok tu peux jongler avec les CSS mais bon…), la lourdeur RAM/CPU de l’appli (même pour des choses “simples”), l’intégration limité (dans notre boite, on a essayé de faire en nw.js une gestion systray, c’est pas terrible car trop simpliste)

notes : Des trucs qui passent sans problèmes avec QtQuick/QML au passage :)

Voila…

1 « J'aime »

Popcorn Time c’est du c++ + Qt. J’ai voulu contribuer, mais le langage m’ arrêté… :(

Mais oui, Bracket ou Atom, c’est vraiment choisir la lourdeur et ça se sent.

Vu que je ne connais que Java à fond. Je serais parti sur du Java. Pour la perf pas de soucis Java est performant aujourd’hui et en plus on peut mettre des binding C++ ou C ou cas ou .

popcorntime c’est du nodejs + nodewebkit : https://git.popcorntime.io/popcorntime/desktop/tree/development/src/app

Je recommande chaudement ce combo pour faire une appli desktop multiplateforme. C’est aussi ce que j’utilise pour mon appli Saas + desktop.

A ta place je ferais un benchmark de NW.js (node-webkit) versus Electron (atom shell)

Si tu as des liens, je suis preneur d’un comparatif, notamment pour une appli utilisant fortement le canvas. En NW sur mac ça rame plus que dans le browser dans mon cas sans explication.
Es ce que electron fait une appli de 60Mo pour un simple hello world ?
Bref je vais y rejeter un oeil car Electron semble avoir bien évolué.

SI t’es à l’aise en Java et déjà quelques connaissances Swing, JavaFX c’est rapide à prendre en main. Le seul soucis c’est comme la technologie est arrivée tard, pas sûr de trouver une grosse bibliothèque de composants personnalisés.

Sinon les technos reposant sur des navigateurs comme RCP, c’est très facile à prendre en main. Ce ne sont que des HTML/JS/CSS classiques à la base. Le plus, ce sont les mêmes principes pour écrire des extensions (plug-ins) pour ces navigateurs.

1 « J'aime »

Je suis plutôt satisfaite des combinaisons suivantes :

  • Java avec JavaFX
  • Mono/C# avec GTK#
  • C++ ou Python avec GTK ou Qt
1 « J'aime »

Il y aussi Griffon qui a l’air top, pour faire du Java mais sans le côté verbeux : http://griffon-framework.org/
Moi j’utilise Grails, le pendant de Griffon mais pour le web, tellement plus agréable que du pur Java/Spring/Hibernate tout en étant basé dessus.

Je pense que les meilleurs technos pour faire du desktop c’est bien:

  • Javascript / HTML/ CSS / nw.js
  • C# / Mono / Windows Forms
  • C# / .NET / WPF
  • C++ / QT

Ce sont les seuls ou je les trouve assez beaux.

étant plus à l’aise avec python je m’étais tourné dans un premier temps vers CEF Python et Kivy(pour le tactile)
mais comme tu l’as indiqué dans tes inconvéniants de Python, vu la difficulté à générer des executables, j’ai oublié cette option.

ensuite je me suis tourné vers js : 2 choix chrome app et node webkit

l’un et l’autre ont leurs avantages et inconvéniants

si nw est plus puissant : accès aux api node et sqlite disponibles, les chromes app sont plus facilement distribuables ( pas besoin de telecharger chrome), distrubuable via le chrome store et donc MAJ plus facile

donc quand je le peux chrome app, sinon nw. pour ton cas je pense que ce dernier ferait l’affaire

Electron et nw.js sont pas mal du tout (j’ai une préférence pour Electron).

Il est possible de faire une simple appli portable à partir d’un ensemble de codes python (comme kivy) en embarquant même le moteur python ! http://sourceforge.net/projects/cx-freeze/

Également haxe est un langage sympa pour faire des applis multiplateformes à partir d’un seul code.

Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s