40,99 €
Professional Scala provides experienced programmers with fast track coverage aimed at supporting the use of Scala in professional production applications. Skipping over the basics and fundamentals of programming, the discussion launches directly into practical Scala topics with the most up-to-date coverage of the rapidly-expanding language and related tools. Scala bridges the gap between functional and object-oriented programming, and this book details that link with clear a discussion on both Java compatibility and the read-eval-print loop used in functional programming. You'll learn the details of tooling for build and static analysis. You'll cover unit testing with ScalaTest, documentation with Scaladoc, how to handle concurrency, and much more as you build the in-demand skill set required to use Scala in a real-world production environment. Java-compliant with functional programming properties, Scala's popularity is growing quickly--especially in the rapidly expanding areas of big data and cluster computing. This book explains everything professional programmers need to start using Scala and its main tools quickly and effectively. Master Scala syntax, the SBT interactive build tool, and the REPL workflow * Explore functional design patterns, concurrency, and testing * Work effectively with Maven, Scaladoc, Scala.js, and more * Dive into the advanced type system * Find out about Scala.js A working knowledge of Scala puts you in demand. As both the language and applications expand, so do the opportunities for experienced Scala programmers--and many positions are going unfilled. Twitter, Comcast, Netflix, and other major enterprises across industries are using Scala every day, in a number of different applications and capacities. Professional Scala helps you update your skills quickly to start advancing your career.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 330
Veröffentlichungsjahr: 2016
Title Page
Introduction
Who This Book Is For
What This Book Covers
How This Book Is Structured
What You Need to Use This Book
Conventions
Source Code
Errata
p2p.wrox.com
Chapter 1: Language Features
Static Types and Type Inference
Pattern Matching
Packages, Companion Objects, Package Objects, and Scoping
Summary
Chapter 2: Functional Programming
Immutability
Pure Functions
Recursion
Higher-Order Functions
Core Collection Methods
Currying and Partially Applied Functions
Null Handling (Option)
Strict versus Non-Strict Initialization
Summary
Chapter 3: Java Compatibility
Scala and Java Collections
Interfaces and Traits
Scala/Java Enumerations
Summary
Chapter 4: Simple Build Tool
Basic Usage
Advanced Usage
Release Management
Summary
Chapter 5: Maven
Getting Started with Maven and Scala
Introducing scala-maven-plugin
Adding Library Dependencies
Using the REPL
Getting Help
Running Tests
Joint Compilation with Java
Accelerating Compilation with Zinc
Summary
Chapter 6: Scala Style/Lint
Scala with Style
Scaliform
Scapegoat
WartRemover
Scoverage
Summary
Chapter 7: Testing
ScalaTest
Unit Tests
Integration Testing
Load Testing
Summary
Chapter 8: Documenting Your Code with Scaladoc
Why Document Your Code?
Scaladoc Structure
Invoking the Scaladoc Tool
Wiki Syntax
Tagging
Invoking scaladoc: Additional Options
Integrating Scaladoc Creation with Your Project
Publishing Scaladoc
Tables and CSS
Summary
Chapter 9: Type System
What Is a Type System?
Scala's Unified Type System
Polymorphism
Bounds
Other Niceties
Summary
Chapter 10: Advanced Functional Programming
Higher-Kinded Types
Functional Design Patterns
Summary
Chapter 11: Concurrency
Synchronize/Atomic Variables
Future Composition
Parallel Collections
Reactive Streams
STM
Actors (Akka)
Spark
Summary
Chapter 12: Scala.js
Scala.js and Its Design
Getting Started: Scala.js with SBT
Scala.js Peculiarities
Webjars and Dealing with the Frontend Ecosytem
Summary
End User License Agreement
i
ii
iii
iv
xv
xvi
xvii
xviii
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
205
206
207
208
209
210
211
212
213
Cover
Table of Contents
Begin Reading
Chapter 2: Functional Programming
Figure 2.1
Figure 2.2
Figure 2.3
Chapter 5: Maven
Figure 5.1
Chapter 8: Documenting Your Code with Scaladoc
Figure 8.1
Figure 8.2
Figure 8.3
Figure 8.4
Figure 8.5
Figure 8.6
Figure 8.7
Figure 8.8
Figure 8.9
Figure 8.10
Figure 8.11
Figure 8.12
Figure 8.13
Figure 8.14
Figure 8.15
Figure 8.16
Figure 8.17
Figure 8.18
Figure 8.19
Figure 8.20
Figure 8.21
Figure 8.22
Figure 8.23
Figure 8.24
Figure 8.25
Figure 8.26
Figure 8.27
Figure 8.28
Figure 8.29
Chapter 9: Type System
Figure 9.1
Chapter 10: Advanced Functional Programming
Figure 10.1
Chapter 11: Concurrency
Figure 11.1
Figure 11.2
Figure 11.3
Figure 11.4
Figure 11.5
Figure 11.6
Figure 11.7
Figure 11.8
Figure 11.9
Figure 11.10
Figure 11.11
Chapter 12: Scala.js
Figure 12.1
Chapter 3: Java Compatibility
Table 3.1 From Scala to Java
Table 3.2 From Java to Scala
Chapter 5: Maven
Table 5.1 Plugin Goals
Chapter 8: Documenting Your Code with Scaladoc
Table 8.1 Entities by Category
Table 8.2 Wiki Syntax and Effects
Table 8.3 Wiki Syntax for Block Types
Table 8.4 Wiki Syntax for Lists
Table 8.5 Link types
Table 8.6 Tags and Their Purposes
Table 8.7 Newly Introduced Tags and Their Purpose
Table 8.8 The Group Tags
Table 8.9 Advanced Tags
Table 8.10 scaladoc Command-Line Options
Table 8.11 Supported Tags in Scaladoc
Chapter 9: Type System
Table 9.1 Variance Types
Chapter 10: Advanced Functional Programming
Table 10.1 Kinds in Type Theory
Aliaksandr BedrytskiJanek BoguckiAlessandro LacavaMatthew de DetrichBenjamin Neil
