2008-10-05 12 views
5

Tengo un proyecto escrito en Java (> 1.5).Uso de Java-classes con C#

¿Es posible escribir partes del proyecto con C#?
Por ejemplo, la GUI y llamar a los métodos y crear una instancia de las clases escritas en Java?

En caso afirmativo, ¿cómo?

Respuesta

9

No sin algo como ikvm - o utilizando servicios web, etc. para comunicarse entre las dos partes. Básicamente, es probable que sea mucho más trabajo que reescribir el código de proyecto existente en C# o escribir la GUI en Java.

+0

¿Puede explicar por qué no es posible con el enfoque dll? La reescritura es una opción para la reescritura de proyectos pequeños. Por ejemplo, 100.000 líneas pueden ser costosas ... – Ilya

+0

Debería estar ejecutando tanto el CLR como la JVM, y las dos máquinas virtuales no conocen los objetos de los demás. –

+0

¿Quieres decir que la respuesta de Ilya no está funcionando? – Burkhard

4

Parece que mi solución es muy limitada. y aplicar solo a la versión específica de java.

probablemente quede con buena vieja C :) No puedo imaginar cómo trabajar sin bibliotecas compartidas :)

Este document explican cómo crear un archivo DLL de Java y usarlo en el código C. No soy C# ni experto en Java, pero estoy seguro de que también puedes cargar archivos dll externos en C#. Así que no es una solución completa, pero es un buen punto de partida, en mi humilde opinión. Generalmente dll es una manera perfecta de mezclar idiomas.

+0

Tenga en cuenta que ese documento solo se aplica a un JRE en particular, y solo hasta una versión particular (bastante antigua - 2005). –

+0

Como menciono que no soy un experto en Java. ¿Significa eso que crear dll en java no es trivial? ¿Cómo se comparten bibliotecas en java? – Ilya

+0

Ilya: las bibliotecas Java se comparten en archivos JAR. En esencia, son archivos comprimidos (zip, creo) que contienen los archivos compilados bytecode de Java y otros recursos. – Spoike

2

En forma sencilla se puede empacar sus clases Java a archivo jar entonces En C# usar Proceso clase para ejecutar y mapear IO corriente

0

que hice algunas investigaciones sobre esto hace unos años (2005 creo) y me gustó JNBridgePro como el mejor producto de terceros para hacer esto. Échale un vistazo aquí http://www.jnbridge.com/

¡Buena suerte!

17

Soy el autor de jni4net, puente de intraproceso de código abierto entre JVM y CLR. Se basa en JNI y PInvoke. No se necesita código C/C++. Espero que te ayude.

+0

Impresionante trabajo, gracias .. –