将 Java 迁移到 Scala
2022-09-01 13:01:28
在逐步将现有的Java代码库迁移到Scala时,需要注意的最重要点和解决方法是什么?具有(可能很长的)中间阶段,其中两种语言都在使用中。
我正在考虑的事情是:
- 不同的集合层次结构
- Scala无法很好地处理的Java结构
- 在Java中使用不切实际的Scala结构
- 构建工具
- 编译顺序
- 框架中的不可变性支持
- 等。
在逐步将现有的Java代码库迁移到Scala时,需要注意的最重要点和解决方法是什么?具有(可能很长的)中间阶段,其中两种语言都在使用中。
我正在考虑的事情是:
Scala不喜欢:
Java不喜欢:
最初(即迁移的第一阶段),我会说你不想导出一个API(接口/公共方法等),其中包含一个难以使用的Java scala结构。
在实践中,我会将其限制为导出任何特定于scala的内容(再次,我在这里谈论的是迁移的第一阶段):
那么这会留下什么呢?好吧,类(私有方法,字段等)的内部可以转换为使用scala构造和库类。
如果你有任何API(特别是你打算迁移的面向客户端的API),我会在Scala中从头开始设计它们;最初使用 Java 后端。然后我会慢慢地吃掉中间的代码。
在你强调的要点中,我同意Scala的不可变范式和Java的可变范式不能很好地混合在一起。我发现其他几点问题不大。
范式不匹配的另一个主要点是如何转换您拥有的任何并发代码(即使用 )。当然,这可以按原样转换,但问题是是否要将基于锁定的并发模型替换为基于参与者或STM的并发模型。在任何一种情况下,这也可能是完全的重新设计,而不是转换本身。java.util.concurrent