1. La commande Enregistrer

Les précédentes versions de Gava ne permettaient que le téléchargement des figures à partir de leur URL.

Pour des raisons de sécurité la sauvegarde dans le disque dur de l'utilisateur n'était pas implanté et ne fonctionnait pas de toute façon avec la machine virtuelle java de Microsoft.
Mais Gava pouvait fonctionner aussi comme une application normale permettant alors l'ouverture et l'enregistrement de figures et par voie de conséquence la création de pages Internet avec des figures prédéfinies. Pour cela il était nécessaire d'utiliser le "runtime" de Sun. De plus ceci permettait le fonctionnement de Gava sur tous les supports pour lesquels il existe un "runtime" (lancement possible sous windows grâce à la commande : "gava.bat").

Dans le nouveau Gava 2, il est maintenant possible de faire des figures en ligne et les sauvegarder. Mais ceci à condition qu'un certain nombre de conditions soient respectées.
D'abord sur Internet Explorer muni de la machine virtuelle Java de Microsoft, c'est comme par le passé : pas de sauvegarde possible et c'est préférable car la sécurité d'un telle machine laisse paraît-il à désirer.

Si Java 2 est implanté dans le navigateur et que ce Java est actif (Options Internet->Avancé par exemple sous IE6) alors un avertissement de sécurité apparaît :

Si vous le refusez alors les commandes "ouvrir" et "enregistrer" sont neutralisées comme dans la machine virtuelle Java de Microsoft.
Si vous autorisez la sesssion alors l'ouverture et la sauvegarde sont possibles. Les fichiers sauvegardés prendront automatiquement le suffixe ".figure" pour éviter un écrasement malencontreux d'un fichier système.

"Afficher le certificat" précise mon nom : Jean-Paul Quelen, IREM de Strasbourg (http://irem.u-strasbg.fr/). La clé, valable jusqu'au 20 avril 2004 mais utilisable encore après, est :

Sachez que je fournis le code de l'application. N'importe qui peut y ajouter des intructions malveillantes. Aussi je vous conseille de faire très attention à des copies de gava que vous pourriez trouver sur d'autres sites. N'accepter le certificat de sécurité que si sa valeur est égale aux 48 octets ci-dessus.

2. Création de pages Internet

a. On peut implanter un plan de travail avec une figure prédéfinie qu'on peut simplement bouger.

Exemple de code (fichier essai-a/index.htm) :

<applet codebase="../" code="gava.class" width="500" height="375" archive="gava.jar">
<param NAME="boutons" VALUE="non">
<param NAME="reperevisible" VALUE="non">
<param NAME="ouvrir" VALUE="essai.figure">
</applet>

On peut fixer les dimensions de la fenêtre réservée à l'applet et préciser si on veut voir le repère et bien sûr le nom de la figure qui doit se trouver dans le même répertoire que l'applet ou dans un répertoire fils. Evidemment des paramètres peuvent être omis et c'est alors les paramètres par défaut qui sont pris en compte.

b. Implantation d'un plan avec une figure définie et la possibilité de la modifier avec un menu flottant ou une boîte de commande.

exemple de code (fichier essai-b/index.htm) :

<applet codebase="../" code="gava.class" width="500" height="375" archive="gava.jar">
<param NAME="boutons" VALUE="oui">
<param NAME="reperevisible" VALUE="non">
<param NAME="ouvrir" VALUE="droite.figure">
</applet>
<applet CODE="cmds.class" WIDTH="0" HEIGHT="0" archive="gava.jar">
<param NAME="largeur" VALUE="500">
<param NAME="hauteur" VALUE="100">
<param NAME="lfichiers" VALUE="droite cercle">
<param NAME="prefixe" VALUE="">
<param NAME="suffixe" VALUE=".figure">
<param NAME="cmds" VALUE="111111">
<param NAME="fichier" VALUE="110">
<param NAME="points" VALUE="11111111111111111">
<param NAME="droites" VALUE="111111111">
<param NAME="cercles" VALUE="111">
<param NAME="autres" VALUE="11111111111">
<param NAME="divers" VALUE="11111111">
</applet>
code à trouver dans le répertoire précédent "../"




largeur et hauteur en pixels de la boîte des commandes
listes des fichiers sans le ".figure"
Eventuellement le nom d'un sous-répertoire

Valide (1) ou dévalide (0) les 6 menus suivants
Valide (1) ou dévalide (0) une commande du menu

exemple de code (fichier essai-b/boite.htm) :

<applet codebase="../" code="gava.class" width="500" height="375" archive="gava1.jar">
<param NAME="boutons" VALUE="oui">
<param NAME="reperevisible" VALUE="non">
<param NAME="ouvrir" VALUE="droite.figure">
</applet>
<applet CODE="cmds1.class" WIDTH="310" HEIGHT="240" archive="gava1.jar">
<param NAME="lfichiers" VALUE="droite cercle">
<param NAME="prefixe" VALUE="">
<param NAME="suffixe" VALUE=".figure">
<param NAME="cmds" VALUE="111111">
<param NAME="fichier" VALUE="110">
<param NAME="points" VALUE="11111111111111111">
<param NAME="droites" VALUE="111111111">
<param NAME="cercles" VALUE="111">
<param NAME="autres" VALUE="11111111111">
<param NAME="divers" VALUE="11111111">
</applet>

gava1.jar contient gava et la boîte des commandes



largeur et hauteur en pixels de la boîte des commandes


Valide (1) ou dévalide (0) les 6 blocs de commandes qui suivent
Valide (1) ou dévalide (0) une commande

c. Enfin si on remplace gava.jar et gava1.jar par les leurs équivalents "signés" gavas.jar et gava1s.jar alors l'avertissement de sécurité apparaît et si l'utilisateur autorise la session l'enregistement de la figure dans le disque dur devient possible.

Remarque : on peut aussi utiliser crepags (applet signé) pour générer automatiquement une page Internet sur le disque dur.

3. Modification des sources et création d'applets signés

- après modification compiler les sources (commande "javac")et regrouper les classes obtenues à l'aide de la commande "jar"

si on ne désire pas utiliser la commande "enregistrer" on peut s'arrêter là sinon il faut la signer :

- créer d'abord une clé, commande : keytool -genkey -alias nom_du_créateur. Un fichier nommé .keystore est créé (s'il n'existait pas). Ce fichier contient toutes les clés que vous pouvez être amené à créer.

- signer ensuite gava.jar et gava1.jar en tapant :
jarsigner -signedjar gavas.jar gava.jar nom_du_créateur
jarsigner -signedjar gavas1.jar gava1.jar nom_du_créateur

C'est prêt.

4. De nouvelles commandes

- expression : il est possible maintenant de rentrer une expression algébrique. Sont utilisables les opérations et fonctions abs, rac, ln, exp, sin, cos, tan, asin, acos, atan, ent, alea, max, min, ^, * , /, + et -. Les constantes e (exp (1)) et pi sont reconnus.
En outre quatre fonctions font appel à des points du graphique : x(A) par exemple qui retourne l'abscisse de A, y(A) qui retourne l'ordonnée de A, dist (A,B) qui retourne la longueur AB et mes (A, B, C) qui retourne la mesure principale en radians de l'angle orienté ABC. Si l'expression comporte le symbole t, c'est qu'il s'agit d'une expression servant au tracé d'une courbe. Si elle est utilisée quand même pour la créations d'objets repérés alors t est remplacé par 0.

Dans la création d'objets repérés faisant appel à des scalaires (points avec coordonnées, droites d'équation a x + b y + c = 0, cercle de centre et de rayon donnés) on peut y indiquer des nombres (séparés maintenant par des ; ou des espaces) ou des noms d'expressions. Exemple :
deux points libres A et B étant définis, on peut entrer l'expression u=dist(A,B) puis définir un point ayant pour coordonnées u;0. Ce point se déplacera sur l'axe des abscisses du côté des abscisses positives.

