Scala란?#

Scala는 함수형 프로그래밍객체지향 프로그래밍을 결합한 JVM 기반 언어입니다. “Scalable Language"의 약자로, 작은 스크립트부터 대규모 분산 시스템까지 확장 가능하게 설계되었습니다.

왜 Scala인가?

Java 개발자가 Scala로 전환할 때 얻는 이점을 표로 정리했습니다. Scala는 Java의 한계를 극복하면서도 기존 Java 생태계와의 완벽한 호환성을 유지합니다.

Java의 한계Scala의 해결책
장황한 코드간결하고 표현력 있는 문법
제한적인 타입 시스템강력한 타입 추론과 고급 타입 기능
함수형 프로그래밍 지원 부족일급 함수, 불변성, 패턴 매칭
Null 참조 문제Option 타입으로 안전한 null 처리

Scala는 Java와 100% 호환되면서도 더 안전하고 표현력 있는 코드를 작성할 수 있게 해줍니다.

언제 Scala를 써야 할까?

프로젝트 특성에 따라 Scala 도입 여부를 결정하세요.

적합한 경우:

  • 대규모 데이터 처리 (Apache Spark)
  • 분산 시스템 개발 (Akka, Akka HTTP)
  • 함수형 프로그래밍을 적용하고 싶을 때
  • 타입 안전성이 중요한 프로젝트
  • 동시성/병렬 처리가 필요한 시스템

과할 수 있는 경우:

  • 단순 CRUD 웹 애플리케이션
  • 팀이 Scala 경험이 없고 일정이 촉박할 때
  • Java 생태계만으로 충분한 경우

Scala 2 vs Scala 3

이 가이드는 Scala 2.13Scala 3 모두를 다룹니다. 두 버전의 핵심 개념은 같지만 문법과 일부 기능에서 차이가 있습니다.

구분Scala 2.13Scala 3
상태현재 가장 널리 사용최신 버전, 점차 확산 중
문법중괄호 기반들여쓰기 기반 옵션
implicitimplicit 키워드given/using으로 개선
열거형sealed trait + case objectenum 키워드
타입 시스템강력함Union, Intersection 등 추가

추천: 새 프로젝트라면 Scala 3를, 기존 프로젝트나 Spark 사용 시 Scala 2.13을 선택하세요.

이 가이드에서 다루는 것#

이 가이드는 기초부터 고급까지 단계별로 Scala를 학습할 수 있도록 구성되어 있습니다.

Quick Start 5분 만에 Scala를 설치하고 첫 번째 프로그램을 실행합니다.

개념 이해

Scala의 핵심 개념을 기초, 중급, 고급으로 분류하여 단계별로 학습합니다.

기초:

주제배우는 것
기본 문법변수, 상수, 기본 타입, 타입 추론
제어 구조if, for, while, match 표현식
함수와 메서드def, 람다, 기본값, 가변 인자
클래스와 객체class, object, trait, enum
케이스 클래스불변 데이터 모델링
패턴 매칭match 표현식의 강력한 활용

중급:

주제배우는 것
컬렉션List, Set, Map, Seq, Vector
고차 함수map, filter, fold, 커링
제네릭타입 매개변수, 타입 경계
For Comprehension모나딕 연산의 우아한 표현
Implicit/Given암시적 변환과 문맥적 추상화

고급:

주제배우는 것
타입 클래스Ad-hoc 다형성 패턴
공변성/반공변성제네릭 타입의 변성
고급 타입Union, Intersection, Match Types
매크로컴파일 타임 메타프로그래밍
동시성Future, Promise, ExecutionContext
함수형 패턴Functor, Monad, 참조 투명성

실습 예제

sbt 기반의 실행 가능한 예제 프로젝트입니다. 배운 개념을 실제 코드로 확인하세요.

How-To Guide

특정 문제를 해결하기 위한 단계별 가이드입니다:

부록

용어 사전, 버전 비교, FAQ 등 학습에 도움이 되는 참고 자료입니다.

바로 시작하기#

🚀 설치 없이 체험: Scastie에서 브라우저로 Scala를 바로 실행해볼 수 있습니다!

// Scastie에서 이 코드를 실행해보세요
@main def hello() =
  val name = "Scala"
  println(s"Hello, $name!")

선수 지식#

  • 필수: 프로그래밍 기초 (변수, 함수, 조건문, 반복문)
  • 도움됨: Java 경험, 객체지향 개념, 함수형 프로그래밍 기초

학습 경로 제안#

목표에 따라 권장하는 학습 경로입니다.

처음이라면:     Quick Start → 기본 문법 → 제어 구조 → 함수 → 클래스
데이터 처리:    컬렉션 → 고차 함수 → For Comprehension → 기본 예제
고급 활용:      타입 클래스 → 공변성 → 함수형 패턴 → 동시성
Scala 3 전환:   Implicit/Given → 버전 비교 → 고급 타입

흔한 오해#

Scala에 대한 몇 가지 흔한 오해를 바로잡습니다.

“Scala는 너무 어렵다” — 기초 문법은 Java보다 간결합니다. 고급 기능은 필요할 때 점진적으로 학습하면 됩니다.

“Scala는 죽어가는 언어다” — Apache Spark, Kafka, Akka 등 대규모 프로젝트에서 여전히 핵심적으로 사용됩니다. Scala 3는 활발히 발전 중입니다.

“함수형만 써야 한다” — Scala는 다중 패러다임 언어입니다. 객체지향과 함수형을 상황에 맞게 혼합하세요.