Java ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํ Scala 2.12 ๊ธฐ๋ฐ ์ค๋ฌด ๊ฐ์ด๋๋ถ
์ด ํ๋ก์ ํธ๋ ๊ฒฝ๋ ฅ 3-5๋ ์ Java ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ 2๊ฐ์ ๋ด์ Scala๋ฅผ ์ค๋ฌด์ ์ ์ฉํ ์ ์๋๋ก ์ค๊ณ๋ ์ข ํฉ ํ์ต ๊ฐ์ด๋์ ๋๋ค.
- โ Java ๋น๊ต ํ์ต: ๋ชจ๋ ๊ฐ๋ ์ Java์ ๋น๊ตํ์ฌ ์ค๋ช
- โ ์ค์ ํ๋ก์ ํธ: Apache Spark ๊ธฐ๋ฐ 3๊ฐ ํ๋ก์ ํธ (๋ก๊ทธ ๋ถ์, ์คํธ๋ฆฌ๋ฐ, ML)
- โ 48๊ฐ ์ค์ต ๊ณผ์ : ๊ฐ ์ฑํฐ๋ณ ์ค์ต์ผ๋ก ํ์ต ๊ฐํ
- โ Scala 3 ๋๋น: ๋ชจ๋ ์ฑํฐ์ Scala 3 ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋ ํฌํจ
- โ 300-350ํ์ด์ง: ์ฒด๊ณ์ ์ด๊ณ ์์ฑ๋ ๋์ ์ฝํ ์ธ
- Scala 2.12 ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๋ฐ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ต๋
- Apache Spark๋ฅผ ํ์ฉํ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฅ๋ ฅ ๊ฐ๋ฐ
- ์ค๋ฌด ํ๋ก์ ํธ์ ์ฆ์ ์ ์ฉ ๊ฐ๋ฅํ ์ค์ ์ญ๋ ๋ฐฐ์
GitHub Pages๋ก ์น์ฌ์ดํธ ํํ๋ก ์ฝ๊ธฐ:
- ๋ฉ์ธ ํ์ด์ง ์ ์: https://kimbenji.github.io/scala-guide/
- ๋ชฉ์ฐจ์์ ์ํ๋ Part ์ ํ
- ์ฑํฐ๋ณ๋ก ์์ฐจ ํ์ต
๐ก Tip: ๋ธ๋ผ์ฐ์ ๋ถ๋งํฌ์ ์ถ๊ฐํ์ฌ ์ธ์ ๋ ์ง ์ ๊ทผํ์ธ์!
๋ฐฉ๋ฒ 1: GitHub์์ ์ง์ ์ฝ๊ธฐ
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/kimbenji/scala-guide.git
cd scala-guide
# VS Code ๋๋ ์๋ํฐ๋ก ์ด๊ธฐ
code docs/
๋ฐฉ๋ฒ 2: Jekyll ๋ก์ปฌ ์๋ฒ ์คํ
# Jekyll ์ค์น (Ruby ํ์)
gem install bundler jekyll
# docs ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd docs
# ์์กด์ฑ ์ค์น
bundle install
# ๋ก์ปฌ ์๋ฒ ์คํ
bundle exec jekyll serve
# ๋ธ๋ผ์ฐ์ ์์ http://localhost:4000 ์ ์
Markdown ๋ทฐ์ด ์ฑ ์ฌ์ฉ:
- macOS: Marked 2, MacDown, Typora
- Windows: Typora, MarkText
- Linux: ReText, Ghostwriter
- ๋ฉํฐํ๋ซํผ: Obsidian, Logseq
# docs ํด๋๋ฅผ Markdown ๋ทฐ์ด๋ก ์ด๊ธฐ
open docs/README.md # macOS
Write-Scala-Book/
โโโ README.md # ๐ ํ์ฌ ํ์ผ (ํ๋ก์ ํธ ์๊ฐ)
โ
โโโ docs/ # ๐ ํ์ต ๊ฐ์ด๋ ๋ฌธ์
โ โโโ README.md # ๋ฉ์ธ ๋ชฉ์ฐจ (์์์ )
โ โโโ NAVIGATION.md # ์ฑํฐ๋ณ ๋ค๋น๊ฒ์ด์
๊ฐ์ด๋
โ โโโ _config.yml # Jekyll ์ค์ (GitHub Pages์ฉ)
โ โ
โ โโโ prd.md # ํ๋ก์ ํธ ์๊ตฌ์ฌํญ ์ ์
โ โโโ architecture.md # ํ๋ก์ ํธ ์ํคํ
์ฒ
โ โโโ progress.md # ์์ฑ ์งํ ์ํฉ
โ โ
โ โโโ part1-basics/ # Part 1: Scala ๊ธฐ์ด (6 ์ฑํฐ)
โ โ โโโ README.md
โ โ โโโ chapter01-getting-started.md
โ โ โโโ chapter02-variables-types.md
โ โ โโโ chapter03-control-structures.md
โ โ โโโ chapter04-functions.md
โ โ โโโ chapter05-oop.md
โ โ โโโ chapter06-collections.md
โ โ
โ โโโ part2-functional/ # Part 2: ํจ์ํ ํ๋ก๊ทธ๋๋ฐ (4 ์ฑํฐ)
โ โ โโโ README.md
โ โ โโโ chapter07-advanced-functional.md
โ โ โโโ chapter08-option-try-either.md
โ โ โโโ chapter09-implicits.md
โ โ โโโ chapter10-advanced-types.md
โ โ
โ โโโ part3-advanced/ # Part 3: ๊ณ ๊ธ ์ฃผ์ (4 ์ฑํฐ)
โ โ โโโ README.md
โ โ โโโ chapter11-advanced-type-system.md
โ โ โโโ chapter12-concurrency-future.md
โ โ โโโ chapter13-macros-reflection.md
โ โ โโโ chapter14-dsl-design.md
โ โ
โ โโโ part4-spark/ # Part 4: Apache Spark (1 ์ฑํฐ + 3 ํ๋ก์ ํธ)
โ โ โโโ README.md
โ โ โโโ chapter15-apache-spark.md
โ โ
โ โโโ part5-ecosystem/ # Part 5: ์ํ๊ณ์ ๋๊ตฌ (1 ์ฑํฐ)
โ โโโ README.md
โ โโโ chapter16-ecosystem-tools.md
โ
โโโ code/ # ๐ป ์ค์ต ์ฝ๋ (ํฅํ ์ถ๊ฐ ์์ )
โโโ part1-basics/
์ ์ฒด ํ์ต ๊ธฐ๊ฐ: 7-9์ฃผ (์ฃผ๋น 10-15์๊ฐ ํฌ์ ๊ธฐ์ค)
Week | Part | ๋ด์ฉ | ์๊ฐ |
---|---|---|---|
1-2์ฃผ | Part 1 | Scala ๊ธฐ์ด | 20-30์๊ฐ |
3-4์ฃผ | Part 2 | ํจ์ํ ํ๋ก๊ทธ๋๋ฐ | 20-30์๊ฐ |
5์ฃผ | Part 3 | ๊ณ ๊ธ ์ฃผ์ (์ ํ) | 10-15์๊ฐ |
6-8์ฃผ | Part 4 | Apache Spark ํ๋ก์ ํธ | 30-40์๊ฐ |
9์ฃผ | Part 5 | ์ํ๊ณ์ ๋๊ตฌ | 10-15์๊ฐ |
Step 1: ๋ฌธ์ ๋ฉ์ธ ํ์ด์ง ์ด๊ธฐ
# ์จ๋ผ์ธ
https://kimbenji.github.io/scala-guide/
# ๋๋ ๋ก์ปฌ
open docs/README.md
Step 2: Part 1๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ต
- Part 1: Scala ๊ธฐ์ด๋ถํฐ ์์
- ๊ฐ ์ฑํฐ์ ์ค์ต ๊ณผ์ ๋ฐ๋์ ์๋ฃ
- ์ดํด ์ ๋๋ ๋ถ๋ถ์ ์ด์ ์ฑํฐ ๋ณต์ต
Step 3: ์ค์ ํ๋ก์ ํธ ์ค์ต
- Part 4์ Spark ํ๋ก์ ํธ์ ์ถฉ๋ถํ ์๊ฐ ํฌ์
- 3๊ฐ ํ๋ก์ ํธ ๋ชจ๋ ์ง์ ๊ตฌํ
Step 4: ์ค๋ฌด ์ ์ฉ
- Part 5์์ ์ค๋ฌด ๋๊ตฌ ์ต๋
- ์ค์ ํ๋ก์ ํธ์ Scala ์ ์ฉ
- ์์ฐจ ํ์ต: Part 1๋ถํฐ ์์๋๋ก (Part 3์ ์ ํ์ )
- ์ค์ต ์ค์ฌ: ์ฝ๋๋ฅผ ์ง์ ์์ฑํ๋ฉฐ ํ์ต
- Java ๋น๊ต: Java์ ๋น๊ตํ๋ฉฐ ์ฐจ์ด์ ์ดํด
- ์ปค๋ฎค๋ํฐ: ๋งํ๋ ๋ถ๋ถ์ Scala ์ปค๋ฎค๋ํฐ์ ์ง๋ฌธ
- Java: JDK 11 ์ด์ (๊ถ์ฅ: Java 11 LTS)
- SBT: 1.9.x ์ด์
- IDE: IntelliJ IDEA + Scala Plugin (๊ถ์ฅ)
- Git: ๋ฒ์ ๊ด๋ฆฌ
macOS:
# Homebrew๋ก ์ค์น
brew install openjdk@11
brew install sbt
Linux:
# Ubuntu/Debian
sudo apt-get install openjdk-11-jdk
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
sudo apt-get update
sudo apt-get install sbt
Windows:
- AdoptOpenJDK ๋ค์ด๋ก๋
- SBT ๋ค์ด๋ก๋
IDE ์ค์ :
- IntelliJ IDEA ์ค์น
- Scala Plugin ์ค์น (Preferences > Plugins > Scala)
- Import SBT Project
Part 1: Scala ๊ธฐ์ด (6 ์ฑํฐ)
Scala ๊ฐ๋ฐ ํ๊ฒฝ, ๊ธฐ๋ณธ ๋ฌธ๋ฒ, ํ์ ์์คํ , ์ ์ด ๊ตฌ์กฐ, ํจ์, OOP, ์ปฌ๋ ์
Part 2: ํจ์ํ ํ๋ก๊ทธ๋๋ฐ (4 ์ฑํฐ)
์์ ํจ์, ํจ์ ํฉ์ฑ, Option/Try/Either, Implicit, ๊ณ ๊ธ ํ์ ์์คํ
Part 3: ๊ณ ๊ธ ์ฃผ์ (4 ์ฑํฐ)
Higher-Kinded Types, Future/Promise, ๋งคํฌ๋ก, ๋ฆฌํ๋ ์ , DSL ์ค๊ณ
Part 4: Apache Spark (3 ํ๋ก์ ํธ)
- ํ๋ก์ ํธ 1: ๋ก๊ทธ ๋ถ์ ์์คํ
- ํ๋ก์ ํธ 2: ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ
- ํ๋ก์ ํธ 3: ๋จธ์ ๋ฌ๋ ํ์ดํ๋ผ์ธ
Part 5: ์ํ๊ณ์ ๋๊ตฌ (1 ์ฑํฐ)
SBT, ScalaTest, Scala-Java ์ํธ์ด์ฉ, ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ก๋์ ๋ฐฐํฌ
์ด ๊ฐ์ด๋๋ฅผ ์๋ฃํ๋ฉด ๋ค์์ ํ ์ ์์ต๋๋ค:
โ Scala๋ก ํ์ ์์ ํ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ โ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ค๋ฌด ์ ์ฉ โ Apache Spark๋ก ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ โ Scala-Java ํผํฉ ํ๋ก์ ํธ ๊ฐ๋ฐ โ SBT, ScalaTest ๋ฑ ์ค๋ฌด ๋๊ตฌ ํ์ฉ
์ด์๋ฅผ ๋ฑ๋กํ๊ฑฐ๋ Pull Request๋ฅผ ๋ณด๋ด์ฃผ์ธ์:
# 1. Fork this repository
# 2. Create your feature branch
git checkout -b feature/improvement
# 3. Commit your changes
git commit -m "Add some improvement"
# 4. Push to the branch
git push origin feature/improvement
# 5. Create Pull Request
- ์ด์ ๋ฑ๋ก: GitHub Issues
- ์ด๋ฉ์ผ: your-email@example.com
์ด ๋ฌธ์๋ ๊ต์ก ๋ชฉ์ ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
์์ฑ์: BMad Master Agent ๋ฒ์ : v1.0 ์ต์ข ์ ๋ฐ์ดํธ: 2025-10-03
๊ธฐ์ ์คํ:
- Scala 2.12.18
- Apache Spark 3.5.x
- SBT 1.9.x
- ScalaTest 3.2.x
ํ๋ก์ ํธ์ ๋ํ ์ง๋ฌธ์ด๋ ์ ์์ฌํญ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ์ฐ๋ฝ์ฃผ์ธ์!
- GitHub Issues: ์ด์ ๋ฑ๋ก
- Discussions: ํ ๋ก ์ฐธ์ฌ
๐ Happy Scala Learning! ๐