Introduction to FP, Reactive, and Scala
In our first chapter, we will learn the basic concepts of Functional Programing (FP), reactive programming, and the Scala language. These concepts are listed as follows:
- • Setting up a Scala development environment with Eclipse Scala IDE.
- • Basic constructs of the language like var, val, for, if, switch, and operator overload.
- • The difference between FP and object-oriented programming.
- • Principles of pure FP: immutability, no side effects, state discipline, composition, and higher order functions.
- • Concepts of FP such as lambda, recursion, for comprehensions, partial functions, Monads, currying, and functions.
- • Pattern Matcher, recursion, reflection, package objects, and concurrency.
Let's get going!
FP is not new at all. The very first implementation of FP is Lisp and is dated from the 1950s. Currently, we are living in a post-functional programming era, where we have the strong math principles and ideas from the 50s mixed with the most modern and beautiful piece of engineering, also know as the Java Virtual Machine (JVM). Scala is a post-functional programming language built on top of the JVM. Being on top of the JVM gives us a lot of benefits such as the following:
Scala is a post-functional programming language built on top of the JVM. Being on top of the JVM gives us a lot of benefits such as the following:
• Reliability and performance: Java is used by 10 out of 10 top websites we have currently, like Netflix, Apple, Uber, Twitter, Yahoo, eBay, Yelp, LinkedIn,
Google, Amazon, and many others. JVM is the best solution at scale and is battle- tested by these web-scale companies.
- • Native JVM eco-system: Full access to all of the Java ecosystem including frameworks, libraries, servers, and tools.
- • Operations leverage: Your operation team can run Scala in the same way they run Java.
- • Legacy code leverage: Scala allows you to easily integrate Scala code with Java code. This feature is great because it enables Java legacy system integration inside the box.
- • Java interoperability: A code written in Scala can be accessed in Java.
Scala was created in 2001 at EPFL by Martin Odersky. Scala is a strong static-typed language, and was inspired by another functional language called Haskell. Scala addresses several criticisms of the Java language, and delivers a better developer experience through less code and more concise programs, without losing performance.
Scala and Java share the same infrastructure as the JVM, but in terms of design, Scala is a different language in comparison with Java. Java is an imperative object-oriented language and Scala is a post-functional, multiparadigm programing language. FP works with different principles than object-oriented programing (OOP). OOP got very popular and well established in enterprise thanks to languages like Java, C#, Ruby, and Python. However, languages like Scala, Clojure, F#, and Swift are gaining a huge momentum, and FP has grown a lot in the last 10 years. Most of the new languages are pure functional, postfunctional, or hybrid (like Java 8). In this book, you will see Scala code compared with Java code so you can see by yourself how Scala is way more compact, objective, and direct than Java and imperative OOP languages.