2008-10-05 9 views
5

J'ai un projet écrit en Java (> 1.5).Utilisation de classes Java avec C#

Est-il possible d'écrire des parties du projet avec C#?
Par exemple l'interface graphique et l'appel des méthodes et instancier les classes écrites en Java?

Si oui, comment?

Répondre

9

Non sans quelque chose comme ikvm - ou en utilisant des services Web, etc. pour communiquer entre les deux parties. Fondamentalement, cela risque d'être beaucoup plus de travail que de réécrire votre code de projet existant en C# ou d'écrire l'interface graphique en Java.

+0

Pouvez-vous expliquer pourquoi ce n'est pas possible avec l'approche dll? La réécriture est une option pour la réécriture de petits projets 100 000 lignes par exemple pourraient être coûteuses ... – Ilya

+0

Vous devez exécuter à la fois le CLR et la JVM - et les deux VM ne connaissent pas les objets de l'autre. –

+0

Vous voulez dire, la réponse d'Ilya ne fonctionne pas? – Burkhard

4

Il semble que ma solution soit très limitée. et ne s'applique qu'à la version spécifique de Java.

Je vais probablement rester avec bon vieux C :) ne peux pas imaginer comment travailler sans bibliothèques partagées :)

Cette document explique comment créer une dll de java et l'utiliser dans le code C. Je ne suis pas C# ou expert Java mais je suis sûr que vous pouvez charger des DLL externes en C#. Donc pas une solution complète mais un bon point de départ, à mon humble avis. Généralement dll c'est un moyen idéal pour mélanger les langues.

+0

Notez que ce document ne s'applique qu'à un JRE particulier, et seulement jusqu'à une version particulière (assez ancienne - 2005). –

+0

Comme je le dis je ne suis pas un expert Java. Cela signifie-t-il que la création de DLL en Java n'est pas triviale? Comment un partage des bibliothèques dans Java? – Ilya

+0

Ilya: les bibliothèques Java sont partagées dans des fichiers JAR. Ce sont essentiellement des archives compressées (zip je crois) qui contiennent les fichiers compilés Java bytecode et autres ressources. – Spoike

2

de manière simple, vous pouvez emballer vos classes java à jar puis En C# utilisation processus classe pour exécuter et carte flux IO

0

Je l'ai fait quelques recherches sur ce il y a quelques années (2005 je crois) et j'ai aimé JNBridgePro comme le meilleur produit tiers pour le faire. Vérifiez-le ici http://www.jnbridge.com/

Bonne chance!

17

Je suis l'auteur de jni4net, pont intraprocessus open source entre JVM et CLR. C'est construit sur JNI et PInvoke. Aucun code C/C++ requis. J'espère que ça t'aidera.

+0

Super travail, merci .. –

Questions connexes