Skip to main content

Get Started Developing with Scala

Jason Swartz (Netflix, Inc), Kelsey Gilmore-Innis (Reverb)
Computational Thinking | Java & JVM
Portland 251
Tutorial Please note: to attend, your registration must include Tutorials.
Average rating: ****.
(4.25, 12 ratings)
Slides:   external link

THIS TUTORIAL HAS REQUIREMENTS AND INSTRUCTIONS LISTED BELOW

Disrupt your programming comfort zone by picking up Scala, a powerful functional language built on the JVM.

The Scala language combines the static typing and object-oriented modularity familiar to Java developers, the expressive and readable syntax that Ruby and Python developers love, and the first-class functions and immutable collections that are at the core of modern approaches to writing concurrent programs and handling big data. Created in 2003, Scala has reached a maturity level in features and tool support such that it is now considered an Enterprise-ready platform. A winner of the 2014 InfoWorld Technology of the Year award, Scala is used across a range of industries and companies such as LinkedIn, Twitter, Intel, Workday and Walmart.

In this tutorial you will get a hands-on introduction to the Scala language and functional programming concepts, and learn everything you will need to know to build your own REST API from scratch. While we will only have time to cover a small subset of the language comfortably, you will be able to get a clear picture of what it is like to develop in Scala and how this can benefit you as a developer. You will gain experience writing applications in idiomatic Scala and using higher-order functions to work with and manipulate data effectively.

We’ll cover the following topics in this tutorial. By the time you leave, you’ll have a functioning REST API and lots of leads on where to go next with Scala!

Language Fundamentals

  • Introduction to Scala & Functional Programming
  • Values, Variables, Types and Literals
  • Expressions and Conditionals
  • Common and Higher-Order Functions
  • Collections
  • Classes and Objects

Tool and Project Fundamentals

  • The Scala REPL
  • SBT, The Simple Build Tool
  • Scalatra, A Simple Rest API Framework

Building A REST API

  • Project Setup
  • The Base Framework
  • A Working REST API
  • For Further Exploration

TUTORIAL REQUIREMENTS AND INSTRUCTIONS FOR ATTENDEES

Recommended Experience:

* You should have basic familiarity with common data structures such as lists and maps, and iterating over them.
* You should feel comfortable working with a shell, ie a command-line interface, and be able to extract archive files, move files & directories and run basic commands.
* You should be familiar with Object-Oriented Programming and have experience developing applications with Java, Ruby or Python

Required Software:

You will need to bring a working laptop with at least 4 GB of RAM and the following software installed:
* JDK 7 or greater
* SBT (http://www.scala-sbt.org/download.html)

Before attending, please download and extract this SBT-based project:
* http://bks2.com/scala-tutorial.zip

If you have time, view the included README.md file and try running the given “sbt.sh” (OS X or Linux) or “runSbt.bat” (Windows) to verify that you can access the SBT shell.

Recommended Software:

We recommend Intellij IDEA 13 for Scala development along with their Scala plugin. You can download the Community Edition for free from the Intellij web site. The Scala plugin can be installed from Intellij’s Plugins preferences.

However, feel free to use Eclipse or a text editor if you are more comfortable with them. The actual compilation and server execution will be performed from the SBT shell so the choice of IDE / editor is up to you.

QUESTIONS for the speaker?: Use the “Leave a Comment or Question” section at the bottom to address them.

Photo of Jason Swartz

Jason Swartz

Netflix, Inc

Jason is a Software Engineer in the San Francisco Bay Area, developing applications and services in Scala at Netflix. Before making the switch to functional programming he managed the developer docs and support team at eBay, wrote advertising and merchandising platforms in Java and built tools and UI prototypes at Apple. His book, “Learning Scala”, will be published by O’Reilly Media in Spring 2014.

Photo of Kelsey Gilmore-Innis

Kelsey Gilmore-Innis

Reverb

Kelsey Gilmore-Innis is a back-end engineer at Reverb, where she uses Scala & functional programming to build powerful, scalable software systems. She strives to write code with charisma, uniqueness, nerve and talent and hopes to one day really, truly, deeply understand what a monad is.

Leave a Comment or Question

Help us make this conference the best it can be for you. Have questions you'd like this speaker to address? Suggestions for issues that deserve extra attention? Feedback that you'd like to share with the speaker and other attendees?

Join the conversation here (requires login)

Comments

Picture of Audra Montenegro
Audra Montenegro
07/21/2014 11:06am PDT

Hi Dev,

If you purchased the All Access Pass, you will be receiving the entire video compilation 4-6 weeks after the conference, in your oreilly.com account.

Hope this helps!

Buntu Dev
07/21/2014 10:40am PDT

Will the video of this session be available to those who couldn’t attend?

Picture of Jason Swartz
07/19/2014 11:03am PDT

Odd, I just downloaded it in about a minute using airport wifi. It’s on Amazon S3 which should be fast enough. But i’ll have it on a USB drive for you tomorrow at the session.

07/19/2014 10:24am PDT

Can the scala-tutorial.zip be hosted at a second location? I’m getting very slow download speeds.

Picture of Jason Swartz
04/26/2014 9:48pm PDT

Hi Rob, using Eclipse should be fine. You’ll have a better time if you pre-install the Scala plugin and get it all up and working before the session.

yep, monads are indeed a puzzlement!

We can handle that as well. How many monads do you need?

rob rucker
04/26/2014 3:20pm PDT

Hi, I am thinking of attending and am interested in Scala dev, all phases. I work with Eclipse, will that fit with your protocol? regards rob rucker mesa az usa. robr@fastq.com yep, monads are indeed a puzzlement! :-)