Первая программа на Scala
Play ITЗагрузка интерактивного демо…
Первая программа на Scala
Эта статья ведет от "пустого компьютера" до запуска рабочего Scala-проекта. Сначала вы ставите инструменты, потом создаете минимальный build.sbt, запускаете программу и проверяете среду через REPL.
Если хотите понять теорию до практики, сначала пройдите основы языка Scala, а затем вернитесь к шагам установки.
Где применяют Scala
Scala сочетает ООП и функциональное программирование на JVM — тот же runtime, что у Java. Сборка через sbt, код в src/main/scala, REPL для экспериментов.
Первая программа — println и объект App; дальше — Akka, Spark, Play Framework.
Маршрут чтения после этой статьи
После первого запуска удобно идти в таком порядке:
- Основы языка Scala — синтаксис, типы, коллекции.
- Типы и паттерн-матчинг — ADT,
Option,Either,match. - Функции и функциональные конструкции — композиция,
flatMap, эффекты. - Простые приложения на Scala — практические мини-проекты.
Установите JDK и sbt, создайте проект по шагам ниже, затем:
sbt run
sbt console
В REPL: println("Hello from REPL")
Подготовка окружения
Для работы с Scala требуется установка нескольких компонентов. Основной из них — Java Разработка Kit (JDK), поскольку Scala компилируется в байт-код JVM. Без JDK невозможно выполнить ни одну программу на Scala.
Установка JDK
- Откройте официальный сайт Adoptium или Oracle JDK.
- Выберите версию JDK 17 или новее. Scala хорошо совместима с современными LTS-версиями Java.
- Скачайте установочный файл, соответствующий вашей операционной системе: Windows, macOS или Linux.
- Запустите установку и следуйте инструкциям мастера.
- Проверка JDK:
java -version
Если команда возвращает информацию о версии Java, например:
openjdk version "17.0.12" 2024-07-16
OpenJDK Runtime Environment Temurin-17.0.12+7 (build 17.0.12+7)
OpenJDK 64-Bit Server VM Temurin-17.0.12+7 (build 17.0.12+7, mixed mode)
это означает, что JDK установлен корректно.
Установка Scala
Существует несколько способов установить Scala. Наиболее универсальный и рекомендуемый — через сборщик проектов, такой как sbt (Simple Build Tool). Он автоматически управляет зависимостями, версиями Scala и процессом компиляции.
Установка sbt
-
Windows:
Перейдите на страницу https://www.scala-sbt.org/download.html, скачайте MSI-установщик и запустите его. Установщик добавит sbt в системный PATH. -
macOS (Homebrew):
brew install sbt
- Linux (Debian/Ubuntu):
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add
sudo apt update
sudo apt install sbt
После установки проверьте версию sbt:
sbt --version
Если команда возвращает номер версии, например 1.9.7, значит, sbt установлен успешно.
Выбор интегрированной среды разработки (IDE)
Для написания программ на Scala подходит несколько современных IDE. Наиболее популярные — IntelliJ IDEA и Visual Studio Code с расширением Metals.
IntelliJ IDEA
IntelliJ IDEA от JetBrains предлагает отличную поддержку Scala через плагин Scala Plugin.
- Скачайте IntelliJ IDEA Community Edition с официального сайта.
- Установите программу, следуя стандартным шагам.
- При первом запуске перейдите в File → Settings → Plugins (на macOS: IntelliJ IDEA → Preferences → Plugins).
- Найдите плагин Scala и установите его.
- Перезапустите IDE.
Теперь IntelliJ IDEA готова к работе с проектами на Scala.
Visual Studio Code + Metals
Если вы предпочитаете легковесную среду, используйте VS Code с сервером языка Metals.
- Установите Visual Studio Code.
- Откройте расширения (Ctrl+Shift+X или Cmd+Shift+X).
- Найдите и установите расширение Scala (Metals).
- После установки Metals автоматически загрузит необходимые компоненты при открытии первого Scala-проекта.
Обе среды поддерживают автодополнение, навигацию по коду, рефакторинг и отладку.
Создание первого проекта
Проект на Scala лучше всего начинать с использования sbt, так как он обеспечивает стандартную структуру каталогов и управление зависимостями.
Шаг 1 — Создание директории проекта
В терминале:
mkdir hello-scala
cd hello-scala
Шаг 2 — Настройка структуры проекта
Создайте следующие подкаталоги:
mkdir -p src/main/scala
Эта структура соответствует соглашению sbt: исходный код размещается в src/main/scala.
Шаг 3 — Создание файла сборки
В корне проекта создайте файл build.sbt:
touch build.sbt
Откройте его в любом текстовом редакторе и добавьте следующее содержимое:
name := "HelloScala"
version := "0.1"
scalaVersion := "3.5.0"
Здесь:
name— имя проекта,version— версия,scalaVersion— версия языка Scala. Рекомендуется использовать последнюю стабильную версию Scala 3 (Dotty).
Шаг 4 — Написание первой программы
Создайте файл Main.scala внутри src/main/scala:
touch src/main/scala/Main.scala
Откройте его и введите следующий код:
@main def hello(): Unit =
println("Hello, World!")
Этот код определяет точку входа программы. В Scala 3 ключевое слово @main автоматически создаёт метод main, который вызывается при запуске. Функция hello не принимает аргументов и возвращает тип Unit, что эквивалентно void в других языках. Вызов println выводит строку в консоль.
Альтернативный синтаксис (совместимый с Scala 2 и 3):
object Main:
def main(args: Array[String]): Unit =
println("Hello, World!")
Третий вариант — extends App (удобен в учебных примерах и Scala 2; в продакшене чаще явный main или @main):
object Main extends App {
println("Hello, World!")
}
Все три варианта рабочие: @main — краткий стиль Scala 3; def main — классический JVM-вход; extends App — без явной сигнатуры main (удобно в учебных примерах).
Запуск программы
Из корня проекта (hello-scala):
sbt run
sbt автоматически:
- загрузит компилятор Scala нужной версии,
- скомпилирует исходный код,
- найдёт точку входа (
@mainилиobject Mainс методомmain), - запустит программу.
В терминале появится:
Hello, World!
Если в проекте несколько точек входа, sbt предложит выбрать одну из них по номеру.
REPL в контексте проекта
Из корня проекта:
sbt console
В REPL доступны зависимости и скомпилированные классы. Пример:
scala> println("Hello from REPL")
Hello from REPL
Частые проблемы
| Симптом | Что проверить |
|---|---|
java: command not found | Установлен JDK, JAVA_HOME указывает на него |
Долгий первый sbt run | Нормально: скачиваются Scala и зависимости |
| Metals/IDE не видит проект | Открыть корень с build.sbt, дождаться импорта sbt |
Дополнительные возможности
После успешного запуска можно экспериментировать с кодом. Например, измените сообщение:
@main def hello(): Unit =
println("Привет, Вселенная IT!")
Сохраните файл и снова запустите sbt run (см. блок выше). Изменения применятся автоматически.
Для более сложных проектов sbt поддерживает:
- управление внешними библиотеками через
libraryDependencies, - многомодульную структуру,
- тестирование с помощью фреймворков, таких как ScalaTest или MUnit.
Минимальный тест (добавьте в build.sbt строку libraryDependencies += "org.scalameta" %% "munit" % "1.0.0" и файл src/test/scala/HelloSuite.scala):
import munit.FunSuite
class HelloSuite extends FunSuite:
test("greeting is non-empty"):
val msg = "Hello, World!"
assert(msg.nonEmpty)
Запуск тестов:
sbt test
Частые ошибки
| Симптом | Причина |
|---|---|
sbt не найден | Не установлен или не в PATH |
| Ошибки отступов | В Scala 3 значимы пробелы в if/def |
| Медленный первый запуск | sbt качает зависимости — дождитесь success |
Что попробовать
- REPL:
sbt console→println("hi"). - Case class для "приветствия" вместо строки.
- JVM-веб: Play Framework (раздел Java/Scala).
Частые ошибки
| Симптом | Причина |
|---|---|
sbt не найден | Не установлен или не в PATH |
| Ошибки отступов | В Scala 3 значимы пробелы в if/def |
| Медленный первый запуск | sbt качает зависимости — дождитесь success |
Что попробовать
- REPL:
sbt console→println("hi"). - Case class для "приветствия" вместо строки.
- JVM-веб: Play Framework (раздел Java/Scala).
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Первые шаги (маршрут подборки) — Первая программа на Haskell, Первая программа на Elixir, Первая программа на Groovy, Первая программа на Zig, Первая программа на Smalltalk, Первая программа на Nim.