IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Quelques questions sur la JNI


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 20
    Par défaut Quelques questions sur la JNI
    Bonjour à tous, en éspérant tomber sur un expert Java qui saura m'éclairer

    J'ai un projet réseau à réaliser, et je dois utiliser la JNI.
    En gros le code doit permettre d'appeller du code C++ qui implemente l'algorithme de traceroute (la fameuse commande reseau) et récuperer et parser les données en Java.

    Jusqu'à la rien de bien étrange, la JNI étant faite pour supporter du code C++.
    Je suppose que le code C++ doit être dépendant de la plateforme pour être compilé correctement sur chaque plateforme (qu'en est-il de l'execution ? platform dependant au niveau du code aussi ?).

    En gros je dois faire tourner ce projet sous MacOSX et Windows, sans trop me fatiguer a faire deux implementations du traceroutes (en C++) complétement différentes.
    La JNI rend elle abstraite le code C++ aprés compilation, et cela tourne til donc sur toutes les plateformes ? Ce n'est pas mon idée premiére ...

    Auquel cas il faudrait que je trouve une librairie orientée réseau en C/C++ qui soit cross platform (au moins Mac / Windows - Je pense à ACE) ...
    Mais est-ce évident via la JNI d'utiliser des librairies C++, ou devrais-je encapsuler l'ensemble des milliers de headers de la librairie avec des tags propres à la JNI ?

    Voila, merci de répondre si vous pouvez un peu m'aider à avancer.

    Merci d'avance !

    Ben.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ce qui est sûr, c'est que JNI ne te fournit pas une sollution multi plateformes (on a eu le problème avec un serveur SUN Solaris 10 en 64 et une version de la JVM en 32, certains types n'avaient pas la même longueur).
    En gros, il faut faire une classe java qui implémente les méthodes "native", tu utilises après javah pour générer le .h, faire un programme C pour implémenter toutes les méthodes de .h, créer une dll (donc là aussi problème : windows = dll, Unix = .o)
    Ensuite, côté java, c'est simple, tu fais un System.load (ou System.loadLibrary) et tu utilises...
    Ceci dit, pourquoi ne pas lancer la commande traceroute via Runtime.getRuntime().exec(...) ?
    C'est une appli WEB ou Swing ?

    En espérant ne pas t'avoir découragé...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Par défaut
    Ne pas oublier de rendre la librairie disponible via
    LD_LIBRARY_PATH ou PATH ouo LD_PATH en fonction de l'os

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par f273345
    Ne pas oublier de rendre la librairie disponible via
    LD_LIBRARY_PATH ou PATH ouo LD_PATH en fonction de l'os
    Uniquement si tu utilises loadLibrary (avec load, tu peux préciser le chemin complet)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 20
    Par défaut
    Merci pour vos réponses !

    Je suis un peu découragé en effet, c'est assez chaud, je suis expert C++ et non pas Java, c'est pour un client, et je dois me remettre à Java, sans avoir vraiment jamais touché à la JNI.

    Le besoin a été exprimé d'utiliser la JNI pour effectuer le traceroute, je n'ai pas vraiment plus de précision pour le moment, j'ai demandé au client j'attend sa réponse.

    Pour ce qui est du code du traceroute (le moteur sera écrit en C++), je ne peux pas donc realiser un code natif unique, mais il doit être dépendant de la plateforme ? Car pour generer une .dll windows et l'équivalent MAC il va me falloir compiler ce code sur les deux plateformes je suppose.

    Je maintiens donc le fait que j'aimerai utiliser une librairie systéme/réseau cross platform (telle que ACE), supportée sous Mac et Windows (et plein d'autres OS).
    Mais en gros, je fais mon code C++ standard sous Visual Studio, en sortant une DLL (et lequivalent sur MAC) et au niveau JNI je n'ai pas grand chose à faire exact ?

  6. #6
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 20
    Par défaut
    En fait je voulais dire ...

    Le code C++ n'as pas à être mélangé au code Java (un peu comme disont du HTML dans du PHP), mais peut être conservé hors du projet dans une solution Visual Studio à part ...
    Et le projet Java n'aura pas une trace de code C++ mais fera juste des appels à la DLL.

    Je me trompe ou pas ?

Discussions similaires

  1. Quelques questions sur les threads
    Par benj63 dans le forum C++Builder
    Réponses: 28
    Dernier message: 21/11/2005, 13h27
  2. Réponses: 19
    Dernier message: 21/10/2005, 19h24
  3. Quelques questions sur la mémoire
    Par Gruik dans le forum C
    Réponses: 6
    Dernier message: 17/11/2004, 14h38
  4. Quelques question sur Win 32 Appli
    Par lvdnono dans le forum Windows
    Réponses: 5
    Dernier message: 15/06/2004, 12h37
  5. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo