Introduction
Why Scala?
- Blend of Functional and object oriented language(provides Best of both)
- Use of immutable Data structures (value of variable intact so less bug prone)
- Rich Collection library
- Library is divided in mutable and immutable Data Structure.
- Collection which can be lazy or can be eager in its evaluation.
- Provides collection that can run in parallel that speed up processing.
- Better concurrency support
- Leverage multi-core machine capability without needing us to do more
- In Java we have to do a lot of low level task of handling the threads e.g
- Acquiring and releasing the lock (synchronised/static synchronised),this is simplified in Scala.
- concurrency is first class citizen in Scala
Scala frameworks are Play, Lift whereas Java frameworks are Spring, Grails, and many more.
| Parameter | Scala | Java |
|---|---|---|
| Compactness | More compact and concise | Comparatively larger chunks of code |
| Designed for | It is designed and developed to be both object and functional oriented language. It supports a wide variety of functional programming features such as concurrency and Immutability. | Originally developed as an object-oriented language and started supporting functional programming features in recent days. It is not as strong as a functional programming language. |
| Concurrency model | Uses actor model for supporting modern concurrency | It uses the conventional thread-based model for concurrency. |
| Supported frameworks | Supports frameworks – Play, Lift | Supports Spring, Grails, much more |
| Lazy evaluation support | Supports lazy evaluation | Does not support lazy evaluation |
| Static members | No static members | Contains static members |
| Operator overloading | Supports operator overloading | Does not support operator overloading |
| Compilation process | Compilation of source code is comparatively slow | Compilation of source code is faster than Scala |
| Interfaces | Traits – act like Java 8 interfaces | Java 8 interfaces try to bridge the gap between classes and interfaces |
| URL rewriting | Rewriting is needed | Rewriting is not required |
| Bug-free codes | No assurance about the bug-free codes | Complete assurance of lesser defects |
| Support for backward compatibility | Scala does not support backward compatibility | Java supports backward compatibility |
| Support for Multiple inheritances | Supports multiple inheritances using classes but not by abstract classes | Does not support multiple inheritances using classes, but by interfaces |
| Code style | Code is written in a compact form. | Code is written in long-form. |
| Static keyword | Scala does not contain the static keyword. | Java contains the static keyword. |
| Treats | Any method or function present in Scala is they are treated like they are variable. | Java treats functions as an object. |
| Type of variables | Scala variables are by default immutable type. | Java variables are by default mutable type. |
| Object orientation | Scala treats everything as an instance of the class and it is more object-oriented language as compare to Java. | Java does not support operator overloading. |
| Calling method | In Scala, all the operations on entities performed using method calls. | Operators are treated differently and is not done using the call method. |
| Readability | Scala is less readable because of its nested code. | Java is more readable. |
| Compiling process | Compiling the process of source code into byte code is very slow. | Compiling the process of source code into byte code is fast. |
Installation
- sudo apt-get install scala
- Verification
- scala -version
- IDE
- easy integration with intellij – install and
- add plugin scala
- easy integration with intellij – install and
Scala Versions
- Latest V3
- before this was version 2