Toute modification du nom d'un point modifie automatiquement les expressions faisant appel à ce point. En outre l'expression est elle-même modifiable en utilisant le bouton "Nommer".

Depuis la version 2.4, les expressions admettent le calcul avec les nombres complexes. re, im, mod, arg, conj, aff (partie réelle, imaginaire, module, argument, conjugué, affixe d'un point) sont de nouvelles fonctions. Le nombre i est bien sûr reconnu. Un point du plan peut être défini à partir de son affixe (en tapant par exemple 1+2i dans le champ de saisie) mais on peut aussi taper l'expression u = 1+2i puis préciser que l'affixe du point est u.

Notez enfin qu'une expression peut faire référence à une autre expression. Par exemple u = x (A). puis v = u * 2.

- courbe : t désigne dans les expressions une variable. Ainsi si on entre l'expression y = sin t ou directement sin t, la commande courbe appliquée à cette expression lancera le tracé de la sinusoïde correspondante. Il est bien sûr possible de paramétrer l'expression et d'avoir une courbe "mobile" si l'expression comporte par exemple la fonction x (A) ou dist (A, B) par exemple.

- commentaire : il s'agit d'un simple texte qui peut être ancré n'importe où dans la feuille de dessin. On peut en modifier le contenu en utilisant le bouton "Nommer". Le caractère \ dans un commentaire permet de passer à la ligne suivante.

- aire sous la courbe : on clique deux points A et B ainsi qu'une expression. Se trace alors une zone limitée par la courbe et les points de coordonnées (xA, 0) et (xB, 0).

- triangle : on clique trois points et se trace un triangle et l'intérieur dans la couleur sélectionnée.

- droite parallèle à un segment : sélectionner le segment puis un point.

- droite perpendiculaire à un segment : sélectionner le segment puis un point.

5. Quelques bugs

Il faut éviter de donner à une figure le nom d'une commande (exemple triangle.figure) car alors la commande sera lancée et pas le chargement de la figure.

Dans une expression ne pas mettre d'espaces autour des signes -. Problème dans la lecture du fichier.