37 votes

Appeler du code C# depuis Java ?

Quelqu'un a-t-il une bonne solution pour intégrer du code C# dans une application java ?

Le code est petit, je pourrais donc le réécrire en java, mais je préfère réutiliser le code si possible. Ne vous répétez pas, etc.

De plus, je sais que je peux exposer le C# en tant que service Web ou autre, mais il contient des éléments de sécurité et de cryptage, et je préférerais qu'il reste étroitement intégré si possible.


Edit : Il s'agira d'une application basée sur un serveur, donc "télécharger" un autre runtime n'est pas pertinent.

0 votes

Si elle est basée sur un serveur, quelle est la plate-forme ? Je n'ai aucune idée de la façon dont des choses comme l'interopérabilité COM fonctionnent avec Mono, c'est donc un autre facteur à prendre en compte.

33voto

FlySwat Points 61945

Vous utiliserez l'interface native Java pour appeler votre code C# compilé dans une DLL.

S'il s'agit d'une petite partie de C#, il serait beaucoup plus facile de la porter en Java. Si c'est beaucoup, cela pourrait être une bonne façon de le faire.

En voici un aperçu général :

http://en.wikipedia.org/wiki/Java_Native_Interface

L'autre option serait de créer un assemblage COM à partir du code C# et d'utiliser J-Interop pour l'invoquer.

http://sourceforge.net/projects/j-interop/

0 votes

Le deuxième lien est cassé.

22voto

Pavel Savara Points 1745

Je suis l'auteur de jni4net Un pont intraprocessus open source entre JVM et CLR. Il est construit au dessus de JNI et PInvoke. Aucun code C/C++ n'est nécessaire. J'espère qu'il vous aidera.

0 votes

Cela semble assez cool, avez-vous trouvé un moyen de supporter à la fois Linux et Windows ?

7voto

Joel Coehoorn Points 190579

Si c'est court, je pense que vous feriez mieux de réécrire le code en java. Télécharger un runtime de 50Mo est déjà assez pénible.

5voto

Tom Carter Points 1842

Il existe une IL pour le compilateur Java Bytecode. GrassHopper qui pourraient vous être utiles. Je ne l'ai jamais essayé cependant.

J'envisagerais de réécrire votre code en Java.

EDIT : Notez que Grasshopper semble ne plus être disponible.

0 votes

Le lien vers le bac à herbe est cassé.

0 votes

Probablement plus disponible

3voto

jodonnell Points 14999

Nous avons utilisé JNBridge pour ça, et ça a bien marché. Il gère Java->.NET et vice-versa, le tout dans le processus.

2 votes

Oui, il s'agit d'un produit commercial.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X