2011-07-20 24 views
6

Java RMI-Invocación de método remoto- es sólo Java a Java.Java RMI con Scala, ¿es esto posible?

En el sitio web Scala leí que la integración con Java es transparente y que:

programas Scala se ejecutan en la máquina virtual de Java, son el código de bytes compatible con Java para que pueda hacer un uso completo de las bibliotecas existentes de Java o código de aplicación existente. Puede llamar a Scala desde Java y puede llamar a Java desde Scala, la integración es perfecta.

¿Esto significa que puedo usar con éxito una RMI de Java a Scala?

¿Alguien ensayo En este ejemplo de primera mano?

EDIT:

Cualquier trampas conocidas o descubiertas ??

Respuesta

5

Sí, aquí hay un link to a message thread where it looks like somebody's done it. Se dice:

Sí se puede! Gracias por la ayuda. Ahora tengo un pequeño par de programas Scala basados ​​en RMI que realizarán transferencias de documentos de un sistema de Documentum a otro (de una versión anterior); el código de Scala está interactuando muy bien con las bibliotecas de Documentum Java.

Encontrar la manera de obtener las firmas de los métodos para incluir throws RemoteException parece haber sido el mayor obstáculo.

0

Dependería de lo que la biblioteca RMI está utilizando, pero en general, la respuesta es "Sí". Aunque, tenga en cuenta que si escribe un método que devuelve (por ejemplo) una colección de Scala como scala.collections.immutable.List, entonces su código Java de llamada probablemente no podrá convertirlo a java.util.List.

+0

no estoy familiarizado con Scala en absoluto, ¿por qué le parece que habríamos de problemas de conversión entre los dos tipos de lista? – Gevorg

+0

Puede ver esta pregunta para obtener más información: http://stackoverflow.com/questions/2429944/how-to-convert-a-scala-list-to-a-java-util-list. Básicamente, 'scala.collections.immutable.List' es inmutable (no se puede cambiar) mientras que' java.util.List' generalmente no se espera que sea inmutable. –

1

Sí, esto se puede hacer. El compilador de rmi funciona con código de byte de Java, por lo que el lenguaje utilizado realmente no importa. He hecho esto para un proyecto de clase.

+0

gracias! no estoy familiarizado con Scala; ¿Hay algún problema relacionado con el uso de dos idiomas diferentes o cualquier otra cosa que deba tener en cuenta? ¿Qué pasa con los tipos de conversión de colecciones, por ejemplo? – Gevorg

+0

Hay métodos de conversión entre la lista scala y las listas java (y otras estructuras de datos) en la biblioteca scala, por lo que no es un problema. –

+0

'rmic' está en desuso desde Java 1.5, por lo que prácticamente por años. – Raphael