まぢかくは、Akkaといふものをよく聞く。。。
アクターモデルを使った並行・分散システムの開発につかうらしい。
困った点
■ ScalaはJava/C++より、開発スピードが速いので、書籍のコードが動かないことがある (*´Д`)
■ そもそもsbtがなんのことかわからない (*´Д`)
akka/HelloActorというディレクトリを作る。
$ mkdir akka
$ cd akka
$ mkdir HelloActor
$ cd HelloActor/
sbtというコマンドを打つと、projectやらtargetのディレクトリをいろいろ生成してくれる
$ sbt
[info] Updated file /home/flare/akka/HelloActor/project/build.properties: set sbt.version to 1.4.1
[info] welcome to sbt 1.4.1 (Private Build Java 1.8.0_265)
[info] loading project definition from /home/flare/akka/HelloActor/project
[info] set current project to helloactor (in build file:/home/flare/akka/HelloActor/)
[info] sbt server started at local:///root/.sbt/1.0/server/3d33f439f46d9c5a7961/sock
$ ls
project target
scalaとsbtのバージョンを調べる
$ scala -version
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL
$ sbt --version
sbt script version: 1.4.1
下記のbuild.sbtというファイルをつくる。私の環境の場合、"2.3.9"とかだと動かない。 (´Д`)
$ cat build.sbt
libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.5.23"
コードを書く。。。
1import akka.actor.Actor
2import akka.actor.{ActorSystem,Props}
3
4class HelloActor extends Actor{
5 def receive = {
6 case "Hello" => println("World")
7 }
8}
9
10object HelloActor {
11 def main(args: Array[String]): Unit = {
12 println("Hello World!")
13
14 val system = ActorSystem("system")
15 val actor = system.actorOf(Props[HelloActor])
16
17 actor ! "Hello"
18 }
19}
sbt runと入力して実行する。
$ ls
build.sbt HelloActor.scala project target
$ sbt run
[info] welcome to sbt 1.4.1 (Private Build Java 1.8.0_265)
[info] loading project definition from /home/flare/akka/HelloActor/project
[info] loading settings for project helloactor from build.sbt ...
[info] set current project to helloactor (in build file:/home/flare/akka/HelloActor/)
[info] compiling 1 Scala source to /home/flare/akka/HelloActor/target/scala-2.12/classes ...
[info] running HelloActor
Hello World!
World
(`ー´)b
これで書籍のサンプルコードを参照することができるのではないだろうか。