Expériences d'utilisation de Java avec C
Le
Pierre787

Bonjour,
Je souhaite mettre à jour de vieux programmes codés en C sous Linux en y
intégrant une interface graphique évoluée et de la 3D. Sachant que le C
n'est pas le langage le plus adapté pour ce genre de tâche, je me tourne
donc vers une autre solution. N'étant pas adepte du C++ mais plutôt de Java,
je pense à utiliser des appels de méthodes Java via l'interface JNI. Bien
sûr, je pourrais tout recoder en Java mais par manque de temps, je préfère
une solution de transition dans l'immédiat.
On parle relativement peu de ce genre de cas sur le web, le système JNI avec
des appels de méthodes Java depuis des programmes Linux compilés en C
fonctionne-t-il bien ? Y-a-t il d'autres possibilités comme par exemple
utiliser .NET sous Linux avec Mono ? Comment les deux se comparent ? A noter
que je dispose d'outils qui me permettent d'exporter des javabeans d'objets
3D modélisés prêts à l'emploi. Sinon, .NET permet aussi l'intégration de 3D
dans l'interface graphique, j'hésite donc entre les deux (Java et C# ne sont
pas très différents).
Sinon, y a-t-il une autre possibilité différentes de celles-ci ?
Merci de vos retours,
Pierre
Je souhaite mettre à jour de vieux programmes codés en C sous Linux en y
intégrant une interface graphique évoluée et de la 3D. Sachant que le C
n'est pas le langage le plus adapté pour ce genre de tâche, je me tourne
donc vers une autre solution. N'étant pas adepte du C++ mais plutôt de Java,
je pense à utiliser des appels de méthodes Java via l'interface JNI. Bien
sûr, je pourrais tout recoder en Java mais par manque de temps, je préfère
une solution de transition dans l'immédiat.
On parle relativement peu de ce genre de cas sur le web, le système JNI avec
des appels de méthodes Java depuis des programmes Linux compilés en C
fonctionne-t-il bien ? Y-a-t il d'autres possibilités comme par exemple
utiliser .NET sous Linux avec Mono ? Comment les deux se comparent ? A noter
que je dispose d'outils qui me permettent d'exporter des javabeans d'objets
3D modélisés prêts à l'emploi. Sinon, .NET permet aussi l'intégration de 3D
dans l'interface graphique, j'hésite donc entre les deux (Java et C# ne sont
pas très différents).
Sinon, y a-t-il une autre possibilité différentes de celles-ci ?
Merci de vos retours,
Pierre
es tu sûr que tu peux appeler du Java depuis du C avec JNI ? Je crois
que c'est uniquement le contraire...
Lancer le programme C depuis java et dialoguer avec celui (par ex avec fichier ou par socket)
????
Tous les jeux 3D du marché sont en C et C++
Non non c'est bidirectionnel. D'ailleurs grâce à JNI on peut appeler du
java depuis autre chose que du C. Ainsi par exemple, personnellement en
passant avec le JNI j'arrivais à appeler du java depuis smalltalk
(visualworks) il y a quelques temps: les objets javas se mêlaient très
bien aux objets smalltalk.
Pour une interface graphique en 3D, ce n'est pas une question de langage
mais de bibliothèque(s). Nul doute que la norme C ne suffira pas. Mais
de là à dire que ce n'est pas le langage le plus adapté...
Dans le jeu vidéo 3D (ceux qui justifient que tu offres la clim à un tas
de silicone conditionné), on utilise en majorité C ou C++
(rigoureusement parlant, c'est plus souvent un mix infâme des deux, mais
ces deux langages sont très liés) car c'est un langage système justement
plus adapté pour tirer le meilleur parti du CPU qui se tape encore pas
mal de calculs, même avec les dernières cartes accélératrices que tout
le monde n'a pas, loin de là. Une interface 3D, c'est bien gentil, mais
si ça rame ?
Utiliser OpenGL tout en restant en C ? Personnellement, je n'irais pas
tout compliquer et ajouter des barrières techniques (que C n'a pas) en
utilisant un autre langage sans une bonne raison pour le faire (et sans
même connaître la nature de ces barrières).
--
Alex
mais tous les thread system de Java et la jvm tout entiète ne peut pas
fonctionner... ou alors faut la lancer au début du programme appelant ?
Perso, le C++, je n'ai jamais accroché, je préfère largement Java comme
langage objet. Par contre, le C ne me pose aucun problème mais comme dit
auparavant, pas sûr que ce soit la meilleure solution... Il ne s'agit pas
d'un jeu mais d'un soft multimédia bien plus simple faisant intervenir des
objets 3D. Je ne souhaite pas non plus réinventer la roue... Il existe pas
mal de solutions 3D sous Java qaui sont infiniment plus rapides à mettre en
oeuvre que de tout coder en C pour faire de la 3D. Et même avec des
bibliothèques prêtes à l'emploi C, réaliser une interface graphique IHM
complexe, faire de la navigation 3D, etc je pense que ça me prendra bien
plus de temps à tout faire en C que sous Java.
Bonne journée,
Pierre
Pourquoi donc?
Pourquoi donc?
Ne te compliques pas trop la vie. Ca marche impec. Il suffit de faire
l'experience. J'ai même réussi à faire du SWT avec ce systeme en
smalltalk. Bref.. ca marche même avec du java qui embarque du JNI et des
DLL planqué dans un .JAR... bref...
Il n'y a pas de raisons que ca marche pas pour la simple raison que ca
fonctionne: tu peux appeller du java depuis le C et lycée de versailles :)
sam.