Nguồn gốc & lịch sử
Scala (viết tắt của Scalable Language) được tạo ra bởi Martin Odersky tại École Polytechnique Fédérale de Lausanne (EPFL, Thụy Sĩ).
Phiên bản đầu tiên ra mắt năm 2003.
Odersky cũng là người từng viết compiler đầu tiên của Java (javac), nên Scala được thiết kế để chạy trên JVM và tương thích hoàn toàn với Java.
Scala phát triển nhanh chóng nhờ cộng đồng học thuật và doanh nghiệp, vì nó mang tư tưởng kết hợp giữa OOP (Java-like) và FP (Haskell-like).
Các phiên bản chính
Phiên bản | Năm | Điểm nổi bật |
Scala 2.x | 2006–2020 | Giai đoạn phổ biến nhất, nhiều framework như Play, Akka ra đời |
Scala 3 (Dotty) | 2021–nay | Viết lại toàn bộ compiler, cú pháp tinh gọn, typing mạnh hơn, meta-programming, extension methods, union types, opaque types, v.v. |
Tư tưởng thiết kế
Scala được thiết kế để:
Mở rộng quy mô tư duy (Scalable) — phù hợp từ script nhỏ → hệ thống lớn.
Functional + Object-oriented: mỗi giá trị là object, mỗi function là object.
Statically typed nhưng có cú pháp gần gũi như dynamic language (nhờ type inference).
Tận dụng toàn bộ hệ sinh thái Java (JVM, libraries, tools, etc).
Triết lý cốt lõi
“Scala is designed to grow with you.”
Ban đầu bạn có thể viết Scala như Java, nhưng dần dần sẽ học functional patterns:Option
,Either
,Future
,map
,flatMap
,for comprehension
…
Tại sao dùng Scala mà không phải Java?
Tận dụng JVM — chạy nhanh, đa nền tảng, và dùng được thư viện Java.
Functional + OOP — có thể viết code ngắn gọn, ít lỗi, dễ test, dễ scale.
Concurrency và Reactive — hỗ trợ mạnh qua các thư viện như
Akka
,ZIO
,Cats Effect
.Type safety mạnh mẽ — ít lỗi runtime.
Phù hợp cho Big Data, Distributed Systems — nền tảng của Spark, Kafka, v.v.
Công ty nào dùng Scala?
Công ty | Ứng dụng Scala trong |
Backend services, chuyển từ Ruby sang Scala để tăng performance | |
Stream processing với Kafka + Samza | |
Airbnb | Data pipeline và machine learning |
Netflix | Recommendation system (Scala + Akka) |
Databricks | Được sáng lập bởi tác giả Apache Spark (viết bằng Scala) |
Snowflake, Uber, Coursera, The Guardian... | Backend & data processing |
Khi nào nên dùng Scala?
Bạn cần hệ thống lớn, concurrent, scalable (backend service, actor system, event stream).
Bạn làm Big Data / Data Pipeline / ETL → Spark là lựa chọn số 1.
Bạn cần hiệu năng JVM, nhưng code ngắn và an toàn hơn Java.
Bạn thích functional programming nhưng vẫn muốn OOP.
Bạn muốn viết domain-specific language (DSL) hoặc meta-programming.
Không nên dùng khi nào?
Dự án nhỏ, không yêu cầu JVM (có thể chọn Go, Node.js, Rust).
Team chưa quen FP — Scala có đường cong học tập cao.
Bạn cần tool ecosystem đơn giản hơn (Scala có thể nặng khi compile).