null

Scala: настройка и начало работы

Scala - объектно-функциональный язык программирования, в котором были во многом развиты и переосмыслены концепции Java.

Давайте разберемся, как настроить Scala в Ubuntu и Linux-like OS.

Для работы со Scala у вас должна быть установлена Java версии 1.5 или более поздней. Наберите java -version. Если в ответ вы увидите информацию о текущей версии Java, можно переходить к установке Scala.

Во-первых, необходимо загрузить дистрибутив Scala, который можно найти на сайте Scala. На момент написания статьи последняя версия языка - 2.9.2. Разархивируйте полученный дистрибутив. Теперь необходимо настроить Scala для дальнейшего использования.

Откройте ваш .profile (скорее всего он расположен в вашем домашнем каталоге) и определите переменную окружения SCALA_HOME, указывающую на дистрибутив Scala:

	export SCALA_HOME=$HOME/scala-2.9.2
Затем там же в .profile переопределите PATH, добавив в нее путь $SCALA_HOME/bin. В моем случае это выглядело следующим образом:
	export PATH=/usr/lib/jvm/java-6-sun/bin:$SCALA_HOME/bin:$PATH

Чтобы новые настройки вступили в силу, сохраните .profile и наберите в терминале sudo su - [ваш username], затем система попросит вас ввести пароль (при желании вместо su можете просто перезагрузить Ubuntu).

Теперь все необходимые изменения сделаны, пора сохранить .profile и можно перейти к написанию кода на Scala.

Сначала убедимся, что все настроено корректно. Наберите scala -version:

	vn@vn:~$ scala -version
Scala code runner version 2.9.2 -- Copyright 2002-2011, LAMP/EPFL

Если в ответ вы получили информацию о версии scala, значит все сделано правильно.

Для первого знакомства со Scala используем REPL. REPL = Read-Eval-Print-Loop - интерактивный Scala-интерпретатор. REPL читает выражения, которые вы ему передали, выполняет их, используя компилятор Scala, печатает для вас результат выполнения и ждет вашего следующего запроса.

REPL очень удобное средство, позволяющее на лету проверить правильность различных Scala-конструкций и выражений. Для использования REPL наберите в командной строке scala.

Теперь можно работать с REPL. Для примера, введите в терминале конструкцию вида var a = 5:

	var a = 5
a: Int = 5

В данном случае нами была создана переменная a типа Int и ей было присвоено значение 5. Здесь может возникнуть вопрос, почему при объявлении переменной мы не указали ее тип. На самом деле Scala является языком со статической типизацией, в данном случае используется механизм type inference (определение типа). Тип переменной a определяется на основании значения, которым мы её инициализируем. Вместо конструкции var a = 5 мы вполне бы могли написать var a: Int = 5. Java-разработчикам может показаться необычным синтаксис. В Java для определения целочисленной переменной необходимо указать конструкцию вида int a = 5, где int - тип, a - имя переменной. В Scala же дело обстоит несколько иначе - при объявлении переменной сначала необходимо указать, что мы создаем переменную - для этого используется ключевое слово var, затем мы указываем имя пременной, потом указывается тип (в данном случае тип можно не указывать, Scala сама его может определить), а после знака = указывам значение, которым инициализируем переменную.

После того как мы определили переменную a можно производить с ней различные действия, например:

	scala> a+5
res0: Int = 10
Для нас была создана неизменяемая переменная res0, которую мы также можем использовать в дальнейших вычислениях:
	scala> res0+a
res1: Int = 15
Поработав немного с REPL настала пора создать Hello world! на Scala. Для этого перейдем в режим вставки REPL. Данный режим позволяет удобно передавать интерпретатору код целыми блоками. Чтобы перейти в режим вставки наберите :paste
	scala> :paste
// Entering paste mode (ctrl-D to finish)

Теперь введите код для вывода сообщения Hello, world!

	object HelloWorld {
        def main(args: Array[String]) {
            println("Hello, world!")
	}
}

Нажмите ctrl-D. Давайте вызовем метод main:

	scala> HelloWorld.main(null)
Hello, world!

Что можно найти особенного в этом примере? Во первых, ключевое слово object - оно говорит о том, что мы создаем синглтон - во время выполнения будет создан один объект HelloWorld. Во-вторых, def - служит для определения метода main. Также может удивить отсутствие ;. В Scala, в отличие от Java, использование ; опционально - есть ситуации, когда ; необходима, однако в большинстве случаев ее можно не указывать.

Теперь выйдем из REPL (с помощью команды :quit) и скомпилируем программу привычным способом, вызвав команду scalac. scalac - компилирует один или несколько файлов с исходным Scala-кодом и генерирует Java bytecode, который может быть исполнен JVM.

Создайте файл HelloWorld.scala и сохраните в нем код для вывода Hello, world! (он указан выше). Наберите команду scalac HelloWorld.scala. После этого используйте команду scala, чтобы исполнить сгенерированный bytecode:

	vn@vn:~/test$ scala HelloWorld
Hello, world!

Наше приветствие выведено на экран. На этом статью о настройке Scala можно завершить. В скором времени читайте новые заметки о Scala на нашем сайте.

Если вам интересна Scala и вы хотите научиться программировать на этом языке, приходите на наши мастер-классы.