Pregunta

¿Alguien tiene una buena solución para integrar algún código C# en una aplicación Java?

El código es pequeño, por lo que podría volver a escribirlo en Java, pero prefiero reutilizar el código si es posible.No te repitas, etc.

Además, sé que puedo exponer C# como un servicio web o lo que sea, pero tiene algunas cosas de seguridad/cifrado, por lo que prefiero mantenerlo estrechamente integrado si es posible.


Editar:Estará en una aplicación basada en servidor, por lo que "descargar" otro tiempo de ejecución es irrelevante.

¿Fue útil?

Solución

Hay un compilador de IL a Java Bytecode Saltamontes que te puede ser de utilidad.Aunque nunca lo he probado.

Sin embargo, consideraría reescribir tu código en Java.

EDITAR:Tenga en cuenta que parece que Grasshopper ya no está disponible.

Otros consejos

Utilizaría la interfaz nativa de Java para llamar a su código C# compilado en una DLL.

Si se trata de una pequeña cantidad de C#, sería mucho más fácil trasladarlo a Java.Si es mucho, esta podría ser una buena forma de hacerlo.

Aquí hay una descripción general de alto nivel:

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

Su otra opción sería crear un ensamblado COM a partir del código C# y usar J-Interop para invocarlo.

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

soy autor de jni4net, puente intraproceso de código abierto entre JVM y CLR.Está construido sobre JNI y PInvoke.No se necesita código C/C++.Espero que te ayude.

Si es breve, creo que será mejor que vuelvas a escribir el código en Java.Descargar un tiempo de ejecución de 50 MB ya es bastante malo.

Nosotros usamos JNBridge para esto, y funcionó muy bien.Maneja Java->.NET y viceversa, todo en proceso.

Si no quieres reescribirlo, hazlo como un Comunicación entre procesos y elige uno de los siguientes:

  • Tuberías con nombre
  • Enchufes
  • JABÓN

Lo reescribiría si no es mucha molestia.El servicio web funcionaría, pero parece que sería una gran sobrecarga solo para reutilizar un poco de código.

http://www.infoq.com/articles/in-process-java-net-integration sugiere ejecutar CLR y JVM en el mismo espacio de proceso y pasar llamadas de un lado a otro.Suena muy eficiente.Voy a intentarlo e integrarlo en jace si funciona bien.

Si se trata de un fragmento de código que se puede exponer como una utilidad de línea de comandos, simplemente hago que el otro lenguaje host use una llamada al sistema para ejecutar la utilidad.

Si su aplicación C# necesita llamar a Java, compile un archivo principal de Java especial que tome los argumentos de línea de comando apropiados y devuelva una salida de texto.

Es el método más antiguo y sencillo.

Puede llamar a sus clases de C# (compiladas en una DLL) a través de una biblioteca puente; hay varias bibliotecas disponibles, cada una con sus características. JNBridge Genere clases de proxy a las que pueda llamar para administrar el código en las clases de Java. JCOPuente le permite cargar sus clases de C# y usarlas desde Java usando el mecanismo de invocación, también javonet le permite importar clases de Java y llamar al código de Java utilizando el mecanismo de invocación.
Todas las soluciones exploradas son soluciones comerciales que le permiten llamar código Java desde .NET y viceversa con integración de interfaz gráfica de usuario y otras comodidades.

Enlaces:
jnbridge Esquema de licencia de implementación y desarrollador de puente java-.NET con prueba gratuita de 30 días
jcopuente Esquema de licencia de implementación y desarrollador de puente java-.NET con prueba ilimitada
javonet Esquema de licencia de investigación y profesional de puente java-.NET con prueba ilimitada de 30 días después del registro

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top