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

C++ Discussion :

Utilisation d'un coeur algorithmique Java distant � partir d'un programme C++


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 139
    Par d�faut Utilisation d'un coeur algorithmique Java distant � partir d'un programme C++
    Bonjour,

    Je voudrais conna�tre l'avis d'expert ayant d�j� utilis� des technologies d'interfa�age de programmes C++ et Java sur des machines distantes.

    J'ai d'un c�t� un syst�me ind�pendant �crit en C++ et de l'autre un algorithme impl�ment� en Java permettant d'effectuer certain calculs et de renvoyer une action correspondante au programme C++.

    Seulement, certaines contraintes rendent impossibles le red�veloppement de la partie Java en C++.

    En r�sum� :
    -j'ai des donn�es �manant de la partie C++ mat�rialis�es par une classes "Donn�e".
    - je voudrais transmettre l'objet Donn�es � java, afin qu'il fasse ses calculs en fonction des informations de ces donn�es.
    - Instanciation dans Java d'un objet "Action" r�sultant des calculs.
    - Transmission de cet objet � C++ pour qu'il r�cup�re les informations d'Action.
    - Utilisation de l'objet Action dans C++.

    Ce processus serai amen� � boucler puisque divers �v�nements peuvent engendrer un recalcul.

    Alors j'ai explor� divers pistes comme le JNI coupl� au RMI, le Corba, les sockets, le framework Zeus de C++.

    Quelle est votre avis sur la question ? Je suis ouvert � tout retour d'exp�rience sur l'utilisation de ces technologies.

  2. #2
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Sockets ou JNI, sachant que le premier est en th�orie (beaucoup) plus performant.

    Mais bon, on a le m�me probl�me alors on porte java en C++... comme on peut.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 139
    Par d�faut
    D'accord, mais dans votre cas est-ce qu'il y a une probl�matique de communication r�seau entre le code C++ et java ?

    Car l'utilisation de JNI seul ne r�pond pas � cette probl�matique, tandis que les Sockets peuvent passer par le r�seau.

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Si le travail s'effectue toujours par un r�seau, il "suffit" de faire transiter les donn�es selon un protocole � �tablir �ventuellement...

    Pour autant que les deux syst�mes soient en mesure d'�valuer les donn�es re�ues de la m�me mani�re et de les �mettre sous une forme d�termin�e, tu passe litt�ralement outre la barri�re du langage...

    La seule chose �tant que, quel que soit le langage utilis�, il faudra pr�voir... une structure pour repr�senter les donn�es dans les deux applications
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 139
    Par d�faut
    Ok, je vois l'id�e : passer par un moyen plus bas niveau, en transmettant les donn�es sous la forme d'une cha�ne de caract�re (par exemple) suivant une syntaxe pr�alablement d�finie. Cha�ne qui sera ensuite trait�e c�t�e Java. Et de la m�me fa�on en sens inverse.

    Ca me para�t �tre la solution la plus rapide tant au niveau dur�e de d�veloppement qu'au niveau du temps d'ex�cution. Mais en terme de facilit� de reprise du code par un tier j'�met quelques doutes.

  6. #6
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    XML. C'est autodocument�.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 139
    Par d�faut
    Ah oui, cette id�e me pla�t, je n'y avais pas pens�.

    Et pour envoyer le fichier XML g�n�r�, je peux passer par des Sockets c'est �a ?

  8. #8
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Bonjour,
    Je ne sais pas dans quelle mesure soap peut aussi apporter une r�ponse. A tout hasard, voici un tuto qui peut servir d'introduction : Web Services en C++ : Impl�menter un client/serveur gSoap, par r0d.

  9. #9
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    write XML > zip > socket > unzip > read XML

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 139
    Par d�faut
    Ok merci, je jette un oeil � SOAP quand m�me.

  11. #11
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Citation Envoy� par K-you Voir le message
    <snip>Mais en terme de facilit� de reprise du code par un tier j'�met quelques doutes.
    Je ne vois pas pourquoi...

    Si tu d�termine clairement la mani�re dont les donn�es sont transmises et la structure qui permet de les r�cup�rer / repr�senter, il suffira � celui qui reprend le code d'apprendre �... utiliser cette structure, dont, principalement, l'utilisation des diff�rents champs qu'elle regroupe.

    Mettons que tu aies une structure "personne" qui serait cod�e en C sous la forme de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct Persone
    {
        char nom[45]; // je prend volontairement un grand nombre :D
        char prenom[45];
        char dn[0] // au format YYYYMMDD + '\0'(ajouté)
    };
    Elle pourrait tr�s bien �tre cod�e en C++ sous la forme de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    class Personne
    {
        public:
            Personne(std::string const & n, std::string const & p, 
                     std::string const & d):name_(n),firstname_(p),birth_(d){}
            /* tout ce qui nous intéresse */
    };
    et sous une forme �quivalente quel que soit le langage utilis� (pas uniquement java, mais ada, cobol ou que sais-je )

    Du moment que l'on sache que le protocole pr�vois l'envoi des donn�es sous la forme
    • byte 1 : nombre de lettres du nom (sans compter '\0')
    • byte 2 : nombre de lettres du prenom
    • byte 3 � byte N (*): nom
    • byte N+1 � byte M (**): prenom
    • byte M � byte M+8 : date de naissance
    • byte L(***) : checksum

    • (*) correspond � 4+ nombre de lettres du nom comme d�fini dans byte 1
    • (**) correspond � N+1 + nombre de lettres du prenom comme d�fini dans byte 2
    • (***) correspond � M + 1 + 8
    n'importe quel langage (y compris les plus exotiques / anciens) sera en mesure de r�cup�rer les informations et de les traiter

    [EDIT] Effectivement, un format comme XML est facile � utiliser et � transmettre...

    Les possibilit�s sont multiples et pr�sentent toutes des avantages et des inconv�nients
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  12. #12
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Citation Envoy� par K-you Voir le message
    Ok merci, je jette un oeil � SOAP quand m�me.
    Par curiosit�, ton module en java, c'est quoi ?

  13. #13
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 139
    Par d�faut
    Oui, c'est vrai qu'avec une documentation claire et un format de transmission de donn�es comme celui de ton exemple, �a ne pose pas de probl�me de reprise.

    Ma partie Java est un algorithme de plannification (avec entre autres, des recherches de plus court chemin).

  14. #14
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Merci.
    Tiens-nous au courant de tes r�sultats. Je ne connais pas SOAP et suis curieux de savoir ce que �a donne, surtout du cot� des serveurs java.

  15. #15
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 139
    Par d�faut
    Je n'ai toujours pas test� SOAP, mais je me demande maintenant si le protocol buffer qui permet de g�n�rer du code en C++ ou en Java gr�ce au compilateur associ� � la librairie Protocol Buffer ne serait pas plus efficace. Personne n'a d'exp�rience dans l'utilisation de ce protocole ?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 08/05/2010, 18h31
  2. Utilisation de code Java � partir d'un programme C++ distant
    Par K-you dans le forum G�n�ral Java
    R�ponses: 5
    Dernier message: 25/02/2010, 14h08
  3. Compiler des fichier java, mais � partire d'un programme Java.
    Par Djobird dans le forum API standards et tierces
    R�ponses: 5
    Dernier message: 06/11/2007, 21h44
  4. R�ponses: 4
    Dernier message: 24/04/2007, 18h05
  5. [ActiveX] Peut-on utiliser un Controle ActiveX avec Java
    Par waldo2188 dans le forum Multim�dia
    R�ponses: 2
    Dernier message: 22/02/2005, 11h39

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