Using Java libraries in Scala

frazman picture frazman · Mar 19, 2013 · Viewed 29.3k times · Source

I am new to Scala. I am only able to write basic code thus far, but I want to start using it more concretely, rather than just learning theory.

Let's say I have the following Java code in HelloWorld.java:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello, World");
    }

}

What would the code be to invoke it from Scala?

Answer

arkajit picture arkajit · Mar 19, 2013

In your example, you just have a main, not a function you would necessarily call from somewhere else. But let's said you did have a function like

package com.example.hello;

public class HelloWorld {
  public static void sayHello() {
    System.out.println("Hello, world!");
  }
}

(I also added a package for your example, for completeness). Then in your Scala code, you could do:

import com.example.hello._

object GreetWorld extends App {
  (0 until 10).foreach {
    HelloWorld.sayHello()
  }
}

to say hello using the Java function 10 times in Scala. The ._ in the import imports all members of the package, or alternatively you could just import com.example.hello.HelloWorld. You could even import the method itself with import com.example.hello.HelloWorld.sayHello so that you don't need to reference the HelloWorld object in your code.

Both languages compile into JVM bytecode, so calling Java code from Scala is very simple, although calling Scala from Java can be trickier if there are are implicit parameters involved.