I've been considering Scala recently to move from Kotlin that seems to slow down in its evolution and future perspectives. But two points are still pain points for me 1) toxic community members 2) there is a NIH syndrome where there is pressure to rewrite everything in Scala when a Java lib exists (and I still don't know if it is because using Java libs is hard or just because of something else).
Using java libraries from scala is very easy. In my experience, there are two reasons why java libraries are either re-written, or more often, wrapped with a wrapper library:
- To make library usage more idiomatic in Scala. This usually means replacing nulls with Options, exceptions with Try, and mutable or java collection data structures with immutable or scala collection data structures.
- To provide idiomatic concurrency interfaces, such converting a synchronous libraries or internal threadpools to scala.util.concurrent.Future (or scalaz.concurrent.Task)