Algunos puntos a considerar:
- Scala es un gran idioma, pero vale la pena señalar que también es un lenguaje bastante difícil de aprender y usar correctamente. No solo mi opinión, incluso expertos experimentados en Scala lo dicen . Dependiendo del nivel de habilidades en su equipo, probablemente sea la herramienta más adecuada para sus desarrolladores más experimentados / expertos
- Java y C # son bastante similares en muchos aspectos: no pasará mucho tiempo para que los desarrolladores entrenados en uno se muevan (la sintaxis es similar, se trata principalmente de aprender las peculiaridades de cada uno y comprender las diferentes bibliotecas, que a menudo tienen una funcionalidad similar pero se empaquetan de manera diferente y / o tienen nombres diferentes). Personalmente cambié de Java a C # y volví a Java nuevamente sin ninguna dificultad.
- También vale la pena señalar que todos los lenguajes JVM (Java y Scala, pero también JRuby y Clojure, etc.) son muy compatibles: comparten la misma plataforma JVM fundamental y pueden compartir código / bibliotecas muy fácilmente.
Dado todo esto, es posible que desee cubrir sus apuestas y optar por una estrategia mixta Java / Scala , es decir, migrar a la plataforma JVM y centrarse inicialmente en Java, pero mantenga abierta la opción de usar Scala cuando sus desarrolladores estén cómodos y / o Se ajusta al problema en cuestión.
Desde una perspectiva de gestión, esto tiene muchas ventajas:
- Aún puede compartir todas las bibliotecas para que sus inversiones estén seguras
- Sus desarrolladores menos experimentados podrán transferir C # -> Java bastante rápido
- Sus desarrolladores más experimentados pueden aprovechar al máximo las funciones avanzadas de Scala
- Todas las herramientas son compatibles / se pueden compartir (sistemas de construcción, IDE, herramientas de implementación, etc.)
- Obtiene acceso gratuito al ecosistema de bibliotecas de código abierto muy amplio en la JVM (junto con la portabilidad multiplataforma, esta es posiblemente la mejor razón para estar en la plataforma JVM)
- Sus desarrolladores pueden usar el lenguaje que los hace más productivos dadas sus habilidades / la tarea en cuestión (Java en algunos casos, Scala en otros, tal vez otros lenguajes como Clojure en el futuro)
La desventaja es que todavía tiene dos idiomas principales para admitir. Pero probablemente ya tenga muchos más que solo dos (scripts de shell, formatos XML específicos del dominio, archivos de configuración, motores de reglas, HTML, Javascript), por lo que podría argumentar que en realidad no es tan importante.