java : appeler des methodes d'un programme en C - Java - Programmation
Marsh Posté le 15-03-2007 à 13:53:54
java applet ... une belle usine à Gaz avec un serveur web qui fait tourner le C++ et une applet java ...
non sérieusement, utilise un toolkit graphique portable C++ et on en parle plus (Qt, GTKmm, etc)
Marsh Posté le 15-03-2007 à 14:28:56
En fait il s'agit d'un projet que l'on doit faire dans le cadre de notre cursus scolaire.
Nous avons deja passer une semaine à developper l'interface graphique en java et notre tuteur reste certain que l'on peut continuer dans ce sens avec les fichiers textes.
En gros il faut quelque chose de fonctionnel, on ne regarde pas spécialement la rapidité du programme.
Il faut que ce soit portable (d'où l'applet java).
Tu pourrais nous aider ?
Marsh Posté le 15-03-2007 à 14:32:21
le coup des fichiers textes, c'est une blague ...
Il faut au minimum utiliser des sockets / pipe.
l'applet java ... mais tu ne sais même pas ce que c'est. une applet java, c'est un morceau de java qui tourne dans ton navigateur internet. et le programme C++ il est où dans l'histoire ...
Marsh Posté le 15-03-2007 à 14:42:39
Nous ce que nous propose le tuteur est que le programme C++ charge ses données de jeu via un/plusieurs fichiers textes, après l'interface java se charge décrire dans les fichiers textes le jeu actuel, ensuite on invoque la bonne méthode en C (via JNI peut etre ?) qui va renvoyer le resultat du traitement (soit ok si le deplacement est possible, ou autre chose message d'erreur si ce n'est pas bon) et nous on doit s'arranger pour lire la réponse.
Je sais que ce n'est pas très clair et pour nous non plus c'est donc la raison de mon message sur le forum, je voudrais avoir des solutions à mon problème ou des idées de résolution si possible merci
Louis
Marsh Posté le 15-03-2007 à 14:47:51
ReplyMarsh Posté le 15-03-2007 à 15:25:25
oui c'est vrai on voyait aussi le coté du "on peut l'executer del'éxtérieur" sachant que cela aurait disponible sur une page web.
De toute maniere même si l'on ne passe pas par l'applet java, nous avons toujours le même problème pour appeler les fonctions du programme c !?!?!?
Marsh Posté le 15-03-2007 à 15:37:46
ReplyMarsh Posté le 15-03-2007 à 15:42:40
Je n'ai pas encore essayé, on m'a parlé des RMI aussi mais je sais pas si cela est compatible car en fait ca permet d'invoquer des methodes d'un programme java distant (donc deux machines java virtuelles) mais je sais pas si cela pourrait être mis en pratique avec un programme en C !?!?
Marsh Posté le 15-03-2007 à 15:46:02
mais si tu passes par une Applet, ton code java tourne en local sur le poste de l'utilisateur qui lance ton applet avec son navigateur.
Donc comment tu comptes appeler ton code C qui est distant ?
socket et pipe, ça a l'air cool. Ecoute les conseils de Taz.
Marsh Posté le 15-03-2007 à 18:06:25
En fait l'applet sera au même endroit que le programme C, même si l'applet pourra être affiché via une page elle se trouvera sur le même serveur que celui du programme C. par contre on m'a dit que JNI n'est pas possible avec les applets.
Il faut que le programme en C ne soit pas trop modifié car il s'agit de la réutilisation en fait, on a d'un coté l'interface de l'autre le noyau et faut faire interagir les deux ensembles.
Je vais regarder du coté des sockets et pipe alors ...
Merci a vous
Marsh Posté le 15-03-2007 à 19:00:24
Si j'utilise JNI avec une appli java il va recuperer les methodes C et les interpreter tout simplement comme si c'était les méthodes d'un programme java !?!?!?
A aucun moment le programme en C ne peut tourner si ? je ne connais pas tout donc s'il existe une solution ou le programme en C tourne je veux bien la connaitre !
Marsh Posté le 16-03-2007 à 07:53:14
mais, si tu l'appelles, il va bien tourner, non ?
le problème c'est que ton applet est stocké sur ton serveur, mais est lancée et tourne sur le navigateur de l'utilisateur et ne peut donc pas faire tourner ton programme C.
Si tu veux faire une applet, il te faudra un frontal à ton programme C. Je ne sais pas si RMI est possible avec les applets, mais pourquoi pas.
Marsh Posté le 16-03-2007 à 09:12:12
Je pense que je vais continuer le dev du côté d'un programme java et non d'une applet pour que je puisse utiliser JNI.
A ce moment le programme va interpréter les methodes C comme des methodes java non ?
Marsh Posté le 16-03-2007 à 09:13:39
allserv a écrit : A ce moment le programme va interpréter les methodes C comme des methodes java non ? |
non, il faut compiler le code C et le JNI va appeller les méthodes compilées.
Marsh Posté le 16-03-2007 à 09:17:41
Mais la compilation est faite avant. En gros quand mon programme C est fini, je le compile, je crée les librairies et après c'est JNI qui va les appeler mais a aucun moment on devra avoir besoin d'un compilateur non ?
Marsh Posté le 16-03-2007 à 09:39:09
allserv a écrit : Mais la compilation est faite avant. En gros quand mon programme C est fini, je le compile, je crée les librairies et après c'est JNI qui va les appeler mais a aucun moment on devra avoir besoin d'un compilateur non ? |
plus au moment de l'appel non
Marsh Posté le 16-03-2007 à 10:02:03
allserv a écrit : Mais la compilation est faite avant. En gros quand mon programme C est fini, je le compile, je crée les librairies et après c'est JNI qui va les appeler mais a aucun moment on devra avoir besoin d'un compilateur non ? |
une fois tout compilé, tu n'as plus besoin de compilateur, effectivement.
Marsh Posté le 15-03-2007 à 13:47:36
Bonjour,
J'expose mon problème, nous avons un programme écrit en C++ et qui est le noyau d'un "jeu d'échec". Je dois créer une interface graphique qui doit être portable, j'ai choisi et développé une interface en java applet.
Maintenant je dois faire la relation entre les deux programmes. Pour simplifier la relation j'utilise des fichiers textes. Un fichier texte représentera le jeu en cours et le programme C doit recuperer ce fichier pour le charger.
Comment et quelles sont les meilleures solutions qui s'offrent à moi pour invoquer le programme en C ?
Si vous avez d'autres idées je suis preneur.
Merci d'avance pour votre aide
Louis