Malgres tout, le M.I.T a developpe le protocole X window pour parer a cette lacune. Or ce protocole est tres basic bien que tres puissant. Il n'y a pas de standardisation d'API graphique de haut niveau du M.I.T . Pour le developpeurs le choix est difficile.
Il existe beaucoup de librairies facilitant la programmation sous X:
La comparaison entre ces divers outils est chose delicate, il est difficile de comparer une API C et un langage comme Tcl-Tk (ne melangons pas les torchons avec les serviettes :).
Mon point de reference est le developpement sous X pure (et dure). pour plus d'info sur X11
Le launcher devait rendre accessible les nombreuses options de xlock (more).
Voyons plus en detail le cahier des charges:
Ma premiere version fut developpe avec MOTIF; mais MOTIF etant commercial, ( lesstif en alpha version ), david et moi n’etions pas completement satisfait.
C’est alors que j’ai entrepris de faire un launcher en Tcl-Tk.
Entretemps j’avais decouvert la librairie libsx (surcouche des Athena Widgets), et de nouveau, j’ai realise un launcher grace a cette librairie.
Par pure amusement j’en ai fait le sujet de mon premier programme en JAVA.
Dans cette article, je vais decrire et comparer les differences entre ces divers developpements.J’espere que cet article pourra vous aider a vous faire une idee sur les outils de developpement utilise.
Le debutant C aura enormement de difficultees a s’y mettre.
Le debutant X11 / MOTIF aura des difficultees lui aussi.
Une personne plus experimentee en MOTIF ( mon cas ) pourra profiter des grandes fonctionnalites de cette librairie. Malgres tout MOTIF est complexe, beau et puissant mais demande un gros investissement en temps ( la version launcher MOTIF marche mais n’est pas extraordinaire ).
Libsx a ete developpe par Dominic Giampaolo dbg@sgi.com et est sous license GPL donc gratuite.
Elle est tres bien pour les programmeur C ne connaissant pas MOTIF: boite de dialogue synchrone:
if (GetYesNo()==OK) { ...
YOUR STUFF
...}
Un des exemples fourni avec la librairie est exceptionnel: multireq.Il montre grace a une structure C, il construit automatiquement l’interface.
Cette fonctionnalite peut etre implemente sous MOTIF avec du temps.
Une remarque sur libsx : c’est tres bien documente ( doc anglaise).
La grande faiblesse des Athenas est le look ( plat , blanc et noir ), qui peut etre ameliore en remplacant la lib.Xaw.so par XawXpm, Xaw3D ou Xaw95.
J’ai developpe la version libsx quasiment d’une traite (grace a mon experience de launcher sous MOTIF et Tcl- Tk).Il faut dire que le launcher est une petite application .
Il faut imaginer Tcl-Tk comme un langage script genre sh ou csh mais on beaucoup plus fonctionnel.
J'ai enormement apprecie le couplage fort entre Tcl et Tk: entry -textvariable nom de la variable: tout bonnement genial !!!
Malgres tout, c ‘est un langage ( comme tout langage script ) difficile a apprehender, tres peu documente en francais (pas de bouquin en francais sauf sur internet peut etre ??) .On se retrouve devant l'interpreteur wish ,sans aide, a essaye de comprendre les nombreux exemples.
Les performances de Tcl ne sont pas extraordinaire par rapport au C, au contraire de Tk qui est surpuissant ( plus rapide que MOTIF: MOTIF cree tout d'un coup donc plus lent a demarrer).
Par contre la puissance et les fonctionnalitees du langage sont impressionnantes voir extraordinaire.
On fait de suite du tres beau, et on rajoute tres vite plein d’ameliorations.
Je n’ai pas eu de probleme avec MOTIF et libsx, mais par contre avec Tcl-Tk je suis reste bloque 3 mois par manque d’information sur le langage; il faut dire que sans doc , sans acces internet c'est dur dur (comme la programmation en sh sans doc).
Je le conseille a tout le monde mais particulierement au gens amateur de VB ( oui c’est disponible sur platforme WinTel, vous savez le cote noir de la force :).
Ideal pour debutant, genial pour hacker, bizarre pour les gens ayant un LOURD passe C et C++ (langage parfois trop simple, on attend une programmation trop complique).
Il existe une chose penible pour interface, c’est que sa taille n’est pas calculee automatiquement.
Pour plus d'Informations sur JAVA - performance et comparaisons
MOTIF est payant, libsx est gratuit mais pas tres beau.( regarde Gtk :)
Le C a l'avantage d'etre rapide , bien connu de beaucoup d'informaticien; on peut tout faire avec (surtout du code mort ). Mais il a l'inconvenient: le deboggage peut etre tres lourd et difficile .
Cependant, il y a un avantage certain pour le langage C: il existe beaucoup d'outils tel que lex ou yacc, ainsi que beaucoup d'autres ( gdb, gprof, calls, cflow etc ...)
Tcl-Tk n'est pas rattache a X11, permet un developpement tres rapide, mais le programme doit etre teste pour valider la syntaxe (ceci a ces avantages et ces inconvenients). Malgres tout c'est un langage pense pour un interface homme machine ( il y a un couplage fort entre Tcl et Tk ). De plus il est simple de rajouter des fonctionnalites ( ecrit en C ) au langage en creant un nouvel interpreteur. Malgres tout je traite ici de la version standard.
Il y a un point remarquable : il n'y a jamais de de Segmentation fault ou Bus error, mais l'interpreteur vous dit ou vous avez fait la faute ( qui peut etre de syntaxe :( avec la trace de la pile.
Java est un langage tres jeune, mais qui tient la route ( malgres tout ), il est tres oriente graphisme et reseau. Le langage est livre en standard avec une librairie ou package graphique de haut niveau ce qui n'est pas le cas du C sous UNIX. Il y a la aussi un point remarquable : il n'y a jamais de de Segmentation fault ou Bus error ( sauf pour Explorareur ), mais l'interpreteur vous dit ou vous avez fait le type de faute avec la trace de la pile.
Tableau recapitulatif
API C | Tcl -TK | Java | ||
API graphique | pas en standard | oui:Tk | oui: package AWT | |
Mode d'execution | compile | interprete | semi compile/semi interprete | |
Portabilite | moyenne | forte | forte | |
Extensible | oui ( tous appel systeme ) | oui ( exemple Tix) | oui avec extention en C |
Donc j’indique une valeur qu’il ne faut pas rendre pour du temps comptants.
Outils de Developpement | Temps d’apprentissage de l'API graphique connaissant le langage (c,tcl, java ) | Temps de d’apprentissage ne connaissant le langage (c,tcl, java ) | Temps de Creations du launcher |
MOTIF | 4 mois | une eternite :) | 2 semaines |
Libsx | inf 1 mois | le temps de connaitre le C | inf 1 semaine |
Tckl-Tk | tres inf. a 1 semaine | inf 1 mois si on a de la doc. | sup 1 mois si on n’a pas de doc. sinon tres inf. 1 semaine |
JAVA | c’est dans le langage | le temps de connaitre le C + l’Objet ( C++ ) | 1 semaine et 1/2 |
Facilite de developpement et richesse de l’outil | note |
MOTIF | 4 |
Libsx | 6 ( pour faire un launcher ) |
Tckl-Tk | 9.9999 |
JAVA | 7 ( il reste des impossibilites pour des raisons de securitee) |
Fonctionnalitees | MOTIF | Libsx | Tcl-Tk | Java |
Bouton | oui | oui | oui | oui |
Check bouton | oui | oui | oui: on peut mettre une varaible refletant et interagissant avec I.H.M | oui |
Menu Deroulant | oui | oui | oui:Detachable en standard | oui: mais pas evident dans un brouter |
Drawing area | oui: celle de X | oui: X amielorer | oui Canvas:Avec sortie postcript etc ... | oui: Double buffering simple, et graphisme facile a programmer |
Text Area | oui | oui ( Athena ) | oui:Hypertexte + changement de font ... | oui: classique |
File selection box | oui | non | oui:version 4-2 avant non | oui: ( application seulement ) |
Format d'image | xbm | aucun | Xpm,Gif | Gif,jpeg : dependant du browser pour png ? |
Performance | note |
MOTIF | 9 |
Libsx | 9 |
Tcl-Tk | Tcl 5 1/2, Tk 9.999 |
JAVA | 6 1/2 |
launcher | Look | |
MOTIF | 6 et 1/2 | |
Libsx Athena | 3 , 7 avec libXawXpm | |
Tcl Tk | 10 | |
Java | 6 , 7 si dans browser |
De plus les nombreuse version de Tcl-Tk remettent en cause la portabilite de ma petite application. Sur le sujet de MOTIF, je serais plus discret car je ne l’ai pas teste avec MOTIF 2, il est possible que suivant les differente version libXm.1.1 libXm.1.2 libXm2.0 la compilation ce passe mal sur certaine platforme ?
Launcher | note sous X | note non X |
Motif | 7 et 1/2 | 0 |
Libsx Athena | 10 | 0 |
Tcl-Tk | 9.9999 | 10 |
Java | 9 et 1/2 | 10 |
Launcher | nombre de ligne | taille executable |
Motif | 640 | 13316 |
Libsx Athena | 592 | 50180 |
Tcl-Tk | 461 | 20141 |
LibXm.a | 1489986 | |
Wish | 495605 |
Pour ma part, j'ai eu un coup de coeur pour la puissance de Tcl-Tk.
Pour conclure, tous ces outils de developpement ont comme interet commun d'exister: Ceci nous permet de ne pas reinventer la roue. Bien que parfois imparfais, ils representent des heures et des heures de developpememts.
Ce qu'il m estapparu: Le choix de l'outil depend de l'application voulu.
X pure | API C | Tcl-Tk | Java | |
Fonctionnalites | tres limite | bonne pour motif ( libsx tres moyen ) | tres bonne | bonne |
Ne connaissant pas l'outil | apocalypse now... | Difficile | pas trivial mais plus simple que le C ( avec doc.) | moyennement facile |
Avenir | X consortium mort | difficile a evaluer | Soyont confiant ( plug in netscape) | Excellent |
Gros projet ( sup 20 000 lignes ) | Dead zone | OK avec C++ | Attention | Becarefull |
Petit projet ( inf 20 000 lignes ) | Sado-Maso | Oui | La solution ideale | Oui |
Rapport de recherche 96-5-INFO -- École des Mines de Nantes Java : introduction au langage, comparaison avec Smalltalk et C++ CL 850 - Langage C
Pour obtenir les sources, Pouvez vous m'envoyer une carte postal ( au choix :) en precisant votre email; merci.
A l'adresse suivante: charles vidal
23 rue boulay
75017 paris.
les sources motif et tcl sont dans la distribution de xlockmore, mais que ceci ne vous empeche pas de m'envoyer une carte postal .
Pour tout commentaire, suggestion, avis et recette de cuisinne
Copyright charles vidal Octobre 1997.