tags:

views:

605

answers:

4

I am a Java developer and I want to know how I can use Scala in my Java programs?

+8  A: 

Go read Daniel Spiewak's excellent blog series about Scala. With Scala you can keep:

  • all your Java libraries
  • all the advantages of running on a JVM (ubiquity, administrative tools, profiling, garbage collection etc)

But you can write Scala code:

  • more concise and clear than Java (especially the monad functionality such as collections)
  • it has closures and functions as part of the language
  • it has operator overloading (from the perspective of usage)
  • it has mixins (i.e. interfaces which contain implementation)
oxbow_lakes
A: 

http://www.google.fr/search?q=benefits+of+scala&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla%3Aen-US%3Aofficial&client=firefox-a

Sundar
I think everyone already knows Google...
lbp
In the same spirit (even it is not *exactly* what you did): http://meta.stackoverflow.com/questions/15650/ban-lmgtfy-let-me-google-that-for-you-links
VonC
@vanoosten and @VonCI am new to the community. Thank you for pointing out the mistake.
Sundar
+2  A: 

I am not sure you can easily use Scala in your Java programs, as in "call a Scala class from a Java class".

You can try, following the article "Mixing Java and Scala".
Relevant extracts:

The problem is that the Java and Scala compilation steps are separate: you can't compile both Java and Scala files in one go.
If none of your Java files reference any Scala classes you can first compile all your Java classes, then compile your Scala classes.
Or, if none of your Scala files reference any Java classes you can do it the other way around.
But if you want your Java classes to have access to your Scala classes and also have Scala classes have access to your Java classes, that's a problem.

Scala code can easily call directly into Java code, but sometimes calling Scala code from Java code is trickier, since the translation from Scala into bytecode is not quite as straightforward as for Java:
sometimes the Scala compiler adds characters to symbols or makes other changes that must be explicitly handled when calling from Java.
But a Scala class can implement a Java interface, and an instance of that class can be passed to a Java method expecting an instance of the interface.
The Java class then calls the interface methods on that instance exactly as if it were a Java class instance.

The opposite is possible, of course, as described in Roundup: Scala for Java Refugees, from Daniel Spiewak.

VonC
+4  A: 

Also, take a look at this recent news item post on Scala's site: "Research: Programming Style and Productivity".

In his paper, Gilles Dubochet, describes how he investigated two aspects of programming style using eye movement tracking. He found that it is, on average, 30% faster to comprehend algorithms that use for-comprehensions and maps, as in Scala, rather than those with the iterative while-loops of Java.

And another key quote from the news item:

Alex McGuire, who writes mission critical projects in Scala for power trading companies, says of Scala "The conciseness means I can see more of a program on one screen. You can get a much better overview. When I have some mathematical model to write with Java I have to keep two models in my head, the mathematical model itself and the second a model of how to implement it in Java. With Scala one model, the mathematical one, will do. Much more productive.”

You an read the rest of the post and other linked items there.

Steve Lianoglou