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

Java Discussion :

du langage C à java


Sujet :

Java

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut du langage C à java
    J'ai un programme qui est developpé en langage C ,y-a t_il une methode ou un outil performant qui me permet de basculer entre le deux langages et d'utiliser les fonctionnalités avec java des source developpé en c.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Non: un tel convertisseur d'applications n'existe pas.
    Tu vas devoir développer ton application depuis le départ en java.
    De plus, java est un langage "orienté objet", et pas le C. Donc plutôt qu'une conversion de code "pas à pas", il te faut envisager de repenser la conception même de ton application en objet pour vraiment tirer partie du langage.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour

    sinon, il est possible d'utiliser des librairies via JNI (voir les cours et tutoriels java) ce qui évite la réécriture, tu devra surement faire un wrapper pour que tout fonctionne sans modifier ton code c.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    Merci pour votre aide, mais tu peux me dire ce quoi wrapper?
    et aussi je veut te dire que j'ai besoin seulement d'appeler une classe en c lorsque je clique sur une bouton.
    C'est un outil composé de trois parties ,2 developpées en java et une en c ,et il y-a aussi un menu principale qui vous permet de choisir une de ce trois parties .Cette men principale est developpé en java.la probleme est comment appler l'application developpé en c quant je clique sur une bouton du menu.
    J'ai réussi a basculer du c à java mais l'inverse non.C'est pourquoi je posté cette question.

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Je vais essayer d'être clair !

    pour faire du JNI (surtout n'hesite pas a regarder les cours Java pour les details) il faudra faire plusieurs choses :
    - ta classe en c
    - ta classe java qui doit appeler la methode native en c
    - le header généré avec "javah -jni ..." a partir de ta classe java compilée
    - le wrapper qui va utiliser le header généré

    imagine que tu aies une classe en c (monCodeC)qui possède la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DLLEXPORT const char *getMessage() {
    	return "Mon message";
    }
    le code java suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    /**
     * 
     */
    package com.test.jni;
     
    /**
     * @author Moi
     * 
     */
    public class TestJNI {
     
    	static {
    		System.loadLibrary("MonWrapperJNI");
    	}
     
    	public static void main(String[] args) {
    		TestJNI tj = new TestJNI ();
    		System.out.println("Le message : " + tj.getMessage());
    	}
     
    	public native String getMessage();
    }
    Le wrapper (MonWrapperJNI):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <jni.h>
    #include <monCodeC.h>
    #include <com_test_jni_TestJNI.h> //normalement généré par javah
     
    JNIEXPORT jstring JNICALL Java_com_test_jni_TestJNI_getMessage(JNIEnv * env, jobject obj) {
    	return env->NewStringUTF(getMessage());
    }
    Pour répondre a ta question le wrapper va permettre de faire le lien entre ton code c et JNI.
    Si tu as la possibilité de modifier directement le code c alors tu n'a plus besoin du wrapper car tu pourras directement mettre la methode Java_com_test_jni_TestJNI_getMessage(JNIEnv * env, jobject obj) dans ta classe c.

    j'espère ca va t'aider !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    il est très facile de convertir à la main du C en Java (le contraire étant beaucoup plus complexe).
    Le seul souci que tu pourrais rencontrer c'est les pointeurs sur des in, double, ... en paramêtre de fonctions. Une solutions nulle mais facile c'est de créer une classe PointeurInt, ... contenant juste un terme "value".

    Sinon, tu peux compiler ta partie C et appeler l'éxécutable via la commande "execute". Il te faudra juste faire un fichier d'entrée/sortie pour envoyer les données au programme C puis les récupérer.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

Discussions similaires

  1. Quel langage entre Java ou C++
    Par Pyoko31 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 17/05/2015, 10h25
  2. Réponses: 39
    Dernier message: 11/11/2011, 09h57
  3. Réponses: 0
    Dernier message: 08/11/2011, 16h36
  4. diagramme de classe vers un langage objet(JAVA )
    Par kd_amine dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 13/08/2009, 14h49
  5. Commencer la programmation avec le langage Java ?
    Par von_magnus dans le forum Débuter
    Réponses: 14
    Dernier message: 09/03/2004, 22h19

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