Dans un premier temps (c'est à dire la première phase de la migration), je dirais que vous ne voulez pas exporter une API (interface/méthode public, etc) avec un dur-à-utilisation-de-Java scala de construire.
Dans la pratique, je voudrais limiter l'exportation de tout ce qui est de la scala-spécifique (encore une fois, je parle de la première phase de la migration ici):
- scala bibliothèque de classes (types de fonction, collections etc)
- plus-kinded de type générique signatures
- implicites
Donc, ce n'est que de congé? Ainsi, la structure interne des classes (privé, méthodes, champs, etc) peuvent être convertis pour utiliser scala constructions et de la bibliothèque de classes.
Si vous avez des Api (surtout orientées client Api qui vous avez l'intention de migrer), je tiens à les concevoir à nouveau à partir du sol jusqu'à la Scala; d'abord, à l'aide d'un Java back-end. Alors je voudrais lentement ronger le code entre les deux.
Des points que vous avez soulignés, je suis d'accord que l'immuable paradigme de la Scala et de la mutable paradigme de Java ne se mélangent pas bien. Les autres points que j'ai trouvé moins problématique.
Un autre point principal de paradigme de non-concordance est la façon de convertir n'importe quel simultanées code (c'est à dire que ce qui rend l'utilisation de l' java.util.concurrent
). Cela peut, bien sûr, être convertie comme est mais la question est de savoir si pour remplacer la simultanéité modèle basé autour de verrouillage avec un basé autour d' acteurs ou de la STM. Dans les deux cas, c'est également susceptible d'être une refonte complète, par opposition à une conversion en soi.