Scala is a modern multi-paradigm programming language designed to express common programming patterns in a concise, elegant and secure typing ways. Easily integrates features of object-oriented and functional languages. The current implementation runs on the Java Virtual Machine and is compatible with existing Java applications. Scala's name comes from "scalable" and "language", indicating what the purpose of this language is.
Scala is Object-Oriented
Scala is a pure object-oriented language in the sense that everything is an object. Types and behaviors of objects are described by classes and symptoms (which can be translated as "specialty"). Classes can be extended through the flexible mechanisms of subclasses and compositions, which provide a clear replacement for many heritages.
Scala is functional
Scala is also a functional language in this sense that each function is a value. Scala provides a lightweight syntax to define anonymous tasks. Supports first-order operations, allows nested functions, and supports curry. Scala's case classes and the pattern recognition models used in many functional programming languages have built-in language for algebraic type. In addition, the notion of scale pattern recognition can naturally increase XML data processing with the help of a sequence pattern which will match on the right. In this context, it is useful to understand the sequence to prepare questions. These features make Scala ideal for the development of applications such as web services.
Scala is statistically typed
Scala has an expressive typing system that forces the statistical abstraction to be used in a consistent and secure manner. Specifically, the typing system supports:
- General Classes
- Variable Annotations
- Upper and lower typing limit
- As a member of internal class and abstract type items
- Overall type
- Clearly written self-references
- Polymorphic methods
The mechanism for the removal of local types ensures that the user does not have to write programs with unnecessary typing information. Combined, these features provide a powerful basis for the safe reuse of programming abstraction and the safe (in terms of the types of software) software.
Scala is extensible
In practice, for the development of specific applications for a domain, usually "specific domain languages" (DSL) is required. Scala provides a unique combination of language mechanisms that simplifies the creation of language as libraries:
- Any method can be used as an infix or postfix operator
- Generated automatically based on expected type (target type).
The combined use of both features facilitates the definition of new statements without expanding syntax and without the use of macros-like meta-programming features. Scala is designed to match the popular Java 2 Execution Environment (JRE). In particular, interaction with Java object-oriented language is very simple. Scala has a single compilation scheme (separate compilation, dynamic class loading) which allows Java and thousands of existing high-quality libraries to access. Support for .NET Framework (CLR) is also available.
Advantages of using Scala
Among the benefits offered by Scala is that the amount of code needed for the program is less than necessary with the Java language, and the fact that it is compatible with the Java Virtual Machine. The money required to bring Scala to the market comes from Greyak Partners, who already finances tech companies like Red Hat or Cloudera.
The company was created by the company's commercial launch company, Odyssey, which offers tools for developers, as well as maintenance, training and consulting services for companies.
More and more companies are betting on Scala, of which some examples have been highlighted on Twitter, or the website of the Guardian newspaper, who has made changes too. Martin Oddsky explained to the Cnet website that it is the idea that high-volume pages of data can be changed without problems from Java to Scala, without affecting their infrastructure, can be benefited from their JVM architecture.
Scala is a pure object-oriented language, where everything is an object and all operations are performed through a call through one method. But while Java has primitive types or exceptions like statistic, Scala has no such exceptions.
In object-oriented programming, there are two basic mechanisms for structure and heritage rejection. Scale provides excellent support for the design of fundamental abstract principles of object-oriented programming: Classification / Institution, Aggregation / Dismissal, Generalization / Specialization and Grouping / Personalization.
Features it has that are missing in Java
Modular composition of the mixture: This mechanism allows the structure of classes for the design of reusable components to avoid problems presented by many heritages, similar to Java interfaces and abstract classes. On the one hand many "contracts" can be defined (in the same way as the interface). On the other hand, there can be concrete implementation of methods.
Self-type: The mixture does not depend on any of the classes and / or attributes of those with whom it is interacting, although it may be necessary to use them in some occasions. This ability is known as Self-Type in Scala.
Types of Abstract: There are two main mechanisms of abstract language in programming languages: Parameters and Abstract members. Scala supports both styles of abstraction both for types and values alike.
Actors: For many people, the next revolution in how to write concurrent programming software is. Java and other languages support a concurrent model, suitable for many applications but suitable for others, depending on the situation and synchronization by mutual exclusion techniques. Other concurrency models have existed for many years and one of them is known as actor model which is based on the absence of important areas shared between threads or processes by states or states and solving problems of concurrent computing to use messaging between the components of the system.
Scala takes a completely different approach to the concert: The actor-based model an actor is a mathematical model of concurrent computing in which data, codes and their own control threads are explained, communicating asynchronously via irreversible message passing techniques. The basis of this model is based on architecture zero-sharing policies and light components.
Scala is a tremendous powerful language that inherits the best things from each of the most successful languages, which are known. Java is no exception, and shares many things with it. The difference we see is that, for each of the Java concepts, Scala enhances, refines and improves them. Being able to learn all the Scala features, we are equipped with more and better equipment while writing our programs.
While functional programming is not a feature of Java, experienced programmers may notice the lack of support for this model on many occasions.