The Scala toolchain at a glance
Every program so far has been a single Main.scala run with scala run. A real Scala job is a project built with sbt (or Mill, or scala-cli for small tools), dozens of libraries from Maven Central, a test suite, and usually one of two worlds: data engineering (Spark, Kafka, Databricks, Airflow) or backend services (http4s, Pekko, ZIO, Play, with PostgreSQL). Because Scala runs on the JVM, every Java library is available too, which is how Scala code talks to AWS, JDBC and Redis. These labs show the smallest real version of each. Most need libraries or servers, so they are static snippets; where the idea runs on the standard library there is a verified example as well.
| Tool | Job | You meet it when |
|---|---|---|
| sbt (or Mill, scala-cli) | Compile, test, manage dependencies, package | Day one of any Scala job |
| MUnit / ScalaTest | Automated tests | Every pull request |
| Apache Spark | Distributed batch and streaming data processing | Most Scala data-engineering roles |
| Apache Kafka | Event streams between services | Streaming pipelines and event-driven backends |
| PostgreSQL (JDBC, Doobie, Skunk) | Store and query data | Any service that keeps data |
| Redis | Cache, rate limits, sessions | As soon as a read gets slow |
| AWS (S3, EMR, Glue) | Storage and managed compute for data jobs | Running Spark in the cloud |
| Docker + GitHub Actions | Package and ship; test every push | Deployment and CI |
