В Scala 2.8 это стало намного проще, и есть два способа его достижения. Один из них явно (хотя использует implicits):
import scala.collection.JavaConverters._
val myJavaIterable = someExpr()
val myScalaIterable = myJavaIterable.asScala
EDIT: Поскольку я написал это, сообщество Scala достигло широкого мнения о том, что JavaConverters является хорошим, а JavaConversions является плохим, из-за возможности для spooky-action-at-distance. Поэтому не используйте JavaConversions вообще!
И тот, который больше похож на неявный неявный::)
import scala.collection.JavaConversions._
val myJavaIterable = someExpr()
for (magicValue <- myJavaIterable) yield doStuffWith(magicValue)