Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Expériences d'utilisation de Java avec C

8 réponses
Avatar
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

8 réponses

Avatar
Albert
Le 16/10/2009 10:39, Pierre787 a écrit :
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 ?



es tu sûr que tu peux appeler du Java depuis du C avec JNI ? Je crois
que c'est uniquement le contraire...
Avatar
1 connu
"Pierre787" a écrit dans le message de news: 4ad8315d$0$1139$
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 ?



Lancer le programme C depuis java et dialoguer avec celui (par ex avec fichier ou par socket)


Merci de vos retours,

Pierre


Avatar
georges
Pierre787 wrote:
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



????
Tous les jeux 3D du marché sont en C et C++
Avatar
Samuel Devulder
Albert a écrit :

es tu sûr que tu peux appeler du Java depuis du C avec JNI ? Je crois
que c'est uniquement le contraire...



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.
Avatar
Alexandre Bacquart
Pierre787 wrote:
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.



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 ?

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 ?



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
Avatar
Albert
Le 17/10/2009 09:53, Samuel Devulder a écrit :
Albert a écrit :

es tu sûr que tu peux appeler du Java depuis du C avec JNI ? Je crois
que c'est uniquement le contraire...



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.



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 ?
Avatar
Pierre787
"georges" a écrit dans le message de
news:hbaou2$if4$
Pierre787 wrote:
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



????
Tous les jeux 3D du marché sont en C et C++




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
Avatar
Samuel Devulder
Albert a écrit :

mais tous les thread system de Java et la jvm tout entiète ne peut pas
fonctionner...




Pourquoi donc?

ou alors faut la lancer au début du programme appelant ?



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.