Xlock launcher : le choc des titans.

Introduction

Les systemes UNIX n'ont pas ete concu pour des applications graphiques.

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:


Je souhaite que cet article vous aidera a vous faire une idee sur ces API C ou langages permettant de faire des applications sous X. Cet article est fonde sur le developpement d'une application simple: un launcher de xlock ( more).

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


Exemple concret

Apres avoir ajouter le mode flag a xlock(more), j’ai eu l’occasion de rencontrer david bagley (mainteneur du projet). Je lui ai promis de faire une interface graphique pour lancer xlock: un launcher.

Le launcher devait rendre accessible les nombreuses options de xlock (more).

Voyons plus en detail le cahier des charges:

Je voulais faire un launcher basique sans rechercher la sophistication.

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.

Presentation des outils de developpement.

  1. MOTIF:

    La librairie OSF/MOTIF - Xm a ete cree pour faciliter la programmation sous X11 et Xt intrinsics. C’est devenu un standart sous UNIX.C’est une librairie qui generalement est lieee avec des programmes C.

    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 ).

  2. Libsx:

    Cette librairie C a ete developpee pour simplifie la programmation avec les Athena Widgets ( qui au depart n’etait qu’un exemple ), et pour simplifier , ca simplifie (Peut etre un peu trop, dans le cadre de grand projet ).

    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 .

  3. Tcl-Tk:

    Tcl est un langage interprete donc lent ( particulierement pour la lecture de fichier, boucle ..), par contre en ce qui concerne l’interface homme machine (TK), c’est TRES puissant, facile a programmer; le temps de developpement par rapport a MOTIF est divise par 10 ( pour quelqu’un maitrissant le langage ).

    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).

    Pour plus d'info :Tech Corner Ahh de la doc...

  4. JAVA:

    Debutant sous JAVA, j’ai apprecie ces ressemblances avec le C et C++, sa puissance graphique et la facilite pour debogger.J’ai tout de même modifie l’interface pour qu’on puisse visualiser l’applet dans un brouter (navigator). JAVA n’est pas du tout un langage pour faire un launcher ( question de securite ), mais on peut tout de même trouver une astuce en le couplant avec du C ou autre.

    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

    Points Communs.

  1. Tous tournent sous X11.
  2. L’interface principale est quasiment indentique pour tous les launchers. Une liste, des bouttons en bas, des boites de dialogues ...

Differences.

API CTcl -TKJava
API graphiquepas en standardoui:Tkoui: package AWT
Mode d'executioncompileinterpretesemi compile/semi interprete
Portabilitemoyenneforteforte
Extensibleoui ( tous appel systeme )oui ( exemple Tix)oui avec extention en C

developpement:

Il est tres dure pour moi d’estimer le temps que j’ai pris car ce fut un peu le week end , un peu par ci , un peu par la.

Donc j’indique une valeur qu’il ne faut pas rendre pour du temps comptants.

Outils de DeveloppementTemps 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

Tcl-Tk est sans contexte l’environnement dans lequel on peut mettre le plus de fonctionnalitees ( Dialogue pour les couleurs, Aide jolie ...), avec plus de temps pour approfondir mes connaissances sur Tcl-Tk et Tix, Il est possible de faire un programme magnifique, très visuel avec boite de sélection de fichier, boite de sélection de couleur, boite de sélection de fonts, aide hypertexte. MOTIF: Etant le premier launcheur crée , j’y ai mis les options de xlock(more) indispensables. Pour Libsx, j’ai calquer sur MOTIF en profitant des énormes facilitées qu’offre la librairie.
Facilite de developpement

et richesse de l’outil

note
MOTIF4
Libsx6 ( pour faire un launcher )
Tckl-Tk9.9999
JAVA7

( il reste des impossibilites

pour des raisons de securitee)


FonctionnaliteesMOTIFLibsxTcl-TkJava
Boutonouiouiouioui
Check boutonouiouioui: on peut mettre une varaible refletant et interagissant avec I.H.Moui
Menu Deroulantouiouioui:Detachable en standardoui: mais pas evident dans un brouter
Drawing areaoui: celle de Xoui: X amieloreroui Canvas:Avec sortie postcript etc ... oui: Double buffering simple, et graphisme facile a programmer
Text Areaouioui ( Athena )oui:Hypertexte + changement de font ... oui: classique
File selection boxouinonoui:version 4-2 avant non oui: ( application seulement )
Format d'imagexbmaucunXpm,GifGif,jpeg : dependant du browser pour png ?

Performancenote
MOTIF9
Libsx9
Tcl-TkTcl 5 1/2, Tk 9.999
JAVA6 1/2

launcherLook
MOTIF6 et 1/2
Libsx Athena3 , 7 avec libXawXpm
Tcl Tk10
Java6 , 7 si dans browser

Tcl-Tk devrait etre le champion dans cette catégorie (X11, Mac, Windows ) , et pourtant Libsx le devance de peu car les Athena Widget sous present sur tout systeme X11 ( etant donne que xlock fonctionne uniquement sous X).

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 ?

Launchernote sous Xnote non X
Motif7 et 1/2 0
Libsx Athena10 0
Tcl-Tk9.9999 10
Java9 et 1/2 10

Launchernombre de lignetaille executable
Motif64013316
Libsx Athena59250180
Tcl-Tk46120141
LibXm.a1489986
Wish495605

Pourquoi ne pas utiliser un BUILDER !!

L'utilisation d'un BUILDER ne me semble pas interressante a cause de divers points:

Conclusion

Tous ces outils valent le coup d'oeil pour permettre de trouver votre outil.

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.

  1. Suivant les fonctionnalites desirees.
  2. Suivant vos connaissances.
  3. Suivant l'avenir de l'application.
  4. Taille du projet.
X pure API CTcl-TkJava
Fonctionnalitestres limitebonne pour motif ( libsx tres moyen )tres bonnebonne
Ne connaissant pas l'outilapocalypse now...Difficilepas trivial mais plus simple que le C ( avec doc.)moyennement facile
AvenirX consortium mortdifficile a evaluerSoyont confiant ( plug in netscape)Excellent
Gros projet

( sup 20 000 lignes )

Dead zoneOK avec C++AttentionBecarefull
Petit projet

( inf 20 000 lignes )

Sado-Maso OuiLa solution idealeOui

Reference

Xlockmore home page

Rapport de recherche 96-5-INFO -- École des Mines de Nantes Java : introduction au langage, comparaison avec Smalltalk et C++

CL 850 - Langage C

Tcl-Tk

Environnement X11

La librairie OSF/MOTIF - Xm

XWindow et OSF Motif

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

Merci a

Pour leurs soutiens.

Copyright charles vidal Octobre 1997.