1
1
---
2
2
layout : inner-page-documentation
3
3
title : Documentation
4
- redirect_from :
5
- - /what-is-scala/
6
- includeTOC : true
4
+ # redirect_from:
5
+ # - /what-is-scala/
6
+ # includeTOC: true
7
7
8
8
# Content masthead links
9
9
links :
@@ -27,110 +27,23 @@ links:
27
27
description : " Books and online exercises"
28
28
icon : " fa fa-book"
29
29
link : /learn.html
30
+ - title : " Learning Resources"
31
+ description : " Books and online exercises"
32
+ icon : " fa fa-book"
33
+ link : /learn.html
34
+ - title : " Reference"
35
+ description : " Search the API, read the language spec, and the glossary"
36
+ icon : " fa fa-database"
37
+ link : /reference.html
38
+ - title : " Learning Resources"
39
+ description : " Books and online exercises"
40
+ icon : " fa fa-book"
41
+ link : /learn.html
42
+ - title : " Learning Resources"
43
+ description : " Books and online exercises"
44
+ icon : " fa fa-book"
45
+ link : /learn.html
30
46
31
- ---
32
-
33
- # What is Scala?
34
-
35
- ## A Scalable language
36
-
37
- Scala is an acronym for "Scalable Language". This means that
38
- Scala grows with you. You can play with it by typing one-line
39
- expressions and observing the results. But you can also rely on it
40
- for large mission critical systems, as many companies, including
41
- Twitter, LinkedIn, or Intel do.
42
-
43
- To some, Scala feels like a scripting language. Its syntax is concise
44
- and low ceremony; its types get out of the way because the compiler
45
- can infer them. There's a REPL and IDE worksheets for quick
46
- feedback. Developers like it so much that Scala won the ScriptBowl
47
- contest at the 2012 JavaOne conference.
48
-
49
- At the same time, Scala is the preferred workhorse language for many
50
- mission critical server systems. The generated code is on a par with
51
- Java's and its precise typing means that many problems are caught at
52
- compile-time rather than after deployment.
53
-
54
- At the root, the language's scalability is the result of a careful
55
- integration of object-oriented and functional language concepts.
56
-
57
- ## Object-Oriented
58
-
59
- Scala is a pure-bred object-oriented language. Conceptually, every
60
- value is an object and every operation is a method-call. The language
61
- supports advanced component architectures through classes and traits.
62
-
63
- Many traditional design patterns in other languages are already
64
- natively supported. For instance, singletons are supported through
65
- object definitions and visitors are supported through pattern
66
- matching. Using implicit classes, Scala even allows you to add new operations
67
- to existing classes, no matter whether they come from Scala or Java!
68
-
69
- ## Functional
70
-
71
- Even though its syntax is fairly conventional, Scala is also a
72
- full-blown functional language. It has everything you would expect,
73
- including first-class functions, a library with efficient immutable
74
- data structures, and a general preference of immutability
75
- over mutation.
76
-
77
- Unlike with many traditional functional languages, Scala allows a
78
- gradual, easy migration to a more functional style. You can start to
79
- use it as a "Java without semicolons". Over time, you can progress to
80
- gradually eliminate mutable state in your applications, phasing in
81
- safe functional composition patterns instead. As Scala programmers we
82
- believe that this progression is often a good idea. At the same time,
83
- Scala is not opinionated; you can use it with any style you prefer.
84
-
85
- ## Seamless Java Interop
86
-
87
- Scala runs on the JVM. Java and Scala classes can be freely mixed, no
88
- matter whether they reside in different projects or in the same. They can
89
- even mutually refer to each other, the Scala compiler contains a
90
- subset of a Java compiler to make sense of such recursive
91
- dependencies.
92
-
93
- Java libraries, frameworks and tools are all available. Build tools
94
- like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans,
95
- frameworks like Spring or Hibernate all work seamlessly with Scala.
96
- Scala runs on all common JVMs and also on Android.
97
-
98
- The Scala community is an important part of the Java
99
- ecosystem. Popular Scala frameworks, including Akka, Finagle, and the
100
- Play web framework include dual APIs for Java and Scala.
101
-
102
- ## Functions are Objects
103
-
104
- Scala's approach is to develop a small set of core constructs that can
105
- be combined in flexible ways. This applies also to its object-oriented
106
- and functional natures. Features from both sides are unified to a
107
- degree where Functional and Object-oriented can be seen as two sides
108
- of the same coin.
109
-
110
- Some examples: Functions in Scala are objects. The function type is
111
- just a regular class. The algebraic data types found in languages such
112
- as Haskell, F# or ML are modelled in Scala as class
113
- hierarchies. Pattern matching is possible over arbitrary classes.
114
-
115
- ## Future-Proof
116
-
117
- Scala particularly shines when it comes to scalable server software
118
- that makes use of concurrent and synchronous processing, parallel
119
- utilization of multiple cores, and distributed processing in the
120
- cloud.
121
-
122
- Its functional nature makes it easier to write safe and performant
123
- multi-threaded code. There's typically less reliance on mutable state
124
- and Scala's futures and actors provide powerful tools for organizing
125
- concurrent system at a high-level of abstraction.
126
-
127
- ## Fun
128
47
129
- Maybe most important is that programming in Scala tends to be very
130
- enjoyable. No boilerplate, rapid iteration, but at the same time the
131
- safety of a strong static type system. As [ Graham Tackley from the
132
- Guardian says] ( http://www.infoq.com/articles/guardian_scala ) : * "We've found that Scala has enabled us to deliver
133
- things faster with less code. It's reinvigorated the team."*
134
48
135
- If you haven't yet, try it out! [ Here are some resources to get
136
- started] ( ./documentation ) .
49
+ ---
0 commit comments