next up previous contents index
suivant: Liste des figures monter: Scilab à partir de précédent: Méthodes utilitaires   Table des matières   Index

Comment fonctionne cette interface

L'interface Java/Scilab est construite à l'aide de JNI, Java Native Interface, qui permet de construire une application comportant à la fois du code Java et du code natif, ici compilé à partir de C. Comme JNI sort du cadre du cours nous ne rentrerons pas dans les détails. La classe Matrix comporte des méthodes et fonctions déclarées « natives », qui seront écrites en langage C et compilées pour une plate-forme particulière :

package javasci;

class  Matrix {
  // ...
  // méthodes natives que nous implémenterons en C :

  public native void scilabSend();
  public native void scilabGet();
  public native static void scilabExec(String job);
  public native void scilabJob(String job);
  // ...
}

Un appel à javac pour compiler le programme précédent, suivi d'un appel à javah permet d'obtenir des fichiers d'en-tête correspondant à chacune des méthodes natives, par exemple javasci_Matrix_scilabJob.h, qui contient la déclaration suivante :

JNIEXPORT void JNICALL Java_javasci_Matrix_scilabJob
  (JNIEnv *env , jobject obj_this, jstring job);

On connaît ainsi le prototype des fonctions C réalisant l'interface. Il ne reste plus qu'à les définir, en respectant les conventions JNI. Le source complet se trouve sous le répertoire examples/callsci/callsciJava de la distribution Scilab . Ce répertoire contient également la bibliothèque partagée libjavasci.so.

Noter qu'en cas d'erreur Scilab on imprime juste un message d'erreur. Pour être plus propre, il faudrait déclencher une exception Java. JNI rend cela possible et nous renvoyons le lecteur à la documentation

   http://java.sun.com/j2se/1.3/docs/guide/jni

next up previous contents index
suivant: Liste des figures monter: Scilab à partir de précédent: Méthodes utilitaires   Table des matières   Index
Rene' LALEMENT 2002-11-07