InfoWorld: Scala is emerging as a language for building Android applications. There seems to be a group of developers, particularly in the Boston area, using it for that. Does this surprise you at all?
Odersky: No, because like I said, it essentially can replace Java wherever it is. I've actually experienced that, I've known that. Scala just gives you more productivity, so whether you program for servers or for clients, more productivity is always welcome.
InfoWorld: How does Scala differ from other JVM languages, such as Groovy and JRuby?
Odersky: Groovy and JRuby are both dynamic languages or, more precisely, dynamically typed languages. Scala is a statically typed language, so it's in that sense in the same camp as Java, which is another statically typed language. That said, the types in Scala are, at the same time, more expressive and less cumbersome, so they're less cumbersome to write than in Java. Sometimes, Scala feels like a dynamic language, but it isn't really, because it really does have the static type system. And the static type system has advantages when it comes to performance. Scala programs run very fast, about as fast as Java programs. And it has advantages for tooling so that you can have essentially code completion in IDEs, you can have better refracturing and all these things.
InfoWorld: What's the next step for Scala? Any new versions coming out soon?
Odersky: We just released [version] 2.9.1, which was a bug fix release and a release that gave better performance. The interactive shell is starting up very, very fast now, much faster than before. The next major release, 2.10, will have a number of additions in particular on the side of reflection, so there will be Scala-specific reflection, and there will be a range of new libraries.
InfoWorld: What does "reflection" mean?
Odersky: Reflection means that you can, from a running program, introspect. You can find out what code you are running, what classes you have, what members these classes have. Essentially the whole structure of a program that is in the head of the programmer or that's known to the compiler is then opened at runtime. Reflection does exist for Java since Java 1.1. That gives you essentially the Java view of a Scala program when it runs, but we wanted to lift it up, the whole level, to Scala, so that Scala programs could see themselves as Scala programs, not just Java programs.
InfoWorld: Are you familiar with the Kotlin language from JetBrains? I believe they looked at Scala and wanted to go their own way. Do you have any perspective on Kotlin at all?
Odersky: Yes, I've looked at it. I think it has elements of both Scala and C# in a new language. It's not out yet, so to comment further I think we should all wait when it's out and we have something concrete to try.
Sign up for MIS Asia eNewsletters.