OVH Cloud OVH Cloud

JNI retour d'experience

4 réponses
Avatar
Chat
Bonjour,
je souhaiterais avoir des retours d'experiences de personnes ayant coder
avec JNI, j'ai des contraintes tps reel sur mon projet est ce que ça passe.
De plus j'ai des erruers en executant le tutorial de sun, j'ai pas bien
capté ou je dois placer le dll et quel chemin je dois metytre dans le
classpath
thanks.

4 réponses

Avatar
vclassine
Chat wrote in message news:<4021f52d$0$32648$...
Bonjour,
je souhaiterais avoir des retours d'experiences de personnes ayant coder
avec JNI, j'ai des contraintes tps reel sur mon projet est ce que ça passe.
Je ne sais pas... ça dépend certainement de ce que tu veux faire en

JNI. Perso je trouve que ça ne rame pas trop, mais je ne suis pas
toujours en train d'appeler des fonctions native...

De plus j'ai des erruers en executant le tutorial de sun, j'ai pas bien
capté ou je dois placer le dll et quel chemin je dois metytre dans le
classpath


La méthode simple c'est de mettre la DLL dans le répertoire
d'execution de ton appli, comme ça pas de classpath spécial et pas de
PB. En plus je crois que le classpath n'y est pour rien, il doit
s'agir du library path...

thanks.
from nothing :-)


Avatar
Chat
Vincent wrote:
Chat wrote in message news:<4021f52d$0$32648$...

Bonjour,
je souhaiterais avoir des retours d'experiences de personnes ayant coder
avec JNI, j'ai des contraintes tps reel sur mon projet est ce que ça passe.


Je ne sais pas... ça dépend certainement de ce que tu veux faire en
JNI. Perso je trouve que ça ne rame pas trop, mais je ne suis pas
toujours en train d'appeler des fonctions native...


De plus j'ai des erruers en executant le tutorial de sun, j'ai pas bien
capté ou je dois placer le dll et quel chemin je dois metytre dans le
classpath



La méthode simple c'est de mettre la DLL dans le répertoire
d'execution de ton appli, comme ça pas de classpath spécial et pas de
PB. En plus je crois que le classpath n'y est pour rien, il doit
s'agir du library path...


thanks.


from nothing :-)
Merci pour les infos, effectivement c'etait le PATH , non le classpath

qui etait incorrect.
En gros mon appli c 50% natif , 50% java normal, je dois reutiliser le
code qu'un gars a ecrit en C pour une communication avec un lecteur de
cartes.
On m'a dit que je risquais des pb d'incompatibilité des types, quand est
il exactement, est ce qu'il y a moyen de faire une appli clean
completement transparente??
thanks.


Avatar
john gallet
Bonjour,

je souhaiterais avoir des retours d'experiences de personnes ayant coder
avec JNI,
Une expérience sous unix, java parlant avec une API en C, pas de

problèmes en production depuis des mois.

j'ai des contraintes tps reel sur mon projet est ce que ça passe.
Qu'est-ce que tu appelles temps réel ? Windows n'est pas temps réel au

sens strict du terme. Seuls des OS genre vrtx etc le sont.

On m'a dit que je risquais des pb d'incompatibilité des types, quand est
il exactement, est ce qu'il y a moyen de faire une appli clean
completement transparente??


Complètement transparent à condition de faire gaffe que si un int et un
jint sont probablement la même chose, il n'en va pas de même pour un
float et un jfloat. Donc modulo des casts à la goret dans tous les
coins, oui c'est totalement transparent. En tous cas, je n'ai pas trouvé
d'autre solution pour éviter les coredumps dans le cadre de l'appel
depuis JNI d'une méthode java (constructeur par exemple) où comme le
nombre et la taille des arguments doivent correspondre pile poil. Il va
de soit que le code C/C++ doit être threadsafe si tu veux aussi
l'utiliser en multithread java.

HTH
JG

Avatar
Christophe M
Vincent wrote:
Chat wrote in message news:<4021f52d$0$32648$...

Bonjour,
je souhaiterais avoir des retours d'experiences de personnes ayant coder
avec JNI, j'ai des contraintes tps reel sur mon projet est ce que ça passe.


Je ne sais pas... ça dépend certainement de ce que tu veux faire en
JNI. Perso je trouve que ça ne rame pas trop, mais je ne suis pas
toujours en train d'appeler des fonctions native...


De plus j'ai des erruers en executant le tutorial de sun, j'ai pas bien
capté ou je dois placer le dll et quel chemin je dois metytre dans le
classpath



La méthode simple c'est de mettre la DLL dans le répertoire
d'execution de ton appli, comme ça pas de classpath spécial et pas de
PB. En plus je crois que le classpath n'y est pour rien, il doit
s'agir du library path...


thanks.


from nothing :-)


Juste pour rajouter de l'info, on peut aussi fixer cela par les
"propriétés" systèmes au lancement de l'application :
java -Djava.library.path=mon_chemin_vers_mes_dll mon_appli

J'ai aussi découvert la propriété java.ext.dirs qui permet de donner un
répertoire contenant des .jar (un peu comme le répertoire ext du jre),
du coup plus besoin de spécifier tous les .jar contenant les librairies
externes, juste un répertoire. (mais ça n'a rien a voir avec le problème
;-)

Et jettes aussi un oeil à www.swig.org , si t'as les sources de ton C,
il va te permettre de créer simplement un "wrapper" vers tes fonctions C
sans devoir tout te tapper à la mimine :-)