Неожиданно для себя решил немного повернуть в сторону функциональщины. В качестве экспериментального языка было принято решение взять Scala. Побаловавшись с примерами с курса от Twitter решил попробовать написать что-нибудь простое. Например, консольное приложение для поиска вопросов на StackOverflow. В качестве IDE использовал IntelliJ Idea 14 Community Edition с плагином для Scala (все устанавливается очень просто). Для сборки и запуска приложения использую SBT. Для этого потребуется создать конфигурационный файл build.sbt с описанием зависимостей и прочего. В моем случае он выглядит следующим образом:

name := "TwitterSearch"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies += "org.scalaj" %% "scalaj-http" % "1.1.5"

libraryDependencies += "org.json4s" %% "json4s-jackson" % "3.2.11"

О параметрах name, version и scalaVersion, думаю, говорить ничего не надо. Зависимости в SBT указываются в параметре libraryDependencies в формате указанном выше. Т.е. при сборке SBT подтянет из своих загашников библиотеки scalaj-http и json4s-jackson. scalaj-http используется для выполнения запросов по http, а json4s-jackson - для парсинга JSON. Для корректной работы SBT необходимо корректно подготовить структуру директорий. Она должна иметь следующий вид:

[project]
-src
--main
---scala
---java // опционально
--test // опционально

Весь код приложения находится в одном *.scala файле:

import scalaj.http._
import org.json4s._
import org.json4s.jackson.JsonMethods._
import org.json4s.JsonAST.JValue

object StackOverflowSearch {
  def main (args: Array[String]) {
    if (args.length == 0){
      println("Usage: stackoverflow <query>");
      return;
    }

    val query = args(0)
    val url = "https://api.stackexchange.com/2.2/search?order=desc&sort=activity&site=stackoverflow&intitle=" +
      java.net.URLEncoder.encode(query, "UTF-8")

    val response: HttpResponse[String] = Http(url).asString

    val result: List[String] = parse(response.body) \ "items" \ "title" \ classOf[JString]

    result.map(println)
  }
}

Для запуска приложения можно воспользоваться IDEA или SBT из консоли выполнив, находясь в папке проекта, команду

sbt

и далее

run "scala play"

. tmp