* Make the most of Scala by understanding its philosophy and harnessing the power of multicores
* Get acquainted with cutting-edge technologies in the field of concurrency, through practical, real-world applications
* Get this step-by-step guide packed with pragmatic examples
BOOK more » DESCRIPTION
Scala is a modern, multiparadigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way. Scala smoothly integrates the features of object-oriented and functional languages.
In this second edition, you will find updated coverage of the Scala 2.12 platform. The Scala 2.12 series targets Java 8 and requires it for execution. The book starts by introducing you to the foundations of concurrent programming on the JVM, outlining the basics of the Java Memory Model, and then shows some of the classic building blocks of concurrency, such as the atomic variables, thread pools, and concurrent data structures, along with the caveats of traditional concurrency.
The book then walks you through different high-level concurrency abstractions, each tailored toward a specific class of programming tasks, while touching on the latest advancements of async programming capabilities of Scala. It also covers some useful patterns and idioms to use with the techniques described. Finally, the book presents an overview of when to use which concurrency library and demonstrates how they all work together, and then presents new exciting approaches to building concurrent and distributed systems.
WHAT YOU WILL LEARN
* Get to grips with the fundamentals of concurrent programming on modern multiprocessor systems
* Build high-performance concurrent systems from simple, low-level concurrency primitives
* Express asynchrony in concurrent computations with futures and promises
* Seamlessly accelerate sequential programs by using data-parallel collections
* Design safe, scalable, and easy-to-comprehend in-memory transactional data models
* Transparently create distributed applications that scale across multiple machines
* Integrate different concurrency frameworks together in large applications
* Develop and implement scalable and easy-to-understand concurrent applications in Scala 2.12
ABOUT THE AUTHOR
Aleksandar Prokopec, who also authored the first edition of this book, is a concurrent and distributed programming researcher. He holds a PhD in computer science from the Ecole Polytechnique Federale de Lausanne, Switzerland. He has worked at Google and is currently a principal researcher at Oracle Labs.
As a member of the Scala team at EPFL, Aleksandar actively contributed to the Scala programming language, and he has worked on programming abstractions for concurrency, data-parallel programming support, and concurrent data structures for Scala. He created the Scala Parallel Collections framework, which is a library for high-level data-parallel programming in Scala, and participated in working groups for Scala concurrency libraries, such as Futures, Promises, and ScalaSTM. Aleksandar is the primary author of the reactor programming model for distributed computing.
TABLE OF CONTENTS
2. Concurrency on the JVM and the Java Memory Model
3. Traditional Building Blocks of Concurrency
4. Asynchronous Programming with Futures and Promises
5. Data-Parallel Collections
6. Concurrent Programming with Reactive Extensions
7. Software Transactional Memory
9. Concurrency in Practice
10. Reactors « less
* Craft a completely reactive functional application from front end to back end
* Step-by-step instructions, examples, and hands-on practices designed to help you learn the key secrets and intricacies of Scala app development
* Comprehensive coverage of all the most popular tools in the more » Scala ecosystem
Scala is known for incorporating both object-oriented and functional programming into a concise and extremely powerful package. However, creating an app in Scala can get a little tricky because of the complexity. This book will help you dive straight into app development by creating a real, reactive, and functional application. We will provide you with practical examples and instructions using a hands-on approach that will give you a firm grounding in reactive functional principles.
The book will take you through all the fundamentals of app development within Scala as you build an application piece by piece. We've made sure to incorporate everything you need from setting up to building reports and scaling architecture. This book also covers the most useful tools available in the Scala ecosystem, such as Slick, Play, and Akka, and a whole lot more. It will help you unlock the secrets of building your own up-to-date Scala application while maximizing performance and scalability.
WHAT YOU WILL LEARN
* Use Akka to create a chat service for your app
* Equip yourself with the techniques and tools to build reports and build database persistence with Scala and Slick
* Develop a customer-facing Rest API that makes use of Scala and Spray
* Make use of the Scala web development principles and scale up the architecture of your application
* Get familiar with the core principles and concepts of Functional Programming
* Use the Play framework to create models, controllers, and views
* Develop reactive backing frameworks by writing code with RxScala
* Discover what proper testing entails with Scala using behavior-driven development « less
Praise for the first edition:
"The well-written, comprehensive book…[is] aiming to become a de facto reference for the language and its features and capabilities. The pace is appropriate for beginners; programming concepts are introduced progressively through a range of examples and then used as tools more » for building applications in various domains, including sophisticated data structures and algorithms…Highly recommended. Students of all levels, faculty, and professionals/practitioners.
―D. Papamichail, University of Miami in CHOICE Magazine
Mark Lewis’ Introduction to the Art of Programming Using Scala was the first textbook to use Scala for introductory CS courses. Fully revised and expanded, the new edition of this popular text has been divided into two books. Introduction to Programming and Problem-Solving Using Scala is designed to be used in first semester college classrooms to teach students beginning programming with Scala. The book focuses on the key topics students need to know in an introductory course, while also highlighting the features that make Scala a great programming language to learn.
The book is filled with end-of-chapter projects and exercises, and the authors have also posted a number of different supplements on the book website. Video lectures for each chapter in the book are also available on YouTube. The videos show construction of code from the ground up and this type of "live coding" is invaluable for learning to program, as it allows students into the mind of a more experienced programmer, where they can see the thought processes associated with the development of the code.
About the Authors
Mark Lewis is a Professor at Trinity University. He teaches a number of different courses, spanning from first semester introductory courses to advanced seminars. His research interests included simulations and modeling, programming languages, and numerical modeling of rings around planets with nearby moons.
Lisa Lacher is an Assistant Professor at the University of Houston, Clear Lake with over 25 years of professional software development experience. She teaches a number of different courses spanning from first semester introductory courses to graduate level courses. Her research interests include Computer Science Education, Agile Software Development, Human Computer Interaction and Usability Engineering, as well as Measurement and Empirical Software Engineering. « less
A Comprehensive Step-by-Step Guide
Scala is an object-oriented programming language for the Java Virtual Machine. In addition to being object-oriented, Scala is also a functional language, and combines the best approaches to OO and functional programming.
In Italian, Scala means a stairway, or steps. Indeed, Scala lets you step up more » to a programming environment that incorporates some of the best recent thinking in programming language design while also letting you use all your existing Java code.
Artima is very pleased to publish a new edition of the best-selling book on Scala, written by the designer of the language, Martin Odersky. Co-authored by Lex Spoon and Bill Venners, this book takes a step-by-step tutorial approach to teaching you Scala. Starting with the fundamental elements of the language, Programming in Scala introduces functional programming from the practitioner's perspective, and describes advanced language features that can make you a better, more productive developer. « less
Key Features Get the first book to explore Scala performance techniques in depth! Real-world inspired use cases illustrate and support the techniques studied and the language features This book is written by Vincent Theron and Michael Diamant, software engineers with several years of experience in the more » high-frequency trading and programmatic advertising industries Book Description Scala is a statically and strongly typed language that blends functional and object-oriented paradigms. It has experienced growing popularity as an appealing and pragmatic choice to write production-ready software in the functional paradigm.
Scala and the functional programming paradigm enable you to solve problems with less code and lower maintenance costs than the alternatives. However, these gains can come at the cost of performance if you are not careful. Scala High Performance Programming arms you with the knowledge you need to create performant Scala applications.
Starting with the basics of understanding how to define performance, we explore Scala's language features and functional programming techniques while keeping a close eye on performance throughout all the topics. We introduce you as the newest software engineer at a fictitious financial trading company, named MV Trading. As you learn new techniques and approaches to reduce latency and improve throughput, you'll apply them to MV Trading’s business problems.
By the end of the book, you will be well prepared to write production-ready, performant Scala software using the functional paradigm to solve real-world problems. What you will learn Analyze the performance of JVM applications by developing JMH benchmarks and profiling with Flight Recorder Discover use cases and performance tradeoffs of Scala language features, and eager and lazy collections Explore event sourcing to improve performance while working with stream processing pipelines Dive into asynchronous programming « less
Beginning Scala, Second Edition takes a down-to-earth approach to teaching Scala that leads you through simple examples that can be combined to build complex, scalable systems and applications.
This book introduces you to the Scala programming language, its object-oriented and functional programming more » characteristics, and then guides you through Scala constructs and libraries that allow you to assemble small components into high-performance, scalable systems. You will learn why Scala is judiciously used for critical business applications by leading companies such as Twitter, LinkedIn, Foursquare, the Guardian, Morgan Stanley, Credit Suisse, UBS, and HSBC.
Scala is a multi-paradigm programming language that combines both functional and object-oriented features. Moreover, this highly scalable language lends itself well to building cloud-based/deliverable Software as a Service (SaaS) online applications. « less
Grok and perform effective functional programming in Scala
***** About This Book *****
* Understand functional programming patterns by comparing them with the traditional object-oriented design patterns
* Write robust, safer, and better code using the declarative programming paradigm
* An illustrative guide for programmers to create functional programming more » patterns with Scala
***** Who This Book Is For *****
If you have done Java programming before and have a basic knowledge of Scala and its syntax, then this book is an ideal choice to help you to understand the context, the traditional design pattern applicable, and the Scala way. Having previous knowledge of design patterns will help, though it is not strictly necessary.
***** What You Will Learn *****
* Get to know about functional programming and the value Scala's FP idioms bring to the table
* Solve day-to-day programming problems using functional programming idioms
* Cut down the boiler-plate and express patterns simply and elegantly using Scala's concise syntax
* Tame system complexity by reducing the moving parts
* Write easier to reason about concurrent code using the actor paradigm and the Akka library
* Apply recursive thinking and understand how to create solutions without mutation
* Reuse existing code to compose new behavior
* Combine the object-oriented and functional programming approaches for effective programming using Scala
***** In Detail *****
Scala is used to construct elegant class hierarchies for maximum code reuse and extensibility and to implement their behavior using higher-order functions. Its functional programming (FP) features are a boon to help you design “easy to reason about” systems to control the growing software complexities. Knowing how and where to apply the many Scala techniques is challenging. Looking at Scala best practices in the context of what you already know helps you grasp these concepts quickly, and helps you see where and why to use them.
This book begins with the rationale behind patterns to help you understand where and why each pattern is applied. You will discover what tail recursion brings to your table and will get an understanding of how to create solutions without mutations. We then explain the concept of memorization and infinite sequences for on-demand computation. Further, the book takes you through Scala's stackable traits and dependency injection, a popular technique to produce loosely-coupled software systems.
You will also explore how to currying favors to your code and how to simplify it by de-construction via pattern matching. We also show you how to do pipeline transformations using higher order functions such as the pipes and filters pattern. Then we guide you through the increasing importance of concurrent programming and the pitfalls of traditional code concurrency. Lastly, the book takes a paradigm shift to show you the different techniques that functional programming brings to your plate.
This book is an invaluable source to help you understand and perform functional programming and solve common programming problems using Scala's programming patterns.
***** Style and approach *****
This is a hands-on guide to Scala's game-changing features for programming.
It is filled with many code examples and figures that illustrate various Scala idioms and best practices. « less
Practical Functional Programming for the JVM
Why learn Scala? You don't need to be a data scientist or distributed computing expert to appreciate this object-oriented functional programming language. This practical book provides a comprehensive yet approachable introduction to the language, complete with syntax diagrams, examples, and exercises. more » You'll start with Scala's core types and syntax before diving into higher-order functions and immutable data structures.
Author Jason Swartz demonstrates why Scala's concise and expressive syntax make it an ideal language for Ruby or Python developers who want to improve their craft, while its type safety and performance ensures that it's stable and fast enough for any application. « less
Scalability = Functional Programming + Objects
Get up to speed on Scala, the JVM language that offers all the benefits of a modern object model, functional programming, and an advanced type system. Packed with code examples, this comprehensive book shows you how to be productive with the language and ecosystem right away, and explains why Scala is more » ideal for today's highly scalable, data-centric applications that support concurrency and distribution.
This second edition covers recent language features, with new chapters on pattern matching, comprehensions, and advanced functional programming. You'll also learn about Scala's command-line tools, third-party tools, libraries, and language - aware plugins for editors and IDEs. This book is ideal for beginning and advanced Scala developers alike. « less
Build reactive, scalable applications and integrate Java code with the power of Scala
Scala for Java Developers is a step-by-step guide full of easy-to-follow code taken from real-world examples explaining the migration and integration of Scala in a Java project.
With this book, you will first get comfortable with the Scala syntax and its Java-like ecosystem, and then dive into new more » ways of building reactive web apps using the Typesafe stack including the actor-based Akka framework, the Play web framework, and the emerging Slick framework for persistence. The book will then teach you how to review useful tools for unit, integration, and functional testing; demonstrate how integrating with external systems applies to the Scala world and what its benefits are. « less