| 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. |
| The process of compiling source code into byte code is slow. |
The process of compiling source code into byte code is fast. |
| Scala support operator overloading. |
Java does not support operator overloading. |
| Scala supports lazy evaluation. |
Java does not support lazy evaluation. |
| Scala is not backward compatible. |
Java is backward compatible means the code written in the new version can also run in older version without any error. |
| Any method or function present is Scala are treated like they are variable. |
Java treats functions as an object. |
| In Scala, the code is written in compact form. |
In Java, the code is written in long form. |
| Scala variables are by default immutable type. |
Java variables are by default mutable type. |
| Scala treated everything as an instance of the class and it is more object oriented language as compare to Java. |
Java is less object oriented as compare to Scala due to presence of primitives and statics. |
| Scala does not contain static keyword. |
Java contains static keyword. |
| In Scala, all the operations on entities are done by using method calls. |
In Java, operators are treated differently and is not done with method call. |