What is Scala?
Scala stands for Scalable Language. It is a multi-paradigm programming language. It combines object-oriented and functional programming in one concise, high-level language.
Scala’s static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.
Why to Use Scala?
It is a dynamic and strongly statically typed language that provides a type interface for variables and functions that is better than a limited type interface in another language like C# and Java.
It also provides a compiler that uses type reference to a full extent.
Why scala focuses on immutablity?
It focuses on immutability because it simplifies program logic. If something is mutable, you have to retain an idea of what its state is throughout the flow of the method in the code. That can be difficult—tougher than creating something that never changes and then building some new thing from that. Immutable code is very important in software development.
It allows for effortless parallelism without affecting any thread-safety issues.
The last point is probably the most important. Writing mutable code with parallelism is hard and error-prone. Now, in the modern world, we write everything in parallel and possibly in distributed ways. Immutable functional programming is the only way we have, how to do this safely and easily.
Scala Features:-

- Type inference- Type inference is its feature to infer types of the variable without writing mentioning the type explicitly.
- Immutability-Each variable is immutable by default. Immutable means you can’t change the value but if you want mutable variable you can also create mutable variable which can be change.
- Lazy Evaluation- It evaluates an expression when it is required. This increases performance by reducing compile time of the code.
- Case Classes & Pattern Matching- case classes are just regular classes that are immutable by default and decompose through pattern matching. All the parameters listed in the case class are public and immutable by default by nature. Case classes are decomposed by pattern matching.So, we can able to write more logical code.
- String Interpolation– Scala’s string interpolation feature allows you to embed variables directly inside a string literal allowing the creation of strings through data.
- Singleton Object-There is no static key concept (variable and methods). It creates a singleton object to provide entry point for your program. Singleton object is declared by using object keyword and there is no need to create object to call methods inside singleton object.
Scala Data Types-

Scala vs Java-

First Program In Scala-

In the above code, we have created the object First_Program. It is a simple program that gives output as Welcome to my Blog on Scala.
Output-

Conclusion-
In this blog, we have learned about basic things related to scala features, various Data types, and differences between Scala and Java.
Refrence-
https://www.geeksforgeeks.org/scala-vs-java/