Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Samples of Scala and Java code where Scala code looks simpler/has fewer lines?

I need some code samples (and I also really curious about them) of Scala and Java code which show that Scala code is more simple and concise then code written in Java (of course both samples should solve the same problem).

If there is only Scala sample with comment like "this is abstract factory in Scala, in Java it will look much more cumbersome" then this is also acceptable.

Thanks!

I like most of all accepted and this answers

like image 945
Roman Avatar asked Jun 01 '10 19:06

Roman


People also ask

What is the difference between Scala and Java?

Scala is a mixture of both object oriented and functional programming. Java is a general purpose object oriented language. Scala is less readable due to nested code. Java is more readable.

Why Scala is faster than Java?

Both Scala and Java run on JVM. So their code must be compiled into bytecode before running on JVM. But Scala compiler supports an optimization technique called tail call recursion. The optimization makes the Scala code compile faster than Java code.

Is Scala similar to Java?

Similarities between Scala and Java 1) Both are JVM based language, Scala produces same byte code as Java and runs on Java Virtual Machine. Similar to Java compiler javac, Scala has a compiler scalac, which compiles Scala code into byte code.

Can Java and Scala work together?

Q. Can I use Scala and Java in the same project? Sure, you can. You can use most of the JVM based languages together in the same project.


1 Answers

Let's improve stacker's example and use Scala's case classes:

case class Person(firstName: String, lastName: String) 

The above Scala class contains all features of the below Java class, and some more - for example it supports pattern matching (which Java doesn't have). Scala 2.8 adds named and default arguments, which are used to generate a copy method for case classes, which gives the same ability as the with* methods of the following Java class.

public class Person implements Serializable {     private final String firstName;     private final String lastName;      public Person(String firstName, String lastName) {         this.firstName = firstName;         this.lastName = lastName;     }      public String getFirstName() {         return firstName;     }      public String getLastName() {         return lastName;     }      public Person withFirstName(String firstName) {         return new Person(firstName, lastName);     }      public Person withLastName(String lastName) {         return new Person(firstName, lastName);     }      public boolean equals(Object o) {         if (this == o) {             return true;         }         if (o == null || getClass() != o.getClass()) {             return false;         }         Person person = (Person) o;         if (firstName != null ? !firstName.equals(person.firstName) : person.firstName != null) {             return false;         }         if (lastName != null ? !lastName.equals(person.lastName) : person.lastName != null) {             return false;         }         return true;     }      public int hashCode() {         int result = firstName != null ? firstName.hashCode() : 0;         result = 31 * result + (lastName != null ? lastName.hashCode() : 0);         return result;     }      public String toString() {         return "Person(" + firstName + "," + lastName + ")";     } } 

Then, in usage we have (of course):

Person mr = new Person("Bob", "Dobbelina"); Person miss = new Person("Roberta", "MacSweeney"); Person mrs = miss.withLastName(mr.getLastName()); 

Against

val mr = Person("Bob", "Dobbelina") val miss = Person("Roberta", "MacSweeney") val mrs = miss copy (lastName = mr.lastName) 
like image 88
Esko Luontola Avatar answered Sep 29 '22 20:09

Esko Luontola