Scala — один из самых привлекательных языков программирования прямо сейчас. Вокруг него много ажиотажа, и программисты во всем мире публично признают это как возможную следующую большую вещь в программировании. Вот почему Scala — это все о функциональном программировании в объектно-ориентированном контексте. Он пытается взять лучшее из обоих миров и объединить их в высокоэффективный, интеллектуальный и относительно легкий для понимания язык. Прямо сейчас это лидер в современном ренессансе функциональных языков программирования.
Я недавно закончил курс Scala Мартина Одерского, и мне было очень трудно понять, с чего начать. Вы знаете, это первый шаг, когда вы хотите начать кодирование, но вы не знаете, какие инструменты в вашем распоряжении, какую IDE использовать или какую платформу модульного тестирования выбрать. Этот урок будет о вас, новичке в Scala, о том, как подготовить среду разработки, чтобы вам было легче начать работу.
Кусочки головоломки
Вот части головоломки, о которых мы поговорим в этом уроке, не стесняйтесь пропустить те, которые вы уже знаете:
- Simple Build Tools (SBT) — это инструмент, который генерирует проекты, зависимости и т. Д. Для Scala
- NetBeans с плагинами Scala — как интегрировать Scala с NetBeans
- Hello World — мы создадим наш первый исходный файл Scala
- Scalatest — рекомендуемая среда модульного тестирования для Scala
Мы возьмем каждую тему в списке и обсудим ее на начальном уровне и, наконец, посмотрим, как все эти части работают вместе.
Требования к программному обеспечению
Прежде чем начать, убедитесь, что на вашем компьютере установлена последняя версия Java SDK. Поскольку Scala работает на виртуальной машине Java (JVM), требуется SDK. Остальные темы в нашем списке могут потребовать Java SDK, прямо или косвенно, так что это хорошо.
Вам не нужно устанавливать Scala. Мы поговорим об этом в следующей главе.
Простые инструменты сборки Scala (SBT)
Если вы разработчик PHP, то вы, вероятно, знакомы с Composer. Если вы гуру Ruby, вы знаете и любите Bundler. Если вы программируете на каком-то другом языке, я уверен, что для этого есть менеджер пакетов.
SBT аналогичен вышеперечисленным менеджерам пакетов, но, хотя Composer требует от вас предустановленной PHP точно так же, как Bundler нужен Ruby, Scala не требуется устанавливать в систему, прежде чем вы сможете использовать SBT. Фактически, конкретная версия Scala, которую вы хотите использовать для своего проекта, может быть просто указана как зависимость в SBT. Вы можете задаться вопросом, как это возможно. Как я упоминал ранее, Scala работает на JVM; по сути, это просто библиотека Java. Пакеты для Scala также могут быть простыми файлами .jar. Итак, SBT сам по себе является просто Java-программой. Вам нужна только Java, которая у вас, вероятно, уже есть.
Существует много разных способов установки SBT. По кросс-платформенным причинам между Linux, Mac и Windows, мой предпочтительный способ установки SBT — просто взять архив, поместить его в каталог, извлечь его в мой домашний каталог и добавить его путь в систему.
Независимый от платформы способ установки SBT
Загрузите последнюю стабильную версию SBT из официального репозитория . Ищите папку без «Бета» или «R» или «М» в конце. Это будет стабильная версия. На момент написания данного руководства последняя стабильная версия — 0.12.3 .
Архив содержит каталог sbt
внутри него. Просто извлеките это в ваше любимое место. Я предпочитаю, чтобы это было где-то в моем домашнем каталоге, например /home/csaba/Programming/Scala/sbt
Затем добавьте путь к вашему каталогу bin SBT, к вашей переменной PATH. В UNIX-подобных системах, если вы используете Bash, добавьте такую строку в файл ~/.bash_profile
или ~/.bashrc
:
1
2
|
PATH=$PATH:$HOME/Programming/Scala/sbt/bin
export PATH
|
Переменная $HOME
обычно указывает на ваш домашний каталог. Вы можете использовать его в своих файлах конфигурации. Пользователи Windows могут иметь другую переменную для этого. Не забудьте команду export
во второй строке, иначе ваша PATH
будет доступна только внутри файла конфигурации.
Теперь проверьте, что ваша установка SBT прошла успешно. Откройте консоль или инструмент командной строки и введите:
1
2
|
$ sbt —version
sbt launcher version 0.12.2
|
Знак $
— это приглашение Bash, остальное — команда, которую вы введете. Как видите, у меня установлена версия 0.12.2.
Другие способы установки SBT вы можете проверить в официальной документации по настройке .
Создание нового проекта
Создайте папку, в которой вы хотите разместить свой будущий код, откройте консоль, перейдите во вновь созданный каталог и просто запустите команду sbt
.
01
02
03
04
05
06
07
08
09
10
11
12
13
|
csaba@csaba ~/Personal/Programming/NetTuts/From Zero to Hello World in Scala/Sources $ sbt
[info] Loading global plugins from /home/csaba/.sbt/plugins
[info] Updating {file:/home/csaba/.sbt/plugins/}default-e430ed…
[info] Resolving org.scala-sbt#precompiled-2_10_0;0.12.2 …
[info] downloading http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/actions/0.12.2/jars/actions.jar …
[info] [SUCCESSFUL ] org.scala-sbt#actions;0.12.2!actions.jar (3648ms)
[…] Many more download here
[info] [SUCCESSFUL ] org.scala-tools.testing#test-interface;0.5!test-interface.jar (239ms)
[info] Done updating.
[info] Set current project to default-f502c6 (in build file:/home/csaba/Personal/Programming/NetTuts/From%20Zero%20to%20Hello%20World%20in%20Scala/Sources/)
>
|
Обратите внимание, что текущий проект был настроен на папку, в которой вы находитесь, и что ваша консоль изменилась. Теперь вы находитесь в консоли SBT. Вы можете покинуть эту консоль, нажав клавиши CTRL + d или CTRL + c или введя команду exit
.
В этой консоли вы можете сказать SBT делать много вещей. Просто дважды нажмите TAB и подтвердите с помощью y
чтобы увидеть полный список доступных команд.
Конфигурация на основе проекта
Использование общесистемных или общедоступных настроек для всех ваших проектов может оказаться не лучшим вариантом. Каждый проект индивидуален, ему нужны разные зависимости, имя и т. Д. Чтобы сообщить SBT о такой информации, мы должны создать файл с именем build.sbt
. Он должен быть помещен в корневую папку проекта, которую вы можете найти в последней строке предыдущего примера.
Язык, используемый в этих файлах, представляет собой DSL, напоминающий синтаксис Scala, но гораздо менее сложный. Для простоты вы обычно просто определяете некоторые значения, такие как имя и версия вашего проекта или зависимости, например, какие версии Scala или SBT использовать. Названия этих значений называются «ключами». Мы будем работать только с несколькими из них. Посетите страницу Keys.scala для получения полного списка ключей .
Для нашего проекта мы укажем только четыре ключа. Их имена делают их довольно очевидными:
1
2
3
4
5
6
7
|
name := «Hellow World»
version := «1.0»
scalaVersion := «2.10.1»
sbtVersion := «0.12.3»
|
Будьте очень осторожны с пустыми строками в файле конфигурации. Каждое определение значения ключа должно быть отделено пустой строкой. Теперь запустите sbt update
в каталоге вашего проекта.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
$ sbt update
[info] Loading global plugins from /home/csaba/.sbt/plugins
[info] Set current project to Hellow World (in build file:/home/csaba/Personal/Programming/NetTuts/From%20Zero%20to%20Hello%20World%20in%20Scala/Sources/)
[info] Updating {file:/home/csaba/Personal/Programming/NetTuts/From%20Zero%20to%20Hello%20World%20in%20Scala/Sources/}default-f502c6…
[info] Resolving org.scala-lang#scala-library;2.10.1 …
[info] Done updating.
[success] Total time: 1 s, completed May 13, 2013 8:17:54 PM
$ sbt
[info] Loading global plugins from /home/csaba/.sbt/plugins
[info] Set current project to Hellow World (in build file:/home/csaba/Personal/Programming/NetTuts/From%20Zero%20to%20Hello%20World%20in%20Scala/Sources/)
> sbt-version
[info] 0.12.3
> scala-version
[info] 2.10.1
> exit
|
Как видите, Scala 2.10.1 был автоматически выбран и загружен при необходимости. Мы также обновили SBT до 0.12.3 на лету. Наконец, вы заметите, что при загрузке он называет наш проект по имени: «Установить текущий проект в Hellow World».
Соглашения о структуре каталогов в SBT
Даже если вы можете просто поместить все свои исходные файлы в корневой каталог проекта, SBT рекомендует и использует, как правило, структуру каталогов, аналогичную Maven. Давайте обновим наши каталоги, чтобы они выглядели как дерево ниже. Вы должны создать только каталог src
и его дочерние элементы, остальные были сгенерированы, когда мы играли с командами SBT. Если это не так, не волнуйтесь, вас интересует только каталог src
.
01
02
03
04
05
06
07
08
09
10
11
|
├── project
│ └── target
│ └── config-classes
├── src
│ ├── main
│ │ ├── resources
│ │ └── scala
│ └── test
│ ├── resources
│ └── scala
└── target
|
Интеграция Scala, SBT и NetBeans
Теперь, когда мы изучили основы SBT, нам нужна IDE для написания нашего кода. Если вы предпочитаете использовать простые редакторы, такие как Sublime Text, вы можете сделать это и пропустить этот шаг.
NetBeans поддерживал Scala задолго до SBT. Существует плагин под названием «nbscala», который может создавать проекты Scala для NetBeans и использовать язык Scala, установленный в системе. В настоящий момент этот плагин переходит на SBT и в конечном итоге сможет создавать и управлять SBT-проектами.
В настоящее время SBT и NetBeans достаточно хорошо интегрируются. Единственное, что вы должны создать вручную во время написания этой статьи, это начальный проект SBT. После этого NetBeans может легко интегрироваться с ним.
Установка поддержки Scala в NetBeans
Давайте откроем NetBeans, перейдем в Инструменты / Плагины , выберите вкладку Доступные плагины и прокрутите вниз до буквы S. Проверьте все плагины, связанные с Scala, нажмите « Установить» и дайте ему установить плагины со всеми необходимыми зависимостями.
Если вам интересно, как написан этот плагин, вы можете проверить его Github-репозиторий .
Установка поддержки NetBeans в SBT
Да, вы правильно прочитали, SBT имеет свою собственную систему плагинов, которая может генерировать проекты NetBeans для вас. Вам просто нужно проверить git-репозиторий и опубликовать его локально. Перейдите в каталог, где вы хотите, чтобы ваш плагин был проверен и установлен, а затем выполните следующие команды:
1
2
3
|
Хорошо, мы почти закончили. У нас есть плагин, теперь нам нужно указать SBT использовать его. Вы можете сделать это для каждого проекта, если хотите, но я рекомендую добавить его в настройки SBT вашего пользователя: ~/.sbt/plugins/plugins.sbt
~
Относится к вашему домашнему каталогу, у вас уже должен быть каталог с именем .sbt
(обратите внимание на точку в качестве первого символа). Вы можете иметь или не иметь каталог plugins
, если нет, просто создайте его, а затем создайте файл plugins.sbt
. Теперь добавьте следующее:
1
|
addSbtPlugin(«org.netbeans.nbsbt» % «nbsbt-plugin» % «1.0.2»)
|
Вот и все, теперь ваш SBT может генерировать проекты NetBeans для вас, когда вы запускаете команду netbeans
в консоли SBT. Кроме того, в NetBeans вы можете просто открыть (не новый проект, а открыть) любой проект SBT, и он автоматически сгенерирует для вас материал NetBeans.
Затем все зависимости проекта будут обновлены, и команда netbeans
будет выполняться в консоли SBT внутри NetBeans.
Теперь вы можете видеть больше прокрутки текста на экране в зависимости от зависимостей, которые необходимо установить, и вы должны увидеть, что команда netbeans
была автоматически запущена для нас.
На левой панели, на вкладке браузера проекта , вы даже можете запустить основные команды SBT, просто щелкнув правой кнопкой мыши по проекту и запустив Reload
, Clean
, Compile
и так далее.
Привет Мир в Скале
Теперь это не учебник для изучения Scala. Мы напишем только очень простой код, классический Hello World. Итак, вы можете продолжить и расширить свой проект Scala, и в записи «Пакеты Scala» щелкните правой кнопкой мыши <пакет по умолчанию> и выберите « Создать» -> «Scala Object» . Дайте ему имя, что-то вроде «HelloWorld» подойдет. Затем внутри него введите следующий код:
1
2
3
4
|
object HelloWorld {
def main(args: Array[String]) =
println(«Hello World!»)
}
|
Если вы совершенно незнакомы со Scala, объект автоматически запустится и будет найден метод с именем main
. Определение метода — просто строка печати Hello World
.
Перейдите на консоль SBT для этого проекта — если вы закрыли его по ошибке, просто щелкните правой кнопкой мыши проект Scala на левой панели и выберите Open sbt console . Теперь введите run
в консоли, чтобы запустить программу.
Добавление тестов
Первым шагом является установка Scalatest, чтобы у нас была среда тестирования. Самый простой способ сделать это — отредактировать наш файл build.sbt
и добавить следующую строку; помните, что вы должны оставить пустую строку между каждой строкой.
1
|
libraryDependencies += «org.scalatest» %% «scalatest» % «1.9.1» % «test»
|
Теперь в консоли SBT вы можете выпустить обновление (необязательно) и запустить test
команду. У нас пока нет никаких тестов, поэтому команда не должна провалиться.
Создать наш первый тест будет довольно легко. Единственное, что вам нужно знать, это то, что он должен находиться в папке src/test/scala
. Или, если вы развернете тестовые пакеты Scala в средстве просмотра проекта и щелкните правой кнопкой мыши <пакет по умолчанию> , вы можете выбрать New -> Scala Class и создать пакет с именем «ExampleSuite» и добавить код ниже:
01
02
03
04
05
06
07
08
09
10
11
12
|
import org.scalatest.FunSuite
class ExampleSuite extends FunSuite {
test(«test 2 expected values are equal») {
assert(2 === 2)
}
test(«test 2 values are different and fail») {
assert(2 === 3)
}
}
|
Обратите внимание, что в NetBeans могут возникнуть некоторые проблемы с запуском ваших тестов, так как плагин Scala еще не завершен. Но не паникуйте, вы все равно можете запускать тесты с консоли SBT.
Тест просто импортирует Scalatest набор тестов FunSuite
(где «Fun» происходит из функционала) и запускает два теста. Как вы можете понять из кода, первый пройдет, а второй потерпит неудачу.
Если по какой-то причине SBT отказывается компилировать ваши тесты, просто закройте консоль в NetBeans, щелкните правой кнопкой мыши свой проект и выберите « Обновить проект sbt» . Это решит проблему, и ваши тесты будут работать как положено.
Последние мысли
Вот и вы! Вы только что завершили свои первые шаги в изучении Scala. Я надеюсь, что этот урок помог вам лучше понять, с чего начать. Если вместо использования Netbeans, который является моей предпочтительной IDE, вы также можете выполнить поиск в Google, чтобы найти довольно полную онлайн-документацию о том, как использовать SBT & Scala с Eclipse, если вы этого предпочитаете.
Спасибо за прочтение.