2010-03-04 27 views
7

He estado aprendiendo Scala durante los últimos meses y ahora siento que puedo comenzar a utilizar el trabajo real además de resolver algunos problemas simples. Mi pregunta aquí es: ¿cómo funcionan estos dos juntos?¿Qué tan bien funcionan Java y Scala juntos?

Tengo un par de proyectos de Java en los que estoy trabajando ahora. ¿Qué tan fácil será comenzar a usar Scala en ellos? ¿Hay algún problema que tener en cuenta? ¿Hay algún tutorial o tipo de material disponible para hacerlo? Si quiero usar Scala en proyectos web, ¿cómo hacerlo (aparte de levantar)? Todas las ideas y sugerencias son bienvenidas.

Respuesta

14

En general, usar las bibliotecas de Java desde el código de Scala es más fácil que usar material de Scala desde Java. Eso tiende a suceder porque Scala tiene funciones avanzadas que son técnicamente accesibles en Java, pero implementadas por el compilador scala al generar todo tipo de clases extra con nombres destrozados.

Si su programa "principal" va a estar escrito en java por ahora, pero desea implementar algunas funcionalidades o módulos en scala, probablemente deba definir sus módulos en términos de interfaces Java. Luego, haga que su código scala implique esas interfaces.

Esperemos que pronto descubras que te gusta Scala tanto que cambias a scala siendo el idioma principal, llamando a tu antiguo código de Java.

+1

Estoy totalmente de acuerdo con estos sentimientos: así es como he combinado los dos también. (Es decir, Scala main o Java main interactuando con Scala mediante interfaces Java para evitar la necesidad de crear nombres en el código Java). –

+0

grrrr, "name mangling" es la palabra técnica que no se me ocurrió en ese momento Escribí esto, lo que resultó en mi uso del término "nombres divertidos". –

+0

La anotación '@ BeanProperty' puede ser tu amiga para hacer vals y vars más accesibles para el código java. Genera getFoo y setFoo estilo java que puedes usar desde código java (aunque el compilador scala no te permitirá acceder a esos nombres desde tu código scala). –

1

En general, no tengo la premisa de proyectos de idiomas mixtos, excepto en casos extremadamente especializados. Scala es capaz (como lenguaje) de expresar todo lo que Java puede y más. Entonces, ¿por qué molestarse en "introducir Scala en un proyecto Java"? ¿Por qué no simplemente escribir un proyecto pure-Scala?

Cuando digo pure Scala, estoy tomando como leído que es posible que desee hacer referencia a un archivo JAR que fue escrito en Java. Pero para la gran mayoría de los casos, veo sin necesidad de escribir código de Java en un proyecto de Scala.

+1

Si tiene una aplicación grande, puede que no sea práctico reescribir todo para que sea pura scala, especialmente en el mundo empresarial. Pero es posible que desee utilizar Scala para escribir nuevos módulos que se conectan a la aplicación. No me da la impresión de que alguien defienda escribir muchos códigos Java adicionales una vez que Scala entre en escena. –

+0

Este es un punto justo. Tengo que decir que he mantenido la mayoría de los sistemas * legacy * como Java puro, pero ninguno de los nuestros es gigantesco y la mayoría probablemente se reescribirá desde cero en un ciclo de 3-5 años –

+0

Behemoth es una gran palabra para esos tipos de sistemas, porque implica tanto enorme como aterrador :) –

Cuestiones relacionadas