Quelles sont les possibilités de développer des applications multi-plateformes ? Si on prends comme base les systèmes Mac OS X (bsd), Linux et Windows, qu'il y-a-t-il comme moyen de développer de petites applications communes ?
Soit on parle de programmes compilés et il faut donc que la compilation s'adapte aux plate-formes, soit on parle de languages interprétés et il faut que l'interpréteur soit présent sur les-dites plate-formes.
Java
Bon candidat mais j'ai eu sous Linux et sous Windows des problèmes pour installer la machine virtuelle ; sans parler de la version spéciale Microsoft.
XPFCE, XUL
Pas mal du tout mais fonctionne-t-il sur Mac ?
Je n'ai pas vu de manière élégante d'accéder à une base de données SQL ou SQLlite. Il existe bien un paquetage pour BSD mais je suis étonné de ne pas constater plus de capacité de XPFCE à ce niveau.
PhP, Perl, Python avec QT, Gtk
Ca devient intéressant. Surtout s'il est simple d'incorporer l'interpréteur sur un support amovible.
C++
Alors, là ! Je tire ma langue au chat :-o Je vois bien comment développer sous Linux mais sous Windows et Macintosh...
L'intérêt est de "pouvoir développer une fois et exécuter partout" en incorporant les routines et bibliothèques éventuellement sur un support amovible. Ainsi une application simple pourrait être développée puis utilisée sur ces trois plate-formes :-)
Que disent vos expériences ?
# C++
Posté par zerchove . Évalué à 3.
ca marche très bien.
[^] # Re: C++
Posté par Vincent Richard (site web personnel) . Évalué à 2.
[^] # Re: C++
Posté par riba . Évalué à 2.
(fait tourner)
[^] # Re: C++
Posté par liberforce (site web personnel) . Évalué à 2.
[^] # Re: C++
Posté par TImaniac (site web personnel) . Évalué à 2.
[^] # Re: C++
Posté par Flink . Évalué à 1.
[^] # Re: C++
Posté par Pinaraf . Évalué à 1.
[^] # Re: C++
Posté par Anonyme . Évalué à 2.
Qu'entends tu par non redistribuable ?
A partir du moment ou tu as achete une licence Qt pour Windows tu peux ecrire toutes les applis que tu veux et les distribuer sans probleme et sans rien devoir a trolltech.
Par contre je me demande : le code ainsi produit ne peut pas etre GPL car il est lie avec une lib commerciale ?
[^] # Re: C++
Posté par Christophe HENRY (site web personnel) . Évalué à 1.
GTk utilise des rappels pas génialement beaux. Mais bon, 'suffit d'encapsuler tout cela :-)
[^] # Re: C++
Posté par Obi MO (site web personnel) . Évalué à 0.
Ca existe et ca s'apelle GTKmm. C'est super bien fait, ca utilise un mecanisme reposant sur le paradigme signal/slot, derriere c'est fait avec des templates, et donc pas besoin d'artifices a la MOC.
Ca s'utilise comme ca :
du coup, si a emet le signal sig, en lui passant les parametres, b._on_signal_emitted est appelle comme il faut.
Tout cela etant, templates oblige, completement type safe.
Personellement, je trouve que c'est trop la classe ... Et je l'utilise !
[^] # Re: C++
Posté par Moonz . Évalué à -2.
[^] # Re: C++
Posté par Moonz . Évalué à 3.
[^] # Re: C++
Posté par Christophe HENRY (site web personnel) . Évalué à 1.
As-tu des anecdotes ou conseils, à la manière du site (indiqué dans l'un des commentaires) donnant des recommandations pour faire du c++ portable ?
[^] # Re: C++
Posté par Moonz . Évalué à 1.
[^] # Re: C++
Posté par Christophe HENRY (site web personnel) . Évalué à 1.
Seulement eux ?
# Heu
Posté par Pinaraf . Évalué à 2.
XPFE marche sur Mac
# Portabilite portablite
Posté par Stibb . Évalué à 4.
- Java : tant que tu fais un code "simple" il n'y a pas de probleme, mais des que tu veux faire du graphique (avec SWT), car marchera mais il faudra que tu tests sur toutes les plateformes que tu vises (on sait jamais, les bugs peuvent apparaitre selon la machine virtuelle). Mais globalement pour de petits programmes la reponse est OUI je pense que tu ne devrais pas avoir de gros problemes.
- XUL : pas d'experience
- Perl: casiment aucun probleme de portabilite tant que tu n'appelles pas exec ou system. Il y a aussi les fichiers qui peuvent poser probleme, mais pour la plupart de mes scripts, ils tournent nickels entre Linux et Windows. Perl/Gtk rocks. :)
- C++: difficile a dire. Perso, en utilisant correctement la STL (pas la STL de microsoft, mais STLPort), mes petites applications OpenGL sont portables. En utilisant QT tu as une portabilite casiment a 100% si tu respecte le design. Evidement, il faut pouvoir tester car ici les bugs arriveront, c'est presque sur. Suffit d'avoir un projet QT et le projet se compilera aussi bien sous Windows que sous Linux (moyennant quelques adaptations de temps a autre). Sous MacOS aussi devrait pas poser de probleme.
Apres le probleme de QT sous Windows, c'est la licence...
[^] # Re: Portabilite portablite
Posté par real_pouet . Évalué à 2.
- Java: j ai fait un programme utilisant SWT sous linux avec une vm. apres avoir pris la derniere vm de sun, ce programme posait des problemes avec SWT sous windows et sous linux (pas les memes problemes en plus!)
- XUL: j ai eu des petits problemes sous windows mais c etait une version ancienne de mozilla donc ca ne doit pas vouloir dire grand chose. de toutes facon XUL/... ne m'a pas convaincu dans la pratique, meme si le principe est sympa. et puis tant qu il n y aura pas de gui builder...
- perl: oui mais c est un langage de script, donc pas forcement adapte a tout projet
- C/C++: pas d'experience de portage sous windows, ceci dit, quand on compile avec le bons drapeaux genre -Wall -Werror -std=c99, ca doit regler 95% des problemes de portage, exemple je n ai eu qu a modifier une dizaine de lignes dans mon programme pour un portage sous solaris...
ps: quasiment s il te plait!
--
pouet
# Développement multi-plateformes
Posté par Anonyme . Évalué à 4.
Prend un langage que tu connais deja parmi ceux que tu as deja cite ou parmi les suivants :
- C++ / Qt ou Gtk ou wxWindows : Tu peux cibler pratiquement tous les OS, wxWindows a l'avantage de s'integrer au desktop en reutilisant le toolkit de l'OS, Qt est tres complet mais non libre sous windows, Gtk est libre et dispo sous toutes les plate-formes mais c'est pas vraiment de l'objet, on aime ou on aime pas. Dans tout les cas tu pourras compiler sur ces OS avec peut etre quelques adaptations a faire d'un os a l'autre, mais en general, en faisant du code portable, il ne devrait pas y avoir de probleme.
- un langage interprete, encore une fois prend celui que tu connais et utilise wxWindows. Avantage, tu es sur que ca passera parfaitement sur tous les OS supporte par l'interpreteur. Le couple python/wxWindows est parfait pour ce genre d'applis (petite et multiplateforme vite developpe pour un besoin specifique)
- Java avec les avantages des langages interpretes et compiles, si tu le couples avec SWT ton appli s'integrera parfaitement au desktop
- Mono, encore tres jeune mais surtout cible pour l'instant peu de plateforme
- GNUStep / Objective C : ca vaut le detour honnetement !
[^] # GNUStep/Obj-C
Posté par Dreammm . Évalué à 2.
[^] # Re: GNUStep/Obj-C
Posté par Anonyme . Évalué à 2.
A mon avis, ce n'est pas encore envisageable. Il faudra en effet utiliser cingwin et cpgnie pour pouvoir faire tourner des applis utilisant gnustep-gui (cad toutes les IHM graphique). Donc c'est pas vraiment top...
cf. http://www.gnustep.org/information/machines_toc.html(...)
Et le jour ou on pourra se passer totalement de cygwin le principal defaut sera le manque d'integration au bureau.
Mais ca avance !
Pour une application ne ciblant que MacOS et Unix et pour peux que l'on maitrise bien la POO, je pense que GNUStep est une veritable alternative a Qt ou Gtk par exemple.
[^] # Re: Développement multi-plateformes
Posté par zerchove . Évalué à 1.
http://www.wxwidgets.com/(...)
[^] # Re: Développement multi-plateformes
Posté par Moonz . Évalué à 2.
wxWidgets. Et de ce que j'en ai vu, supporte mal l'Unicode et GTK 2
Qt
Ne permet pas de faire un logiciel GPL sous Windows
Gtk
Nécessite un serveur X sous Mac OSX... Pas encore le top
[^] # Re: Développement multi-plateformes
Posté par Christophe HENRY (site web personnel) . Évalué à 1.
Impossible de songer à embarquer les paquets nécessaires pour s'en tirer, alors ?
# mon avis
Posté par TImaniac (site web personnel) . Évalué à 7.
En fait le principal soucis vient de l'interface graphique, et là il y a 2 écoles :
- même code pour toutes les plateformes :
- avantages : 100% portable, diminue le boulot du programmeur
- inconvénients : malgrès ce que evulent faire croirent leurs concepteurs, il est impossible d'avoir à la fois un toolkit graphique portable et puissant qui utilise toutes les possibilités de l'OS cible : bien que visuellement corrects lorsqu'ils utilisent directement les API graphique de l'OS cible, ils leurs manquent soient des fonctionnalités (parcque il fau prendre les facteurs communs), soit émulés (beaucoup moins classs déjà) et surtout ils ne sont pas du tout intégrés à l'environnement (parcque si c'était juste une histoire de skin je verrais vraiment pas l'intérêt d'avoir conçu pleins de toolkit différents, de charte graphique, ou tout simplement d'environnement)
- exemples : Java, Python+Qt, Perl+GTK, etc.
- même code pour l'application, mais pas pour la couche graphique :
- avantages : tu garanties l'intégration visuelle et ergonomique de ton application, ce qui est beaucoup plus "professionnel", notamment pour des applications desktop destinées à monsieur-tout-le-monde.
- inconvénients : il faut bien séparer l'interface graphique du reste de l'application (mais à vrai dire celà ne fera qu'augmenter la qualité de l'architecture de l'appli) et bien sûr il faut réécrire l'interface pour chaque environnement, ce qui est plus long à programmer et à maintenir si l'interface est amenée à changer.
- exemples : N'importe quel langage "portable" + toolkit spécifique pour chaque plateforme Qt/Gtk/WinForms/Cocoa
Mes conseils :
Il est intéressant de noter que tu peux envisager la deuxième solution en utilisant un toolkit "portable" comme Qt ou GTK que l'on retrouve sur de nombreuses plateforme, ce qui te permet d'obtenir une application dans un premier temps 100% portable même si elle n'est pas intégrée. Tu pourras dans un 2nd temps réécrire l'interface spécifique. Utilise au passage un langage "portable" , soit interprété (Python, Perl, Ruby, etc.), soit utilisant un code intermédiaire (Java, C#).
C++ peut être une solution mais tu devras recompiler pour chaque plateforme, le code binaire n'étant pas vraiment portable, surtout lorsque tu changes d'architecture (par exemple sur Mac).
Par contre je vois pas trop l'intérêt de PHP qui a pour objectif d'être utilisé dans le cadre d'une application web. Je ne te conseillerai XUL et tout ce qui va avec seulement si ton application est là encore orientée web, parcque pour le moment les API sont un peu limité si on sort de ce cadre.
Perso j'utilise Mono et une couche graphique différence pour chaque plateforme.
[^] # Re: mon avis
Posté par Christophe HENRY (site web personnel) . Évalué à 1.
Je note bien la séparation interface graphique et application.
>Par contre je vois pas trop l'intérêt de PHP....
PHP - au même titre que python ou perl - peut être utilisé pour faire du développement. Avec "php-gtk" il y a possibilité d'utiliser gtk pour l'interface graphique.
L'un des avantages que je peux voir et qu'il sera ensuite relativement facile d'intégrer ce genre d'application dans un site web. Sans compter l'accès aux bases de données.
# concernant xul et c++
Posté par Laurent J (site web personnel, Mastodon) . Évalué à 4.
Les développeurs de mozilla ont été confronté à ce problème de portabilité du C++ (oui, tout le navigateur n'est pas codé en javascript ou en XUL ;-)
Ils ont même ecrit un petit guide sur la portabilité du code C++ : quels sont les rêgles à respecter en C++ pour que le code soit portable sur un maximum de plateforme :
http://www.mozilla.org/hacking/portable-cpp.html(...)
[^] # Re: concernant xul et c++
Posté par Christophe HENRY (site web personnel) . Évalué à 2.
On va dire que j'oublie c++ :-O
Merci pour le lien.
# Une expérience.
Posté par dcp . Évalué à 10.
Le projet était de développer un outil de configuration graphique (souris, menu, bouton...) permettant de configurer un modèle océanique de vagues sous Linux (et sous Windows, au cas ou).
photo (sous win): http://dpithon.free.fr/gtkwin.jpg(...)
Le langage était donc le C, la librairie graphique Gtk2 avec la palette d'outils suivante:
- Glade, qui s'est révélé indispensable, l'interface compte la bagatelle de 1500 widgets
- MinGW et MSYS, pour windows qui t'offre un compilateur gcc "natif" (sans couche intermédiaire comme peut en offrir cygwin) et un environement UNIX-like (bash, ls, make...)
- UNIX est un environement de développement en soi donc pas d'IDE particuliers (vim + cmd UNIX + pipe + script shell = bonheur)
- Un petit CVS au milieu permet de développer indifférement sur Windows ou sur Linux (ou plutôt de faire des "cvs update; make" sur Windows)
J'ai donc construit l'interface intégralement avec Glade (le fichier glade pèse son Méga octet). L'auto-connection évenements/fonctions callbacks depuis Glade fonctione merveilleusement bien sous Linux et sous Windows... (en déclarant les fonctions callbacks __declspec(dllexport) pour windows).
L'ensemble pèse 11500 lignes. 50 lignes de code sont dédiées à windows (pour les I/O).
J'ai produit un petit doc pour l'installation et l'utilisation de GTK2/LibGlade sur Win32 ici -> http://www.boost-technologies.com/gtkwin/(...)
Au cas ou ça interesserait quelqu'un
# Python
Posté par Moonz . Évalué à 2.
# http://epeios.org/ pour le C++.
Posté par Claude SIMON (site web personnel) . Évalué à 2.
Les sources s'appuyant sur ces bibliothèques peuvent être compilés sous l'une ou l'autre des plateformes sans avoir à être retouchés. Elles sont actuellement utilisées pour développer une application destinés à tourner sous Windows, Linux et MAC (d'où leur future adaptation à cette plateforme). Développée sous Windows, l'application en question tourne effectivement sans modification aucune sous Linux. La portabilité est donc vraiment une réalité avec ces bibliothèques.
Le site n'est pas mis souvent à jour, n'étant gèré que par une seule personne, qui se trouve être également l'unique développeur de ces bibliothèques. Bien que disponibles sous licence GNU GPL, ces bibliothèques n'ont guère rencontrés de succés auprés de la communauté du Logiciel Libre. Elles ne sont maintenues que parce que l'auteur les utilisent pour ses propres développements et ceux réalisés dans le cadre de sa profession.
Pour nous émanciper des géants du numérique : Zelbinium !
# python et wxpython
Posté par manatlan (site web personnel) . Évalué à 3.
c'est ce qui réponds le mieux à ça :
"L'intérêt est de "pouvoir développer une fois et exécuter partout" en incorporant les routines et bibliothèques éventuellement sur un support amovible"
- python.org : car c'est bien multiplateforme, et intègre de base toute une flopée de librairies, permettant de faire pas mal de chose
- wxpython.org : qui est l'équivalent de wxwidgets (ancien wxwindows), mais pour python ... son énorme avantage, est qu'il reprends le look de l'os hote (ainsi t'auras les MFC sous win, gtk sous *nux, cocoa sous os x) .. tout en utilisant un set d'api unique ... et comme dirait "timaniac" : forcément nivellé par le bas ... mais déjà nettement suffisant pour faire qqchose d'utilisable ...
evidemment, il faut aussi "coder proprement", sans appel systèmes (exec/system/...), sans utiliser de lib spécifique à une plateforme (win32api, ...) ... et ça marchera à 99% sure ...
(les 1%, étant les cas mal documentés de certaines libs, dans wxpython par exemple, cependant, en prennant des pincettes, ça va ...)
Attention, je suis un partisan qui pense que le tout QT, ou le tout GTK sur les trois plateformes n'est pas excellent (y a qu'à voir gtk2 sous win, avec le look "win" : c'est très lourd, et c'est pas très beau/réaliste)
Je suis un partisan de wxwidget/wxpython ...qui à mon sens, est l'idée la plus sympa ... et contente les end users qui veulent des interfaces natives ... un set d'api pour tous les widgets/plateformes, même s'il faut niveller par le bas, wxwidget/wxpython est bien avancé ... et promet bien plus dans le future ... (grosse communauté active)
[^] # Re: python et wxpython
Posté par Christophe HENRY (site web personnel) . Évalué à 2.
wxpython serait mandataire (au sens OO-patterns) pour les systèmes de fenêtrages locaux ?
Et comme Python peut se placer derrière Apache (modpython.org) on peut aussi faire par la suite un frontal web.
Ce qui m'intéresse est aussi l'accès à une base de données telles que MySqllite. C'est possible ça ?
[^] # Re: python et wxpython
Posté par norbs . Évalué à 2.
> telles que MySqllite. C'est possible ça ?
Ce n'est pas lié à wxWidgets mais directement à python :
pour sql lite :
http://pysqlite.sourceforge.net(...)
pour mysql :
http://sourceforge.net/projects/mysql-python/(...)
pour MySqllite :
au hasard : http://pysqlite.sourceforge.net/projects/mysql-python/(...) , ça marchera peut-être :-)
# Développement multi-plateformes
Posté par Joris Dedieu (site web personnel) . Évalué à 2.
Je trouve qu'il a sa place ici.
http://www.lazarus.freepascal.org/(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.