When I said Java interop, I meant two-way. With few exceptions (traits being the only I can think of) all Scala code can be used by Java. You can even use implicit parameters, though of course the Java compiler won&#x27;t resolve them for you. And almost all Java constructs can be created with Scala (Java enumerations being an exception). For example, using Scala you can define an abstract class that Java code can use.<p>You can&#x27;t do that in Clojure.<p>Real world examples: Play and Akka are two large projects that include Java development in their primary use cases.<p>Two-way interop is the cause for a huge number of less than ideal decisions: different Array equality than Seq, @specialized, universal equality, hash codes, and toString, abstract class vs trait, generic type erasure, etc.<p>You can call the compromise misguided (and you wouldn&#x27;t be the first to do so) but that&#x27;s why.